From aad180d6f383dccb08138061700a63242dae0dc6 Mon Sep 17 00:00:00 2001 From: Vladyslav Belyokhin Date: Mon, 6 Mar 2023 20:04:59 +0200 Subject: [PATCH 01/85] WIP: ledger-live boilerplate * Add currency * Add JS Bindings * Add 'getAddress' * TODO: Accounts, Send --- apps/ledger-live-desktop/release-notes.json | 11 +- libs/ledger-live-common/package.json | 1 + .../src/families/aptos/hw-getAddress.ts | 16 + .../src/families/aptos/types.ts | 34 + .../src/generated/hw-getAddress.ts | 2 + .../ledger-live-common/src/generated/types.ts | 8 + .../packages/cryptoassets/src/currencies.ts | 25 + libs/ledgerjs/packages/hw-app-aptos/app.ts | 59 + .../packages/hw-app-aptos/package.json | 28 + .../packages/hw-app-aptos/src/Aptos.ts | 180 ++ .../packages/hw-app-aptos/tsconfig.json | 7 + libs/ledgerjs/packages/hw-app-aptos/yarn.lock | 2299 +++++++++++++++++ .../packages/types-cryptoassets/src/index.ts | 3 +- pnpm-lock.yaml | 388 ++- 14 files changed, 3017 insertions(+), 44 deletions(-) create mode 100644 libs/ledger-live-common/src/families/aptos/hw-getAddress.ts create mode 100644 libs/ledger-live-common/src/families/aptos/types.ts create mode 100644 libs/ledgerjs/packages/hw-app-aptos/app.ts create mode 100644 libs/ledgerjs/packages/hw-app-aptos/package.json create mode 100644 libs/ledgerjs/packages/hw-app-aptos/src/Aptos.ts create mode 100644 libs/ledgerjs/packages/hw-app-aptos/tsconfig.json create mode 100644 libs/ledgerjs/packages/hw-app-aptos/yarn.lock diff --git a/apps/ledger-live-desktop/release-notes.json b/apps/ledger-live-desktop/release-notes.json index fe51488c7066..81ec7db0b92b 100644 --- a/apps/ledger-live-desktop/release-notes.json +++ b/apps/ledger-live-desktop/release-notes.json @@ -1 +1,10 @@ -[] +[ + { + "tag_name": "2.53.2", + "body": "\n### 🐛 Fixes\n\n- Some users reported a long sync time when adding an Ethereum account. We've fixed this.\n" + }, + { + "tag_name": "2.53.1", + "body": "\n### 🌷 Improvements\n\n- Following the latest TRON network update, we've raised the fee limit to 30 TRC to prevent failed transactions.\n\n### 🐛 Fixes\n\n- Accessing Ledger Live from market.ledger.com would cause the app to crash. We've fixed this.\n" + } +] \ No newline at end of file diff --git a/libs/ledger-live-common/package.json b/libs/ledger-live-common/package.json index ecf4997749df..e8df6aa7c882 100644 --- a/libs/ledger-live-common/package.json +++ b/libs/ledger-live-common/package.json @@ -172,6 +172,7 @@ "@zondax/ledger-filecoin": "^0.11.2", "algo-msgpack-with-bigint": "^2.1.1", "algosdk": "1.13.0", + "aptos": "1.3.16", "async": "^3.2.3", "axios": "0.26.1", "axios-retry": "^3.2.4", diff --git a/libs/ledger-live-common/src/families/aptos/hw-getAddress.ts b/libs/ledger-live-common/src/families/aptos/hw-getAddress.ts new file mode 100644 index 000000000000..e148730412fc --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/hw-getAddress.ts @@ -0,0 +1,16 @@ +import Aptos from "../../../../ledgerjs/packages/hw-app-aptos"; +import type { Resolver } from "../../hw/getAddress/types"; + +const resolver: Resolver = async (transport, { path, verify }) => { + const aptos = new Aptos(transport); + + const r = await aptos.getAddress(path, verify || false); + + return { + address: r.address, + publicKey: r.publicKey.toString(), // TODO: check by Vlad + path, + }; +}; + +export default resolver; diff --git a/libs/ledger-live-common/src/families/aptos/types.ts b/libs/ledger-live-common/src/families/aptos/types.ts new file mode 100644 index 000000000000..4970534f7e40 --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/types.ts @@ -0,0 +1,34 @@ +import { + TransactionCommon, + TransactionCommonRaw, + TransactionStatusCommon, + TransactionStatusCommonRaw, +} from "@ledgerhq/types-live"; +import { Types as AptosTypes } from "aptos"; + +export type AptosLikeTransaction = TransactionCommon & AptosTypes.Transaction; + +export type Transaction = AptosLikeTransaction & { + family: "aptos"; + // networkInfo: NetworkInfoRaw | null | undefined; +}; + +export type AptosLikeTransactionRaw = TransactionCommonRaw & { + family: string; + // mode: CosmosOperationMode; + // networkInfo: CosmosLikeNetworkInfoRaw | null | undefined; + // fees: string | null | undefined; + // gas: string | null | undefined; + // memo: string | null | undefined; + // validators: CosmosDelegationInfoRaw[]; + // sourceValidator: string | null | undefined; +}; + +export type TransactionRaw = AptosLikeTransactionRaw & { + family: "aptos"; + // networkInfo: NetworkInfoRaw | null | undefined; +}; + +export type TransactionStatus = TransactionStatusCommon; + +export type TransactionStatusRaw = TransactionStatusCommonRaw; diff --git a/libs/ledger-live-common/src/generated/hw-getAddress.ts b/libs/ledger-live-common/src/generated/hw-getAddress.ts index 58863d6d5d1e..493388979589 100644 --- a/libs/ledger-live-common/src/generated/hw-getAddress.ts +++ b/libs/ledger-live-common/src/generated/hw-getAddress.ts @@ -1,4 +1,5 @@ import algorand from "../families/algorand/hw-getAddress"; +import aptos from "../families/aptos/hw-getAddress"; import bitcoin from "../families/bitcoin/hw-getAddress"; import cardano from "../families/cardano/hw-getAddress"; import celo from "../families/celo/hw-getAddress"; @@ -20,6 +21,7 @@ import polkadot from "@ledgerhq/coin-polkadot/hw-getAddress"; export default { algorand, + aptos, bitcoin, cardano, celo, diff --git a/libs/ledger-live-common/src/generated/types.ts b/libs/ledger-live-common/src/generated/types.ts index 05010e818fa6..dd358b9e2c45 100644 --- a/libs/ledger-live-common/src/generated/types.ts +++ b/libs/ledger-live-common/src/generated/types.ts @@ -2,6 +2,10 @@ import { Transaction as algorandTransaction } from "../families/algorand/types"; import { TransactionRaw as algorandTransactionRaw } from "../families/algorand/types"; import { TransactionStatus as algorandTransactionStatus } from "../families/algorand/types"; import { TransactionStatusRaw as algorandTransactionStatusRaw } from "../families/algorand/types"; +import { Transaction as aptosTransaction } from "../families/aptos/types"; +import { TransactionRaw as aptosTransactionRaw } from "../families/aptos/types"; +import { TransactionStatus as aptosTransactionStatus } from "../families/aptos/types"; +import { TransactionStatusRaw as aptosTransactionStatusRaw } from "../families/aptos/types"; import { Transaction as bitcoinTransaction } from "../families/bitcoin/types"; import { TransactionRaw as bitcoinTransactionRaw } from "../families/bitcoin/types"; import { TransactionStatus as bitcoinTransactionStatus } from "../families/bitcoin/types"; @@ -77,6 +81,7 @@ import { TransactionStatusRaw as tronTransactionStatusRaw } from "../families/tr export type Transaction = | algorandTransaction + | aptosTransaction | bitcoinTransaction | cardanoTransaction | celoTransaction @@ -98,6 +103,7 @@ export type Transaction = export type TransactionRaw = | algorandTransactionRaw + | aptosTransactionRaw | bitcoinTransactionRaw | cardanoTransactionRaw | celoTransactionRaw @@ -119,6 +125,7 @@ export type TransactionRaw = export type TransactionStatus = | algorandTransactionStatus + | aptosTransactionStatus | bitcoinTransactionStatus | cardanoTransactionStatus | celoTransactionStatus @@ -140,6 +147,7 @@ export type TransactionStatus = export type TransactionStatusRaw = | algorandTransactionStatusRaw + | aptosTransactionStatusRaw | bitcoinTransactionStatusRaw | cardanoTransactionStatusRaw | celoTransactionStatusRaw diff --git a/libs/ledgerjs/packages/cryptoassets/src/currencies.ts b/libs/ledgerjs/packages/cryptoassets/src/currencies.ts index 2888f99939de..570483edfee3 100644 --- a/libs/ledgerjs/packages/cryptoassets/src/currencies.ts +++ b/libs/ledgerjs/packages/cryptoassets/src/currencies.ts @@ -85,6 +85,31 @@ const ethereumUnits = (name, code) => [ // to fix that we should always have the 'main' currency of the managerapp first in this list // e.g for Ethereum manager Ethereum is first in the list and other coin are in the bottom of the list export const cryptocurrenciesById: Record = { + aptos: { + type: "CryptoCurrency", + id: "aptos", + coinType: 637, // The slip-0044 coin type if registered + name: "Aptos", + managerAppName: "Aptos", // name of the embedded app in manager case-sensitive + ticker: "APT", + countervalueTicker: "APT", // depending on the counter value api + scheme: "aptos", + color: "#E6007A", // color to be display on live-desktop and mobile + family: "aptos", // folder name in the live-common / desktop and mobile + units: [ + { + name: "APT", + code: "APT", + magnitude: 8, + }, + ], + explorerViews: [ + { + address: "https://explorer.aptoslabs.com/account/$address", // url for exploring an address + tx: "https://explorer.aptoslabs.com/txn/$hash", // url for exploring a transaction + }, + ], + }, near: { type: "CryptoCurrency", id: "near", diff --git a/libs/ledgerjs/packages/hw-app-aptos/app.ts b/libs/ledgerjs/packages/hw-app-aptos/app.ts new file mode 100644 index 000000000000..13f80240229b --- /dev/null +++ b/libs/ledgerjs/packages/hw-app-aptos/app.ts @@ -0,0 +1,59 @@ +// import Transport from '@ledgerhq/hw-transport' +// import SpeculosTransport from '@ledgerhq/hw-transport-node-speculos-http' +// import TransportNodeHid from '@ledgerhq/hw-transport-node-hid' +// import Aptos from './src/Aptos' + +// function hexStringToBytes (hex: string) { +// const value: number[] = [] +// for (var i = 0; i < hex.length; i += 2) { +// value.push(parseInt(hex.substring(i, i + 2), 16)) +// } + +// return Buffer.from(value) +// } + +// async function exampleRaw (transport: Transport) { +// console.log('getVersion(raw)', await transport.send(0x5b, 0x03, 0x00, 0x00)) +// } + +// async function exampleAptos (transport: Transport) { +// const aptosClinet = new Aptos(transport) + +// console.log('getVersion', await aptosClinet.getVersion()) +// console.log('getAddress', await aptosClinet.getAddress("m/44'/637'/1'/0'/0'", true)) + +// const rawTx = 'b5e97db07fa0bd0e5598aa3643a9bc6f6693bddc1a9fec9e674a461eaa00b193783135e8b00430253a22ba041d860c373d7a1501ccf7ac2d1ad37a8ed2775aee000000000000000002000000000000000000000000000000000000000000000000000000000000000104636f696e087472616e73666572010700000000000000000000000000000000000000000000000000000000000000010a6170746f735f636f696e094170746f73436f696e000220094c6fc0d3b382a599c37e1aaa7618eff2c96a3586876082c4594c50c50d7dde082a00000000000000204e0000000000006400000000000000565c51630000000022' +// const tx = hexStringToBytes(rawTx) +// console.log('signTransaction', (await aptosClinet.signTransaction("m/44'/637'/1'/0'/0'", tx))) +// } + +// const args = process.argv.slice(2) +// const main = async (): Promise => { +// const mode = args[0] +// let transport: Transport +// switch (mode) { +// case 'hid': +// transport = await TransportNodeHid.open(null) +// break +// case 'headless': +// transport = await SpeculosTransport.open({ baseURL: 'http://localhost:5000' }) +// break +// default: +// console.error('Transport mode is not specified, available options: hid, headless') +// return +// } + +// try { +// await exampleRaw(transport) +// await exampleAptos(transport) +// } catch (err) { +// console.log(err) +// } finally { +// await transport.close() +// } +// } + +// main().catch(error => { +// console.error(error) +// process.exit(1) +// }) diff --git a/libs/ledgerjs/packages/hw-app-aptos/package.json b/libs/ledgerjs/packages/hw-app-aptos/package.json new file mode 100644 index 000000000000..7476f46ac5d9 --- /dev/null +++ b/libs/ledgerjs/packages/hw-app-aptos/package.json @@ -0,0 +1,28 @@ +{ + "name": "hw-app-aptos", + "version": "0.0.1", + "description": "Ledger Hardware Wallet Aptos Application API", + "main": "lib/Aptos.js", + "repository": "https://github.com/Aptos-Pontem-RnD/hw-app-aptos.git", + "author": "vldmkr ", + "license": "Apache-2.0", + "type": "module", + "scripts": { + "build": "yarn tsc --build --clean && tsc -m ES6", + "app": "yarn ts-node app.ts" + }, + "dependencies": { + "@ledgerhq/errors": "^6.10.2", + "@ledgerhq/hw-transport": "^6.27.4", + "@ledgerhq/hw-transport-node-hid": "^6.27.4", + "@noble/hashes": "^1.1.2", + "bip32-path": "^0.4.2" + }, + "devDependencies": { + "@ledgerhq/hw-transport-node-speculos-http": "^6.27.4", + "@types/node": "^18.7.20", + "ts-node": "^10.9.1", + "ts-standard": "^11.0.0", + "typescript": "^4.8.3" + } +} diff --git a/libs/ledgerjs/packages/hw-app-aptos/src/Aptos.ts b/libs/ledgerjs/packages/hw-app-aptos/src/Aptos.ts new file mode 100644 index 000000000000..a65952bedfe6 --- /dev/null +++ b/libs/ledgerjs/packages/hw-app-aptos/src/Aptos.ts @@ -0,0 +1,180 @@ +import BIPPath from "bip32-path"; +import { sha3_256 as sha3Hash } from "@noble/hashes/sha3"; +import Transport from "@ledgerhq/hw-transport"; +import { StatusCodes } from "@ledgerhq/errors"; + +const MAX_APDU_LEN = 255; +const P1_NON_CONFIRM = 0x00; +const P1_CONFIRM = 0x01; +const P1_START = 0x00; +const P2_MORE = 0x80; +const P2_LAST = 0x00; + +const LEDGER_CLA = 0x5b; +const INS = { + GET_VERSION: 0x03, + GET_PUBLIC_KEY: 0x05, + SIGN_TX: 0x06, +}; + +interface AppConfig { + version: string; +} + +interface AddressData { + publicKey: Buffer; + chainCode: Buffer; + address: string; +} + +export default class Aptos { + readonly transport: Transport; + + constructor(transport: Transport, scrambleKey = "aptos") { + this.transport = transport; + this.transport.decorateAppAPIMethods( + this, + ["getVersion", "getAddress"], + scrambleKey + ); + } + + async getVersion(): Promise { + const [major, minor, patch] = await this.sendToDevice( + INS.GET_VERSION, + P1_NON_CONFIRM, + P2_LAST, + Buffer.alloc(0) + ); + return { + version: `${major}.${minor}.${patch}`, + }; + } + + async getAddress(path: string, display = false): Promise { + const pathBuffer = this.pathToBuffer(path); + const responseBuffer = await this.sendToDevice( + INS.GET_PUBLIC_KEY, + display ? P1_CONFIRM : P1_NON_CONFIRM, + P2_LAST, + pathBuffer + ); + + let offset = 1; + const pubKeyLen = responseBuffer.subarray(0, offset)[0] - 1; + const pubKeyBuffer = responseBuffer.subarray( + ++offset, + (offset += pubKeyLen) + ); + const chainCodeLen = responseBuffer.subarray(offset, ++offset)[0]; + const chainCodeBuffer = responseBuffer.subarray( + offset, + offset + chainCodeLen + ); + + const address = + "0x" + this.publicKeyToAddress(pubKeyBuffer).toString("hex"); + + return { + publicKey: pubKeyBuffer, + chainCode: chainCodeBuffer, + address, + }; + } + + async signTransaction( + path: string, + txBuffer: Buffer + ): Promise<{ signature: Buffer }> { + const pathBuffer = this.pathToBuffer(path); + await this.sendToDevice(INS.SIGN_TX, P1_START, P2_MORE, pathBuffer); + const responseBuffer = await this.sendToDevice( + INS.SIGN_TX, + 1, + P2_LAST, + txBuffer + ); + + const signatureLen = responseBuffer[0]; + const signatureBuffer = responseBuffer.subarray(1, 1 + signatureLen); + return { signature: signatureBuffer }; + } + + // send chunked if payload size exceeds maximum for a call + private async sendToDevice( + instruction: number, + p1: number, + p2: number, + payload: Buffer + ): Promise { + const acceptStatusList = [StatusCodes.OK]; + let payloadOffset = 0; + + if (payload.length > MAX_APDU_LEN) { + while (payload.length - payloadOffset > MAX_APDU_LEN) { + const buf = payload.subarray( + payloadOffset, + (payloadOffset += MAX_APDU_LEN) + ); + const reply = await this.transport.send( + LEDGER_CLA, + instruction, + p1++, + P2_MORE, + buf, + acceptStatusList + ); + this.throwOnFailure(reply); + } + } + + const buf = payload.subarray(payloadOffset); + const reply = await this.transport.send( + LEDGER_CLA, + instruction, + p1, + p2, + buf, + acceptStatusList + ); + this.throwOnFailure(reply); + + return reply.subarray(0, reply.length - 2); + } + + private pathToBuffer(originalPath: string): Buffer { + const path = originalPath + .split("/") + .filter((value) => value !== "m") + .map((value) => + value.endsWith("'") || value.endsWith("h") ? value : value + "'" + ) + .join("/"); + const pathNums: number[] = BIPPath.fromString(path).toPathArray(); + return this.serializePath(pathNums); + } + + private serializePath(path: number[]): Buffer { + const buf = Buffer.alloc(1 + path.length * 4); + buf.writeUInt8(path.length, 0); + for (const [i, num] of path.entries()) { + buf.writeUInt32BE(num, 1 + i * 4); + } + return buf; + } + + private publicKeyToAddress(pubKey: Buffer): Buffer { + const hash = sha3Hash.create(); + hash.update(pubKey); + hash.update("\x00"); + return Buffer.from(hash.digest()); + } + + private throwOnFailure(reply: Buffer): void { + // transport makes sure reply has a valid length + const status = reply.readUInt16BE(reply.length - 2); + if (status !== StatusCodes.OK) { + throw new Error(`Failure with status code: 0x${status.toString(16)}`); + } + } +} diff --git a/libs/ledgerjs/packages/hw-app-aptos/tsconfig.json b/libs/ledgerjs/packages/hw-app-aptos/tsconfig.json new file mode 100644 index 000000000000..0cf4676deafc --- /dev/null +++ b/libs/ledgerjs/packages/hw-app-aptos/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "lib" + }, + "include": ["src/**/*"] +} diff --git a/libs/ledgerjs/packages/hw-app-aptos/yarn.lock b/libs/ledgerjs/packages/hw-app-aptos/yarn.lock new file mode 100644 index 000000000000..f68e95cd65ff --- /dev/null +++ b/libs/ledgerjs/packages/hw-app-aptos/yarn.lock @@ -0,0 +1,2299 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/helper-validator-identifier@^7.18.6": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/highlight@^7.10.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@ledgerhq/devices@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.0.tgz#8fe9f9e442e28b7a20bcdf4c2eed06ce7b8f76ae" + integrity sha512-gSnRT0KPca+LIpaC6D/WZQjOAlSI5uCvK1dmxXtKhODLAj735rX5Z3SnGnLUavRCHNbUi44FzgvloF5BKTkh7A== + dependencies: + "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/logs" "^6.10.1" + rxjs "6" + semver "^7.3.5" + +"@ledgerhq/errors@^6.10.2", "@ledgerhq/errors@^6.12.3": + version "6.12.3" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.3.tgz#a610caae1eeeb7cb038525e5212fe03217dda683" + integrity sha512-djiMSgB/7hnK3aLR/c5ZMMivxjcI7o2+y3VKcsZZpydPoVf9+FXqeJPRfOwmJ0JxbQ//LinUfWpIfHew8LkaVw== + +"@ledgerhq/hw-transport-node-hid-noevents@^6.27.12": + version "6.27.12" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.12.tgz#5dacbaf7e146018a73d18d16ce975925b5795732" + integrity sha512-f99lIcdEz78jHVfr57Vl9sgP/WpAuM3X26lLDSTKmNHDxLSx7IQaK/eJOcFG4XLk5K7dK/zoyXqq13zcLL2tPg== + dependencies: + "@ledgerhq/devices" "^8.0.0" + "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/hw-transport" "^6.28.1" + "@ledgerhq/logs" "^6.10.1" + node-hid "^2.1.2" + +"@ledgerhq/hw-transport-node-hid@^6.27.4": + version "6.27.12" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.12.tgz#8a628ea574c51bd727aa1d7b7a4ddaf9a5042df1" + integrity sha512-Y3GGgZK27K587P3671bCF4pbbfFYq6eVECnxoxtVwt0kdquRfpt3mxWlU51LIL+XgDEwBwt2QdB+6eyLHmWKQA== + dependencies: + "@ledgerhq/devices" "^8.0.0" + "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/hw-transport" "^6.28.1" + "@ledgerhq/hw-transport-node-hid-noevents" "^6.27.12" + "@ledgerhq/logs" "^6.10.1" + lodash "^4.17.21" + node-hid "^2.1.2" + usb "^1.7.0" + +"@ledgerhq/hw-transport-node-speculos-http@^6.27.4": + version "6.27.12" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-speculos-http/-/hw-transport-node-speculos-http-6.27.12.tgz#774ecae4ea5a88ca2c3e994c3cee0804cbb057d4" + integrity sha512-QMX2nEC2G5OI5f3VxkACJz950MKg6bfB8BGgbnqNN2pc7JAkDb85IsmkBTEEcKtR/fAMnJ3YylVNNFp1AkggIQ== + dependencies: + "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/hw-transport" "^6.28.1" + "@ledgerhq/logs" "^6.10.1" + axios "^0.26.1" + +"@ledgerhq/hw-transport@^6.27.4", "@ledgerhq/hw-transport@^6.28.1": + version "6.28.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.1.tgz#cb22fe9bc23af4682c30f2aac7fe6f7ab13ed65a" + integrity sha512-RaZe+abn0zBIz82cE9tp7Y7aZkHWWbEaE2yJpfxT8AhFz3fx+BU0kLYzuRN9fmA7vKueNJ1MTVUCY+Ex9/CHSQ== + dependencies: + "@ledgerhq/devices" "^8.0.0" + "@ledgerhq/errors" "^6.12.3" + events "^3.3.0" + +"@ledgerhq/logs@^6.10.1": + version "6.10.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.1.tgz#5bd16082261d7364eabb511c788f00937dac588d" + integrity sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w== + +"@noble/hashes@^1.1.2": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@types/json-schema@^7.0.7": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/node@^18.7.20": + version "18.14.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.4.tgz#0e64ec0b35a772e1e3d849f9a0ff61782d0cb647" + integrity sha512-VhCw7I7qO2X49+jaKcAUwi3rR+hbxT5VcYF493+Z5kMLI0DL568b7JI4IDJaxWFH0D/xwmGJNoXisyX+w7GH/g== + +"@typescript-eslint/eslint-plugin@^4.26.1": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" + integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== + dependencies: + "@typescript-eslint/experimental-utils" "4.33.0" + "@typescript-eslint/scope-manager" "4.33.0" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" + integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.0.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" + integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== + dependencies: + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" + integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== + +"@typescript-eslint/typescript-estree@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== + dependencies: + "@typescript-eslint/types" "4.33.0" + eslint-visitor-keys "^2.0.0" + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.4.1: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +axios@^0.26.1: + version "0.26.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" + integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== + dependencies: + follow-redirects "^1.14.8" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bip32-path@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/bip32-path/-/bip32-path-0.4.2.tgz#5db0416ad6822712f077836e2557b8697c0c7c99" + integrity sha512-ZBMCELjJfcNMkz5bDuJ1WrYvjlhEF5k6mQ8vUr4N7MbVRsXei7ZOg8VhhwMfNiW68NWmLkgkc6WvTickrLGprQ== + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +detect-libc@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" + integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.4" + is-array-buffer "^3.0.1" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-standard-jsx@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-10.0.0.tgz#dc24992661325a2e480e2c3091d669f19034e18d" + integrity sha512-hLeA2f5e06W1xyr/93/QJulN/rLbUVUmqTlexv9PRKHFwEC9ffJcH2LvJhMoEqYQBEYafedgGZXH2W8NUpt5lA== + +eslint-config-standard-with-typescript@^21.0.1: + version "21.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-21.0.1.tgz#f4c8bb883d8dfd634005239a54c3c222746e3c64" + integrity sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw== + dependencies: + "@typescript-eslint/parser" "^4.0.0" + eslint-config-standard "^16.0.0" + +eslint-config-standard@^16.0.0, eslint-config-standard@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" + integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== + +eslint-import-resolver-node@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== + dependencies: + debug "^3.2.7" + is-core-module "^2.11.0" + resolve "^1.22.1" + +eslint-module-utils@^2.7.4: + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== + dependencies: + debug "^3.2.7" + +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.23.4: + version "2.27.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" + has "^1.0.3" + is-core-module "^2.11.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-promise@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971" + integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== + +eslint-plugin-react@^7.24.0: + version "7.32.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.28.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + 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" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.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.merge "^4.6.2" + 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.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +follow-redirects@^1.14.8: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.6.0, globals@^13.9.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.0.3: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.15: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.3, internal-slot@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +is-array-buffer@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.11.0, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +load-json-file@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" + integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== + dependencies: + graceful-fs "^4.1.15" + parse-json "^4.0.0" + pify "^4.0.1" + strip-bom "^3.0.0" + type-fest "^0.3.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-abi@^3.3.0: + version "3.33.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.33.0.tgz#8b23a0cec84e1c5f5411836de6a9b84bccf26e7f" + integrity sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog== + dependencies: + semver "^7.3.5" + +node-addon-api@^3.0.2: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-addon-api@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" + integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== + +node-gyp-build@^4.3.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +node-hid@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-2.1.2.tgz#3145fa86ed4336a402a71e9f372c54213b88797c" + integrity sha512-qhCyQqrPpP93F/6Wc/xUR7L8mAJW0Z6R7HMQV8jCHHksAxNDe/4z4Un/H9CpLOT+5K39OPyt9tIQlavxWES3lg== + dependencies: + bindings "^1.5.0" + node-addon-api "^3.0.2" + prebuild-install "^7.1.1" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + 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@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pkg-conf@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae" + integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ== + dependencies: + find-up "^3.0.0" + load-json-file "^5.2.0" + +prebuild-install@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.1.tgz#f9f9b5f536920253b3d26e7660e7da4ccff9bb62" + integrity sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.10.1, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@6: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +semver@^6.1.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1, semver@^7.3.5: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +standard-engine@^14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-14.0.1.tgz#fe568e138c3d9768fc59ff81001f7049908a8156" + integrity sha512-7FEzDwmHDOGva7r9ifOzD3BGdTbA7ujJ50afLVdW/tK14zQEptJjbFuUfn50irqdHDcTbNh0DTIoMPynMCXb0Q== + dependencies: + get-stdin "^8.0.0" + minimist "^1.2.5" + pkg-conf "^3.1.0" + xdg-basedir "^4.0.0" + +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +table@^6.0.9: + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +ts-standard@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/ts-standard/-/ts-standard-11.0.0.tgz#2d9908869818f09601af9d57cc224c836d9eb31c" + integrity sha512-fe+PCOM6JTMIcG1Smr8BQJztUi3dc/SDJMqezxNAL8pe/0+h0shK0+fNPTuF1hMVMYO+O53Wtp9WQHqj0GJtMw== + dependencies: + "@typescript-eslint/eslint-plugin" "^4.26.1" + eslint "^7.28.0" + eslint-config-standard "^16.0.3" + eslint-config-standard-jsx "^10.0.0" + eslint-config-standard-with-typescript "^21.0.1" + eslint-plugin-import "^2.23.4" + eslint-plugin-node "^11.1.0" + eslint-plugin-promise "^5.1.0" + eslint-plugin-react "^7.24.0" + get-stdin "^8.0.0" + minimist "^1.2.5" + pkg-conf "^3.1.0" + standard-engine "^14.0.1" + +tsconfig-paths@^3.14.1: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typescript@^4.8.3: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +usb@^1.7.0: + version "1.9.2" + resolved "https://registry.yarnpkg.com/usb/-/usb-1.9.2.tgz#fb6b36f744ecc707a196c45a6ec72442cb6f2b73" + integrity sha512-dryNz030LWBPAf6gj8vyq0Iev3vPbCLHCT8dBw3gQRXRzVNsIdeuU+VjPp3ksmSPkeMAl1k+kQ14Ij0QHyeiAg== + dependencies: + node-addon-api "^4.2.0" + node-gyp-build "^4.3.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/libs/ledgerjs/packages/types-cryptoassets/src/index.ts b/libs/ledgerjs/packages/types-cryptoassets/src/index.ts index 2129f32a7d99..c137c512aa80 100644 --- a/libs/ledgerjs/packages/types-cryptoassets/src/index.ts +++ b/libs/ledgerjs/packages/types-cryptoassets/src/index.ts @@ -125,7 +125,8 @@ export type CryptoCurrencyId = | "flare" | "songbird" | "moonbeam" - | "near"; + | "near" + | "aptos"; /** * diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8fdbf21cc360..7f7da7fbe908 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1247,6 +1247,7 @@ importers: '@zondax/ledger-filecoin': ^0.11.2 algo-msgpack-with-bigint: ^2.1.1 algosdk: 1.13.0 + aptos: 1.3.16 async: ^3.2.3 axios: 0.26.1 axios-retry: ^3.2.4 @@ -1414,6 +1415,7 @@ importers: '@zondax/ledger-filecoin': 0.11.2 algo-msgpack-with-bigint: 2.1.1 algosdk: 1.13.0 + aptos: 1.3.16 async: 3.2.3 axios: 0.26.1 axios-retry: 3.2.5 @@ -1703,6 +1705,31 @@ importers: ts-node: 10.7.0_33lso24kgdvwdhve7eirdtgycu typescript: 4.6.4 + libs/ledgerjs/packages/hw-app-aptos: + specifiers: + '@ledgerhq/errors': ^6.10.2 + '@ledgerhq/hw-transport': ^6.27.4 + '@ledgerhq/hw-transport-node-hid': ^6.27.4 + '@ledgerhq/hw-transport-node-speculos-http': ^6.27.4 + '@noble/hashes': ^1.1.2 + '@types/node': ^18.7.20 + bip32-path: ^0.4.2 + ts-node: ^10.9.1 + ts-standard: ^11.0.0 + typescript: ^4.8.3 + dependencies: + '@ledgerhq/errors': link:../errors + '@ledgerhq/hw-transport': 6.28.1 + '@ledgerhq/hw-transport-node-hid': 6.27.12 + '@noble/hashes': 1.1.5 + bip32-path: 0.4.2 + devDependencies: + '@ledgerhq/hw-transport-node-speculos-http': 6.27.12 + '@types/node': 18.11.18 + ts-node: 10.9.1_bdgp3l2zgaopogaavxusmetvge + ts-standard: 11.0.0_typescript@4.9.5 + typescript: 4.9.5 + libs/ledgerjs/packages/hw-app-btc: specifiers: '@ledgerhq/hw-transport': workspace:^ @@ -13346,14 +13373,13 @@ packages: semver: 7.3.8 dev: false - /@ledgerhq/devices/7.0.5: - resolution: {integrity: sha512-2o2zD2Yv1Hgd3+R2aLCvlyT7NxBz2nltawTCPSXaf3+8MDIyZbiJlXi43hLEISRFBG3u3bYwAQuiOisimN9C6Q==} + /@ledgerhq/devices/8.0.0: + resolution: {integrity: sha512-gSnRT0KPca+LIpaC6D/WZQjOAlSI5uCvK1dmxXtKhODLAj735rX5Z3SnGnLUavRCHNbUi44FzgvloF5BKTkh7A==} dependencies: - '@ledgerhq/errors': 6.12.1 + '@ledgerhq/errors': 6.12.3 '@ledgerhq/logs': 6.10.1 rxjs: 6.6.7 semver: 7.3.8 - dev: false /@ledgerhq/electron-updater/4.2.2: resolution: {integrity: sha512-kPUJDBnic9VAj8bnL+beqWMP7fpng6SvvbkZQ9+ALHpeoZEcVfF0mmcdB78fqNpoAC4nGw8+G1jgpbbbO1yD2Q==} @@ -13374,9 +13400,8 @@ packages: resolution: {integrity: sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==} dev: false - /@ledgerhq/errors/6.12.1: - resolution: {integrity: sha512-2qeUSUCpQbMhV9eLJDLI8wycFwTcWszP8g3cJycBt9Jf1VczC5MRERwAQv5AYhPa4rcy+jLKBOVZYxc35r5l7g==} - dev: false + /@ledgerhq/errors/6.12.3: + resolution: {integrity: sha512-djiMSgB/7hnK3aLR/c5ZMMivxjcI7o2+y3VKcsZZpydPoVf9+FXqeJPRfOwmJ0JxbQ//LinUfWpIfHew8LkaVw==} /@ledgerhq/hw-app-eth/5.11.0: resolution: {integrity: sha512-qgpPwZzM8UMHYMC5+9xYV2O+8kgkDAl9+38w9JiBksaGmUFqcS4najsB1nj6AWf2rGEuXdKMb2WEYRskVypJrA==} @@ -13385,6 +13410,38 @@ packages: '@ledgerhq/hw-transport': 5.51.1 dev: false + /@ledgerhq/hw-transport-node-hid-noevents/6.27.12: + resolution: {integrity: sha512-f99lIcdEz78jHVfr57Vl9sgP/WpAuM3X26lLDSTKmNHDxLSx7IQaK/eJOcFG4XLk5K7dK/zoyXqq13zcLL2tPg==} + dependencies: + '@ledgerhq/devices': 8.0.0 + '@ledgerhq/errors': 6.12.3 + '@ledgerhq/hw-transport': 6.28.1 + '@ledgerhq/logs': 6.10.1 + node-hid: 2.1.2 + dev: false + + /@ledgerhq/hw-transport-node-hid/6.27.12: + resolution: {integrity: sha512-Y3GGgZK27K587P3671bCF4pbbfFYq6eVECnxoxtVwt0kdquRfpt3mxWlU51LIL+XgDEwBwt2QdB+6eyLHmWKQA==} + dependencies: + '@ledgerhq/devices': 8.0.0 + '@ledgerhq/errors': 6.12.3 + '@ledgerhq/hw-transport': 6.28.1 + '@ledgerhq/hw-transport-node-hid-noevents': 6.27.12 + '@ledgerhq/logs': 6.10.1 + lodash: 4.17.21 + node-hid: 2.1.2 + usb: 1.9.2 + dev: false + + /@ledgerhq/hw-transport-node-speculos-http/6.27.12: + resolution: {integrity: sha512-QMX2nEC2G5OI5f3VxkACJz950MKg6bfB8BGgbnqNN2pc7JAkDb85IsmkBTEEcKtR/fAMnJ3YylVNNFp1AkggIQ==} + dependencies: + '@ledgerhq/errors': 6.12.3 + '@ledgerhq/hw-transport': 6.28.1 + '@ledgerhq/logs': 6.10.1 + axios: 0.26.1 + dev: true + /@ledgerhq/hw-transport-u2f/5.36.0-deprecated: resolution: {integrity: sha512-T/+mGHIiUK/ZQATad6DMDmobCMZ1mVST952009jKzhaE1Et2Uy2secU+QhRkx3BfEAkvwa0zSRSYCL9d20Iqjg==} deprecated: '@ledgerhq/hw-transport-u2f is deprecated. Please use @ledgerhq/hw-transport-webusb or @ledgerhq/hw-transport-webhid. https://github.com/LedgerHQ/ledgerjs/blob/master/docs/migrate_webusb.md' @@ -13420,13 +13477,12 @@ packages: events: 3.3.0 dev: false - /@ledgerhq/hw-transport/6.27.8: - resolution: {integrity: sha512-WSUgF1W3tAikSnAfeNAT2e2dgTdEQd5Vi/095C2mR5Fr0/POCSl9X4T9rlBhK5NSVD+nGXI0rN2ISj08zai8HQ==} + /@ledgerhq/hw-transport/6.28.1: + resolution: {integrity: sha512-RaZe+abn0zBIz82cE9tp7Y7aZkHWWbEaE2yJpfxT8AhFz3fx+BU0kLYzuRN9fmA7vKueNJ1MTVUCY+Ex9/CHSQ==} dependencies: - '@ledgerhq/devices': 7.0.5 - '@ledgerhq/errors': 6.12.1 + '@ledgerhq/devices': 8.0.0 + '@ledgerhq/errors': 6.12.3 events: 3.3.0 - dev: false /@ledgerhq/live-app-sdk/0.5.1: resolution: {integrity: sha512-kWERpf8rVgxVGoksoU18SuYF2dc2WIC0t2zXgA5HI9toVK/gfmQz8x+ElXytImLbtQ+RhFUf73C03K2f9ZH5SQ==} @@ -13448,7 +13504,6 @@ packages: /@ledgerhq/logs/6.10.1: resolution: {integrity: sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==} - dev: false /@ledgerhq/react-native-passcode-auth/2.1.0: resolution: {integrity: sha512-K3SETlNUJAjU/bN6dNJf56gfpxOhGldmClezIU5puw1PcGDvNf4y8vmEouVz5Htc2a/0vetklf0eIQD8Wk3Hww==} @@ -13470,7 +13525,7 @@ packages: /@ledgerhq/wallet-api-core/0.11.0: resolution: {integrity: sha512-SHIdZD/gQJ4dMag5zzmRAAfhkkfiyHFVLHR7xz0Srj2BLdMfQZzXneTSnv7YND4YOZrwHIfBTA68Bim+AiKjwA==} dependencies: - '@ledgerhq/errors': 6.12.1 + '@ledgerhq/errors': 6.12.3 bignumber.js: 9.1.0 uuid: 9.0.0 zod: 3.19.1 @@ -13479,7 +13534,7 @@ packages: /@ledgerhq/wallet-api-core/0.12.0: resolution: {integrity: sha512-e8V73MgiXa63mUkyF3MqwqjKxYzVVF6lhLHYWtUVJCUDwyXEq7EmuEK9IxYl7o5oxqmXlkxQ6qXjl7aQTT6P8g==} dependencies: - '@ledgerhq/errors': 6.12.1 + '@ledgerhq/errors': 6.12.3 bignumber.js: 9.1.0 uuid: 9.0.0 zod: 3.19.1 @@ -13717,6 +13772,10 @@ packages: call-me-maybe: 1.0.1 glob-to-regexp: 0.3.0 + /@noble/hashes/1.1.3: + resolution: {integrity: sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==} + dev: false + /@noble/hashes/1.1.5: resolution: {integrity: sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==} dev: false @@ -14262,7 +14321,7 @@ packages: '@babel/runtime': 7.20.13 '@polkadot/ui-shared': 2.11.1_5aiqcisuhlfhaktqmynzmrayma '@polkadot/util': 10.3.1 - '@polkadot/util-crypto': 10.3.1 + '@polkadot/util-crypto': 10.3.1_@polkadot+util@10.3.1 react: 17.0.2 react-native: 0.68.5_qiqqwmyv63yhnuboofexv3s7x4 react-native-svg: 12.5.1_ondxtwf5lqq5g76dzmsmwamaca @@ -14340,27 +14399,10 @@ packages: dependencies: '@babel/runtime': 7.20.13 '@polkadot/util': 10.3.1 - '@polkadot/util-crypto': 10.3.1 + '@polkadot/util-crypto': 10.3.1_@polkadot+util@10.3.1 color: 3.2.1 dev: false - /@polkadot/util-crypto/10.3.1: - resolution: {integrity: sha512-viqLMuNGrbB2lyDIYdXAl3tq/Em/Y7ql2FvCTHJmxXaB5C1NXiWf1SqFAahUJKohL+ke5IL0jr19wZu/f88lIQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@babel/runtime': 7.20.13 - '@noble/hashes': 1.1.5 - '@noble/secp256k1': 1.7.1 - '@polkadot/networks': 10.3.1 - '@polkadot/util': 10.3.1 - '@polkadot/wasm-crypto': 6.4.1_hmowrubltiyg4mpvtnqaaplyfm - '@polkadot/x-bigint': 10.3.1 - '@polkadot/x-randomvalues': 10.3.1 - '@scure/base': 1.1.1 - ed2curve: 0.3.0 - tweetnacl: 1.0.3 - dev: false - /@polkadot/util-crypto/10.3.1_@polkadot+util@10.3.1: resolution: {integrity: sha512-viqLMuNGrbB2lyDIYdXAl3tq/Em/Y7ql2FvCTHJmxXaB5C1NXiWf1SqFAahUJKohL+ke5IL0jr19wZu/f88lIQ==} engines: {node: '>=14.0.0'} @@ -15380,6 +15422,13 @@ packages: resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} dev: false + /@scure/bip39/1.1.0: + resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} + dependencies: + '@noble/hashes': 1.1.5 + '@scure/base': 1.1.1 + dev: false + /@segment/analytics-react-native/2.9.1_ondxtwf5lqq5g76dzmsmwamaca: resolution: {integrity: sha512-tALKLpRTbwyn4uviRbEEG4x+Bis4t/JxKeCrFlfh9dBrh//HEtAEe/uJuM9PZkx+6BtidvpQLqISotFkTZ3wDA==} engines: {node: '>=12'} @@ -19237,7 +19286,7 @@ packages: resolution: {integrity: sha512-gyBO8FarBrItPGAfrnm4J7vrIWMsr9xqgfzgN4PAqY7eEmL8MDuZtdpk6B6DBuJ3hYbqxvOEa0QPhNzBxnGPeA==} engines: {node: '>=6.0.0'} dependencies: - '@ledgerhq/hw-transport': 6.27.8 + '@ledgerhq/hw-transport': 6.28.1 '@stablelib/blake2b': 1.0.1 '@taquito/taquito': 13.0.1 '@taquito/utils': 13.0.1 @@ -20566,6 +20615,31 @@ packages: - supports-color dev: true + /@typescript-eslint/eslint-plugin/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: + resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + '@typescript-eslint/parser': ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/experimental-utils': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/scope-manager': 4.33.0 + debug: 4.3.4 + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/eslint-plugin/5.23.0_e5ttr75qf74rtjqbvndt6ltmhq: resolution: {integrity: sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -20779,6 +20853,24 @@ packages: - typescript dev: true + /@typescript-eslint/experimental-utils/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/experimental-utils/4.33.0_wdqgoy3juh7r2u2b4n4o4ol5rq: resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} engines: {node: ^10.12.0 || >=12.0.0} @@ -20892,6 +20984,26 @@ packages: - supports-color dev: true + /@typescript-eslint/parser/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: + resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 + debug: 4.3.4 + eslint: 7.32.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser/4.33.0_wdqgoy3juh7r2u2b4n4o4ol5rq: resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} engines: {node: ^10.12.0 || >=12.0.0} @@ -21284,6 +21396,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree/4.33.0_typescript@4.9.5: + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree/5.23.0_typescript@4.9.3: resolution: {integrity: sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -22751,6 +22884,17 @@ packages: /aproba/2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + /aptos/1.3.16: + resolution: {integrity: sha512-LxI4XctQ5VeL+HokjwuGPwsb1fcydLIn4agFXyhn7hSYosTLNRxQ3UIixyP4Fmv6qPBjQVu8hELVSlThQk/EjA==} + engines: {node: '>=11.0.0'} + dependencies: + '@noble/hashes': 1.1.3 + '@scure/bip39': 1.1.0 + axios: 0.27.2 + form-data: 4.0.0 + tweetnacl: 1.0.3 + dev: false + /archy/1.0.0: resolution: {integrity: sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=} dev: true @@ -23875,7 +24019,7 @@ packages: babel-plugin-syntax-jsx: 6.18.0 lodash: 4.17.21 picomatch: 2.3.1 - styled-components: 5.3.5_ovpqj5wn7dv5iunpkty63trwiy + styled-components: 5.3.5_fane7jikarojcev26y27hpbhu4 /babel-plugin-syntax-jsx/6.18.0: resolution: {integrity: sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=} @@ -24454,7 +24598,7 @@ packages: dev: false /bip32-path/0.4.2: - resolution: {integrity: sha1-XbBBataCJxLwd4NuJVe4aXwMfJk=} + resolution: {integrity: sha512-ZBMCELjJfcNMkz5bDuJ1WrYvjlhEF5k6mQ8vUr4N7MbVRsXei7ZOg8VhhwMfNiW68NWmLkgkc6WvTickrLGprQ==} dev: false /bip32/2.0.6: @@ -29756,6 +29900,38 @@ packages: - supports-color dev: false + /eslint-config-standard-jsx/10.0.0_rfut5ehdjmzxinfjxzbnr2vvmi: + resolution: {integrity: sha512-hLeA2f5e06W1xyr/93/QJulN/rLbUVUmqTlexv9PRKHFwEC9ffJcH2LvJhMoEqYQBEYafedgGZXH2W8NUpt5lA==} + peerDependencies: + eslint: ^7.12.1 + eslint-plugin-react: ^7.21.5 + dependencies: + eslint: 7.32.0 + eslint-plugin-react: 7.31.10_eslint@7.32.0 + dev: true + + /eslint-config-standard-with-typescript/21.0.1_jbdluxmlzkbjkmcermr7hyy25y: + resolution: {integrity: sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.1 + eslint: ^7.12.1 + eslint-plugin-import: ^2.22.1 + eslint-plugin-node: ^11.1.0 + eslint-plugin-promise: ^4.2.1 || ^5.0.0 + typescript: ^3.9 || ^4.0.0 + dependencies: + '@typescript-eslint/eslint-plugin': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/parser': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe + eslint: 7.32.0 + eslint-config-standard: 16.0.3_wnerebu6rbpsve3qx7qqwvcqtq + eslint-plugin-import: 2.26.0_eslint@7.32.0 + eslint-plugin-node: 11.1.0_eslint@7.32.0 + eslint-plugin-promise: 5.2.0_eslint@7.32.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-config-standard/16.0.3_wnerebu6rbpsve3qx7qqwvcqtq: resolution: {integrity: sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==} peerDependencies: @@ -29998,6 +30174,31 @@ packages: - supports-color dev: true + /eslint-module-utils/2.7.3_ulu2225r2ychl26a37c6o2rfje: + resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 + find-up: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-module-utils/2.7.3_v3bireslbrxtr5bkc2nznayije: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} @@ -30152,6 +30353,36 @@ packages: - eslint-import-resolver-webpack - supports-color + /eslint-plugin-import/2.26.0_eslint@7.32.0: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + array-includes: 3.1.5 + array.prototype.flat: 1.3.0 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.3_ulu2225r2ychl26a37c6o2rfje + has: 1.0.3 + is-core-module: 2.9.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.5 + resolve: 1.22.0 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-plugin-import/2.26.0_ffi3uiz42rv3jyhs6cr7p7qqry: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} @@ -34130,6 +34361,11 @@ packages: engines: {node: '>=4'} dev: true + /get-stdin/8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + dev: true + /get-stream/3.0.0: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} engines: {node: '>=4'} @@ -37824,7 +38060,6 @@ packages: fsevents: 2.3.2 transitivePeerDependencies: - metro - dev: true /jest-haste-map/28.1.3_metro@0.67.0: resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} @@ -38117,7 +38352,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 28.1.3_metro@0.67.0 + jest-resolve: 28.1.3 /jest-regex-util/24.9.0: resolution: {integrity: sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==} @@ -38226,7 +38461,6 @@ packages: slash: 3.0.0 transitivePeerDependencies: - metro - dev: true /jest-resolve/28.1.3_metro@0.67.0: resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} @@ -40430,7 +40664,6 @@ packages: pify: 4.0.1 strip-bom: 3.0.0 type-fest: 0.3.1 - dev: false /load-module/3.0.0: resolution: {integrity: sha512-ZqprfrTx4vfH5+1mgpspPh5JYsNyA193NkMUdb3GwpmVqMczOh8cUDJgZBmEZVlSR42JBGYTUxlBAX9LHIBtIA==} @@ -44084,7 +44317,6 @@ packages: dependencies: find-up: 3.0.0 load-json-file: 5.3.0 - dev: false /pkg-dir/1.0.0: resolution: {integrity: sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==} @@ -51039,6 +51271,16 @@ packages: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} dev: false + /standard-engine/14.0.1: + resolution: {integrity: sha512-7FEzDwmHDOGva7r9ifOzD3BGdTbA7ujJ50afLVdW/tK14zQEptJjbFuUfn50irqdHDcTbNh0DTIoMPynMCXb0Q==} + engines: {node: '>=8.10'} + dependencies: + get-stdin: 8.0.0 + minimist: 1.2.6 + pkg-conf: 3.1.0 + xdg-basedir: 4.0.0 + dev: true + /standard-version/9.3.2: resolution: {integrity: sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==} engines: {node: '>=10'} @@ -51668,6 +51910,7 @@ packages: react-is: 17.0.2 shallowequal: 1.1.0 supports-color: 5.5.0 + dev: false /styled-system/5.1.5: resolution: {integrity: sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==} @@ -53230,6 +53473,39 @@ packages: - source-map-support dev: true + /ts-node/10.9.1_bdgp3l2zgaopogaavxusmetvge: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.8 + '@tsconfig/node12': 1.0.9 + '@tsconfig/node14': 1.0.1 + '@tsconfig/node16': 1.0.2 + '@types/node': 18.11.18 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + transitivePeerDependencies: + - source-map-support + dev: true + /ts-node/10.9.1_c7x7xisxsab3cereq3ok2kgue4: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -53329,6 +53605,34 @@ packages: typescript: 4.9.3 dev: true + /ts-standard/11.0.0_typescript@4.9.5: + resolution: {integrity: sha512-fe+PCOM6JTMIcG1Smr8BQJztUi3dc/SDJMqezxNAL8pe/0+h0shK0+fNPTuF1hMVMYO+O53Wtp9WQHqj0GJtMw==} + engines: {node: '>=12.0.0'} + hasBin: true + peerDependencies: + typescript: '>=3.8' + dependencies: + '@typescript-eslint/eslint-plugin': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe + eslint: 7.32.0 + eslint-config-standard: 16.0.3_wnerebu6rbpsve3qx7qqwvcqtq + eslint-config-standard-jsx: 10.0.0_rfut5ehdjmzxinfjxzbnr2vvmi + eslint-config-standard-with-typescript: 21.0.1_jbdluxmlzkbjkmcermr7hyy25y + eslint-plugin-import: 2.26.0_eslint@7.32.0 + eslint-plugin-node: 11.1.0_eslint@7.32.0 + eslint-plugin-promise: 5.2.0_eslint@7.32.0 + eslint-plugin-react: 7.31.10_eslint@7.32.0 + get-stdin: 8.0.0 + minimist: 1.2.6 + pkg-conf: 3.1.0 + standard-engine: 14.0.1 + typescript: 4.9.5 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + /tsconfig-paths/3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: From 70304a860dbc5fecdb517f108d28fc5275f67788 Mon Sep 17 00:00:00 2001 From: Vladyslav Belyokhin Date: Mon, 10 Apr 2023 20:32:32 +0300 Subject: [PATCH 02/85] Implement base functionality for aptos * Accounts synchronization * Recieve * Send TODO: * Implement additional settings for token sending --- apps/cli/src/live-common-setup-base.ts | 2 + .../live-common-set-supported-currencies.js | 2 + .../OperationsList/ConfirmationCheck.jsx | 6 + .../src/renderer/icons/AccountCircle.jsx | 14 + .../src/renderer/icons/AddLiquidity.jsx | 24 ++ .../src/renderer/icons/CustomCall.jsx | 14 + .../static/i18n/en/app.json | 8 +- libs/coin-framework/src/env.ts | 10 + libs/coin-framework/src/operation.ts | 3 + libs/ledger-live-common/.gitignore | 2 + libs/ledger-live-common/package.json | 1 + .../src/data/icons/svg/APT.svg | 4 + .../src/families/aptos/LedgerAccount.ts | 104 ++++++ .../src/families/aptos/api/index.ts | 144 ++++++++ .../src/families/aptos/bridge/js.ts | 41 +++ .../src/families/aptos/hw-app-aptos/index.ts | 1 + .../families/aptos}/hw-app-aptos/package.json | 18 +- .../families/aptos}/hw-app-aptos/src/Aptos.ts | 4 +- .../aptos}/hw-app-aptos/tsconfig.json | 2 +- .../families/aptos}/hw-app-aptos/yarn.lock | 138 ++++---- .../src/families/aptos/hw-getAddress.ts | 4 +- .../src/families/aptos/js-broadcast.ts | 17 + .../src/families/aptos/js-buildTransaction.ts | 54 +++ .../families/aptos/js-createTransaction.ts | 12 + .../families/aptos/js-estimateMaxSpendable.ts | 33 ++ .../aptos/js-getFeesForTransaction.ts | 54 +++ .../families/aptos/js-getTransactionStatus.ts | 55 +++ .../families/aptos/js-prepareTransaction.ts | 34 ++ .../src/families/aptos/js-signOperation.ts | 105 ++++++ .../src/families/aptos/js-synchronisation.ts | 132 ++++++++ .../src/families/aptos/logic.ts | 30 ++ .../src/families/aptos/transaction.ts | 63 ++++ .../src/families/aptos/types.ts | 52 +-- .../src/generated/bridge/js.ts | 2 + .../src/generated/transaction.ts | 2 + .../packages/cryptoassets/src/currencies.ts | 42 ++- libs/ledgerjs/packages/hw-app-aptos/app.ts | 59 ---- .../packages/types-cryptoassets/src/index.ts | 3 +- .../packages/types-cryptoassets/src/slip44.ts | 1 + .../packages/types-live/src/operation.ts | 4 + pnpm-lock.yaml | 320 +----------------- 41 files changed, 1152 insertions(+), 468 deletions(-) create mode 100644 apps/ledger-live-desktop/src/renderer/icons/AccountCircle.jsx create mode 100644 apps/ledger-live-desktop/src/renderer/icons/AddLiquidity.jsx create mode 100644 apps/ledger-live-desktop/src/renderer/icons/CustomCall.jsx create mode 100644 libs/ledger-live-common/src/data/icons/svg/APT.svg create mode 100644 libs/ledger-live-common/src/families/aptos/LedgerAccount.ts create mode 100644 libs/ledger-live-common/src/families/aptos/api/index.ts create mode 100644 libs/ledger-live-common/src/families/aptos/bridge/js.ts create mode 100644 libs/ledger-live-common/src/families/aptos/hw-app-aptos/index.ts rename libs/{ledgerjs/packages => ledger-live-common/src/families/aptos}/hw-app-aptos/package.json (55%) rename libs/{ledgerjs/packages => ledger-live-common/src/families/aptos}/hw-app-aptos/src/Aptos.ts (98%) rename libs/{ledgerjs/packages => ledger-live-common/src/families/aptos}/hw-app-aptos/tsconfig.json (59%) rename libs/{ledgerjs/packages => ledger-live-common/src/families/aptos}/hw-app-aptos/yarn.lock (95%) create mode 100644 libs/ledger-live-common/src/families/aptos/js-broadcast.ts create mode 100644 libs/ledger-live-common/src/families/aptos/js-buildTransaction.ts create mode 100644 libs/ledger-live-common/src/families/aptos/js-createTransaction.ts create mode 100644 libs/ledger-live-common/src/families/aptos/js-estimateMaxSpendable.ts create mode 100644 libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts create mode 100644 libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts create mode 100644 libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts create mode 100644 libs/ledger-live-common/src/families/aptos/js-signOperation.ts create mode 100644 libs/ledger-live-common/src/families/aptos/js-synchronisation.ts create mode 100644 libs/ledger-live-common/src/families/aptos/logic.ts create mode 100644 libs/ledger-live-common/src/families/aptos/transaction.ts delete mode 100644 libs/ledgerjs/packages/hw-app-aptos/app.ts diff --git a/apps/cli/src/live-common-setup-base.ts b/apps/cli/src/live-common-setup-base.ts index f180e9e81bea..6901a08153fc 100644 --- a/apps/cli/src/live-common-setup-base.ts +++ b/apps/cli/src/live-common-setup-base.ts @@ -58,6 +58,8 @@ setSupportedCurrencies([ "songbird", "flare", "near", + "aptos", + "aptos_testnet", ]); for (const k in process.env) setEnvUnsafe(k as EnvName, process.env[k]); diff --git a/apps/ledger-live-desktop/src/live-common-set-supported-currencies.js b/apps/ledger-live-desktop/src/live-common-set-supported-currencies.js index 9b66e919e38c..534f8be63dd3 100644 --- a/apps/ledger-live-desktop/src/live-common-set-supported-currencies.js +++ b/apps/ledger-live-desktop/src/live-common-set-supported-currencies.js @@ -54,4 +54,6 @@ setSupportedCurrencies([ "songbird", "flare", "near", + "aptos", + "aptos_testnet", ]); diff --git a/apps/ledger-live-desktop/src/renderer/components/OperationsList/ConfirmationCheck.jsx b/apps/ledger-live-desktop/src/renderer/components/OperationsList/ConfirmationCheck.jsx index 0f6b1bafecc6..3fc931fc0a7e 100644 --- a/apps/ledger-live-desktop/src/renderer/components/OperationsList/ConfirmationCheck.jsx +++ b/apps/ledger-live-desktop/src/renderer/components/OperationsList/ConfirmationCheck.jsx @@ -24,6 +24,9 @@ import IconSupply from "~/renderer/icons/Supply"; import IconWithdraw from "~/renderer/icons/Withdraw"; import IconLink from "~/renderer/icons/LinkIcon"; import IconCoins from "~/renderer/icons/Coins"; +import IconCustomCall from "~/renderer/icons/CustomCall"; +import IconAddLiquidity from "~/renderer/icons/AddLiquidity"; +import IconAccountCircle from "~/renderer/icons/AccountCircle"; import Freeze from "~/renderer/icons/Freeze"; import Unfreeze from "~/renderer/icons/Unfreeze"; @@ -131,6 +134,9 @@ const iconsComponent = { STAKE: IconDelegate, UNSTAKE: IconUndelegate, WITHDRAW_UNSTAKED: IconCoins, + ADD_LIQUIDITY: IconAddLiquidity, + CUSTOM_CALL: IconCustomCall, + CREATE_ACCOUNT: () => , }; class ConfirmationCheck extends PureComponent<{ diff --git a/apps/ledger-live-desktop/src/renderer/icons/AccountCircle.jsx b/apps/ledger-live-desktop/src/renderer/icons/AccountCircle.jsx new file mode 100644 index 000000000000..c88e915662db --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/icons/AccountCircle.jsx @@ -0,0 +1,14 @@ +// @flow + +import React from "react"; + +const AccountCircle = ({ size = 16 }: { size: number }) => ( + + + +); + +export default AccountCircle; diff --git a/apps/ledger-live-desktop/src/renderer/icons/AddLiquidity.jsx b/apps/ledger-live-desktop/src/renderer/icons/AddLiquidity.jsx new file mode 100644 index 000000000000..a3ea7cdcf1a7 --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/icons/AddLiquidity.jsx @@ -0,0 +1,24 @@ +// @flow + +import React from "react"; + +const AddLiquidity = ({ size = 16 }: { size?: number }) => ( + + + + +); + +export default AddLiquidity; diff --git a/apps/ledger-live-desktop/src/renderer/icons/CustomCall.jsx b/apps/ledger-live-desktop/src/renderer/icons/CustomCall.jsx new file mode 100644 index 000000000000..b0f20ca4ecef --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/icons/CustomCall.jsx @@ -0,0 +1,14 @@ +// @flow + +import React from "react"; + +const CustomCall = ({ size = 16 }: { size?: number }) => ( + + + +); + +export default CustomCall; diff --git a/apps/ledger-live-desktop/static/i18n/en/app.json b/apps/ledger-live-desktop/static/i18n/en/app.json index 66d1cdb9ddd1..616cd5c11030 100644 --- a/apps/ledger-live-desktop/static/i18n/en/app.json +++ b/apps/ledger-live-desktop/static/i18n/en/app.json @@ -173,7 +173,10 @@ "REGISTER": "Registered", "STAKE": "Staked", "UNSTAKE": "Unstaked", - "WITHDRAW_UNSTAKED": "Withdrawn" + "WITHDRAW_UNSTAKED": "Withdrawn", + "ADD_LIQUIDITY": "Add liquidity", + "CREATE_ACCOUNT": "Create account", + "CUSTOM_CALL": "Custom call" } }, "byteSize": { @@ -1766,7 +1769,8 @@ "withdrawUnbondedAmount": "Withdrawn Amount", "palletMethod": "Method", "transferAmount": "Transfer Amount", - "validatorsCount": "Validators ({{number}})" + "validatorsCount": "Validators ({{number}})", + "entryFunction": "Function" } }, "operationList": { diff --git a/libs/coin-framework/src/env.ts b/libs/coin-framework/src/env.ts index a0421b904d93..edfe9e8606f4 100644 --- a/libs/coin-framework/src/env.ts +++ b/libs/coin-framework/src/env.ts @@ -71,6 +71,16 @@ const envDefinitions: Record< parser: boolParser, desc: "Show theme debug overlay UI", }, + APTOS_API_ENDPOINT: { + def: "https://aptos-mainnet.pontem.network/v1/", + parser: stringParser, + desc: "API enpoint for aptos", + }, + APTOS_TESTNET_API_ENDPOINT: { + def: "https://aptos-testnet.pontem.network/v1/", + parser: stringParser, + desc: "API enpoint for aptos", + }, API_ALGORAND_BLOCKCHAIN_EXPLORER_API_ENDPOINT: { def: "https://algorand.coin.ledger.com", parser: stringParser, diff --git a/libs/coin-framework/src/operation.ts b/libs/coin-framework/src/operation.ts index c7263e10c0a5..dfb2285b0098 100644 --- a/libs/coin-framework/src/operation.ts +++ b/libs/coin-framework/src/operation.ts @@ -155,6 +155,9 @@ export function getOperationAmountNumber(op: Operation): BigNumber { case "REDEEM": case "SLASH": case "LOCK": + case "ADD_LIQUIDITY": + case "CREATE_ACCOUNT": + case "CUSTOM_CALL": return op.value.negated(); case "FREEZE": diff --git a/libs/ledger-live-common/.gitignore b/libs/ledger-live-common/.gitignore index 6144515d5dde..4a22fe035a68 100644 --- a/libs/ledger-live-common/.gitignore +++ b/libs/ledger-live-common/.gitignore @@ -37,6 +37,8 @@ src/data/icons/reactNative src/data/flags/react src/data/flags/reactNative +src/families/*/hw-app-*/lib* + cli/tests/*/output cli/tests/tmp .env diff --git a/libs/ledger-live-common/package.json b/libs/ledger-live-common/package.json index e8df6aa7c882..a16bb9d1801d 100644 --- a/libs/ledger-live-common/package.json +++ b/libs/ledger-live-common/package.json @@ -130,6 +130,7 @@ "@hashgraph/sdk": "^2.10.1", "@keplr-wallet/cosmos": "^0.9.16", "@keplr-wallet/proto-types": "^0.10.4", + "@noble/hashes": "^1.1.7", "@ledgerhq/coin-framework": "workspace:^", "@ledgerhq/coin-polkadot": "workspace:^", "@ledgerhq/compressjs": "github:LedgerHQ/compressjs#d9e8e4d994923e0ea76a32b97289bcccfe71b82e", diff --git a/libs/ledger-live-common/src/data/icons/svg/APT.svg b/libs/ledger-live-common/src/data/icons/svg/APT.svg new file mode 100644 index 000000000000..93a42f96bc1b --- /dev/null +++ b/libs/ledger-live-common/src/data/icons/svg/APT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/libs/ledger-live-common/src/families/aptos/LedgerAccount.ts b/libs/ledger-live-common/src/families/aptos/LedgerAccount.ts new file mode 100644 index 000000000000..465f8b6f75a1 --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/LedgerAccount.ts @@ -0,0 +1,104 @@ +import { sha3_256 as sha3Hash } from "@noble/hashes/sha3"; +import Transport from "@ledgerhq/hw-transport"; +import HwAptos from "./hw-app-aptos"; +import { + AptosAccount, + HexString, + MaybeHexString, + TransactionBuilder, + TxnBuilderTypes, + BCS, +} from "aptos"; + +export default class LedgerAccount { + private readonly hdPath: string; + + private client?: HwAptos; + private publicKey: Buffer = Buffer.from([]); + private accountAddress: HexString = new HexString(""); + + static async fromLedgerConnection( + transport: Transport, + path: string + ): Promise { + const account = new LedgerAccount(path); + await account.init(transport); + return account; + } + + toAptosAccount(): AptosAccount { + return this as unknown as AptosAccount; + } + + constructor(path: string, pubKey?: string) { + this.hdPath = path; + if (pubKey) { + this.publicKey = Buffer.from(HexString.ensure(pubKey).toUint8Array()); + this.accountAddress = this.authKey(); + } + } + + async init(transport: Transport, display = false): Promise { + this.client = new HwAptos(transport); + const response = await this.client.getAddress(this.hdPath, display); + this.accountAddress = new HexString(response.address); + this.publicKey = response.publicKey; + } + + hdWalletPath(): string { + return this.hdPath; + } + + address(): HexString { + return this.accountAddress; + } + + authKey(): HexString { + const hash = sha3Hash.create(); + hash.update(this.publicKey); + hash.update("\x00"); + return HexString.fromBuffer(hash.digest()); + } + + pubKey(): HexString { + return HexString.fromBuffer(this.publicKey); + } + + async asyncSignBuffer(buffer: Uint8Array): Promise { + if (!this.client) { + throw new Error("LedgerAccount not initialized"); + } + const response = await this.client.signTransaction( + this.hdPath, + Buffer.from(buffer) + ); + return HexString.fromBuffer(response.signature); + } + + async asyncSignHexString(hexString: MaybeHexString): Promise { + const toSign = HexString.ensure(hexString).toUint8Array(); + return this.asyncSignBuffer(toSign); + } + + async rawToSigned( + rawTxn: TxnBuilderTypes.RawTransaction + ): Promise { + const signingMessage = TransactionBuilder.getSigningMessage(rawTxn); + const sigHexStr = await this.asyncSignBuffer(signingMessage); + const signature = new TxnBuilderTypes.Ed25519Signature( + sigHexStr.toUint8Array() + ); + const authenticator = new TxnBuilderTypes.TransactionAuthenticatorEd25519( + new TxnBuilderTypes.Ed25519PublicKey(this.publicKey), + signature + ); + + return new TxnBuilderTypes.SignedTransaction(rawTxn, authenticator); + } + + async signTransaction( + rawTxn: TxnBuilderTypes.RawTransaction + ): Promise { + return BCS.bcsToBytes(await this.rawToSigned(rawTxn)); + } +} diff --git a/libs/ledger-live-common/src/families/aptos/api/index.ts b/libs/ledger-live-common/src/families/aptos/api/index.ts new file mode 100644 index 000000000000..90f0afc9e83a --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/api/index.ts @@ -0,0 +1,144 @@ +import { AptosClient, TxnBuilderTypes } from "aptos"; +import type { Types as AptosTypes } from "aptos"; +import BigNumber from "bignumber.js"; +import network from "../../../network"; +import { getEnv } from "../../../env"; + +// import { isTestnet } from "../logic"; +import type { + AptosResource, + AptosCoinStoreResource, + AptosTransaction, +} from "../types"; + +const getApiEndpoint = (_: string) => getEnv("APTOS_TESTNET_API_ENDPOINT"); +// TODO: uncomment before release +// const getApiEndpoint = (currencyId: string) => +// isTestnet(currencyId) +// ? getEnv("APTOS_TESTNET_API_ENDPOINT") +// : getEnv("APTOS_API_ENDPOINT"); + +export class AptosAPI { + protected defaultEndpoint: string; + private client: AptosClient; + + constructor(currencyId: string) { + this.defaultEndpoint = getApiEndpoint(currencyId); + this.client = new AptosClient(this.defaultEndpoint); + } + + getAccount = async (address: string): Promise => { + return this.client.getAccount(address); + }; + + async getAccountInfo(address: string) { + const [balance, transactions, blockHeight] = await Promise.all([ + this.getBalance(address), + this.getTransactions(address), + this.getHeight(), + ]); + + const txs = await Promise.all( + transactions.map(async (tx) => { + tx.block = await this.getBlock(parseInt(tx.version)); + return tx; + }) + ); + + return { + balance, + txs, + blockHeight, + }; + } + + async estimateGasPrice(): Promise { + return this.client.estimateGasPrice(); + } + + async generateTransaction( + address: string, + payload: AptosTypes.EntryFunctionPayload, + options?: Partial + ): Promise { + const tx = await this.client.generateTransaction(address, payload, options); + + let serverTimestamp = tx.expiration_timestamp_secs; + try { + const ts = (await this.client.getLedgerInfo()).ledger_timestamp; + serverTimestamp = BigInt(Math.ceil(+ts / 1_000_000 + 2 * 60)); // in microseconds + } catch (e) { + // nothing + } + + const ntx = new TxnBuilderTypes.RawTransaction( + tx.sender, + tx.sequence_number, + tx.payload, + tx.max_gas_amount, + tx.gas_unit_price, + serverTimestamp, + tx.chain_id + ); + + return ntx; + } + + async simulateTransaction( + address: TxnBuilderTypes.Ed25519PublicKey, + tx: TxnBuilderTypes.RawTransaction + ): Promise { + return this.client.simulateTransaction(address, tx, { + estimateGasUnitPrice: true, + estimateMaxGasAmount: true, + estimatePrioritizedGasUnitPrice: false, + }); + } + + async broadcast(signature: string): Promise { + const txBytes = Uint8Array.from(Buffer.from(signature, "hex")); + const pendingTx = await this.client.submitTransaction(txBytes); + return pendingTx.hash; + } + + private async getTransactions(address: string): Promise { + try { + const txs = await this.client.getAccountTransactions(address, { + limit: 1000, + }); + return txs as unknown as AptosTransaction[]; + } catch (e: any) { + return []; + } + } + + private async getBalance(address: string): Promise { + try { + const balanceRes = await this.client.getAccountResource( + address, + "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>" + ); + const balance = (balanceRes as AptosResource).data + .coin.value; + return new BigNumber(balance); + } catch (e: any) { + return new BigNumber(0); + } + } + + private async getHeight(): Promise { + const { data } = await network({ + method: "GET", + url: this.defaultEndpoint, + }); + return data.block_height; + } + + private async getBlock(version: number) { + const block = await this.client.getBlockByVersion(version); + return { + height: parseInt(block.block_height), + hash: block.block_hash, + }; + } +} diff --git a/libs/ledger-live-common/src/families/aptos/bridge/js.ts b/libs/ledger-live-common/src/families/aptos/bridge/js.ts new file mode 100644 index 000000000000..d9a439d1f540 --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/bridge/js.ts @@ -0,0 +1,41 @@ +import type { AccountBridge, CurrencyBridge } from "@ledgerhq/types-live"; +import type { Transaction } from "../types"; +import { makeAccountBridgeReceive } from "../../../bridge/jsHelpers"; + +import { sync, scanAccounts } from "../js-synchronisation"; +import getTransactionStatus from "../js-getTransactionStatus"; +import prepareTransaction from "../js-prepareTransaction"; +import createTransaction from "../js-createTransaction"; +import estimateMaxSpendable from "../js-estimateMaxSpendable"; +import signOperation from "../js-signOperation"; +import broadcast from "../js-broadcast"; + +const receive = makeAccountBridgeReceive(); + +const currencyBridge: CurrencyBridge = { + preload: () => Promise.resolve({}), + hydrate: () => {}, + scanAccounts, +}; + +const updateTransaction = ( + t: Transaction, + patch: Partial +): Transaction => ({ + ...t, + ...patch, +}); + +const accountBridge: AccountBridge = { + estimateMaxSpendable, + createTransaction, + updateTransaction, + getTransactionStatus, + prepareTransaction, + sync, + receive, + signOperation, + broadcast, +}; + +export default { currencyBridge, accountBridge }; diff --git a/libs/ledger-live-common/src/families/aptos/hw-app-aptos/index.ts b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/index.ts new file mode 100644 index 000000000000..837242bc9818 --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/index.ts @@ -0,0 +1 @@ +export { default } from "./src/Aptos"; diff --git a/libs/ledgerjs/packages/hw-app-aptos/package.json b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/package.json similarity index 55% rename from libs/ledgerjs/packages/hw-app-aptos/package.json rename to libs/ledger-live-common/src/families/aptos/hw-app-aptos/package.json index 7476f46ac5d9..8ec6eb612583 100644 --- a/libs/ledgerjs/packages/hw-app-aptos/package.json +++ b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/package.json @@ -3,23 +3,25 @@ "version": "0.0.1", "description": "Ledger Hardware Wallet Aptos Application API", "main": "lib/Aptos.js", + "module": "lib-es/Aptos.js", "repository": "https://github.com/Aptos-Pontem-RnD/hw-app-aptos.git", "author": "vldmkr ", "license": "Apache-2.0", - "type": "module", "scripts": { - "build": "yarn tsc --build --clean && tsc -m ES6", - "app": "yarn ts-node app.ts" + "clean": "rimraf lib lib-es", + "build": "tsc && tsc -m ES6 --outDir lib-es", + "prewatch": "pnpm build", + "watch": "tsc --watch" }, "dependencies": { - "@ledgerhq/errors": "^6.10.2", - "@ledgerhq/hw-transport": "^6.27.4", - "@ledgerhq/hw-transport-node-hid": "^6.27.4", - "@noble/hashes": "^1.1.2", + "@ledgerhq/errors": "workspace:^", + "@ledgerhq/hw-transport": "workspace:^", + "@ledgerhq/hw-transport-node-hid": "workspace:^", + "@noble/hashes": "^1.1.7", "bip32-path": "^0.4.2" }, "devDependencies": { - "@ledgerhq/hw-transport-node-speculos-http": "^6.27.4", + "@ledgerhq/hw-transport-node-speculos-http": "workspace:^", "@types/node": "^18.7.20", "ts-node": "^10.9.1", "ts-standard": "^11.0.0", diff --git a/libs/ledgerjs/packages/hw-app-aptos/src/Aptos.ts b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/src/Aptos.ts similarity index 98% rename from libs/ledgerjs/packages/hw-app-aptos/src/Aptos.ts rename to libs/ledger-live-common/src/families/aptos/hw-app-aptos/src/Aptos.ts index a65952bedfe6..8c5fe508e98c 100644 --- a/libs/ledgerjs/packages/hw-app-aptos/src/Aptos.ts +++ b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/src/Aptos.ts @@ -28,11 +28,11 @@ interface AddressData { } export default class Aptos { - readonly transport: Transport; + transport: Transport; constructor(transport: Transport, scrambleKey = "aptos") { this.transport = transport; - this.transport.decorateAppAPIMethods( + transport.decorateAppAPIMethods( this, ["getVersion", "getAddress"], scrambleKey diff --git a/libs/ledgerjs/packages/hw-app-aptos/tsconfig.json b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/tsconfig.json similarity index 59% rename from libs/ledgerjs/packages/hw-app-aptos/tsconfig.json rename to libs/ledger-live-common/src/families/aptos/hw-app-aptos/tsconfig.json index 0cf4676deafc..8a3725e5d061 100644 --- a/libs/ledgerjs/packages/hw-app-aptos/tsconfig.json +++ b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.json", + "extends": "../../../../../ledgerjs/tsconfig.json", "compilerOptions": { "outDir": "lib" }, diff --git a/libs/ledgerjs/packages/hw-app-aptos/yarn.lock b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/yarn.lock similarity index 95% rename from libs/ledgerjs/packages/hw-app-aptos/yarn.lock rename to libs/ledger-live-common/src/families/aptos/hw-app-aptos/yarn.lock index f68e95cd65ff..1026f8ba1285 100644 --- a/libs/ledgerjs/packages/hw-app-aptos/yarn.lock +++ b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/yarn.lock @@ -77,63 +77,63 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@ledgerhq/devices@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.0.tgz#8fe9f9e442e28b7a20bcdf4c2eed06ce7b8f76ae" - integrity sha512-gSnRT0KPca+LIpaC6D/WZQjOAlSI5uCvK1dmxXtKhODLAj735rX5Z3SnGnLUavRCHNbUi44FzgvloF5BKTkh7A== +"@ledgerhq/devices@^8.0.1-recover-staging.0": + version "8.0.1-recover-staging.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.1-recover-staging.0.tgz#1d32f613d125266b3d973e2fe582324d893898d0" + integrity sha512-bE7F6hJHkRpT7Io31vPcvf62L2OyaHWVQaVS7CUvg1QNVvff0xGZ4ScJrFEXXcMaxPq2LmCI/ohF3AxERCGl/w== dependencies: - "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/errors" "^6.12.4-recover-staging.0" "@ledgerhq/logs" "^6.10.1" rxjs "6" semver "^7.3.5" -"@ledgerhq/errors@^6.10.2", "@ledgerhq/errors@^6.12.3": - version "6.12.3" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.3.tgz#a610caae1eeeb7cb038525e5212fe03217dda683" - integrity sha512-djiMSgB/7hnK3aLR/c5ZMMivxjcI7o2+y3VKcsZZpydPoVf9+FXqeJPRfOwmJ0JxbQ//LinUfWpIfHew8LkaVw== +"@ledgerhq/errors@^6.12.4-recover-staging.0", "@ledgerhq/errors@workspace:^": + version "6.12.4-recover-staging.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.4-recover-staging.0.tgz#14627ab77833bd1814a033f87b77898922f02e66" + integrity sha512-uXSqMG1ZNC/ALjdS235yEcfjoDvCvYYuNJarONnjVgalirc4hZWOqeBgFBVHfatE5xhbyT0MBDGvAsk2QrSncA== -"@ledgerhq/hw-transport-node-hid-noevents@^6.27.12": - version "6.27.12" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.12.tgz#5dacbaf7e146018a73d18d16ce975925b5795732" - integrity sha512-f99lIcdEz78jHVfr57Vl9sgP/WpAuM3X26lLDSTKmNHDxLSx7IQaK/eJOcFG4XLk5K7dK/zoyXqq13zcLL2tPg== +"@ledgerhq/hw-transport-node-hid-noevents@^6.27.13-recover-staging.0": + version "6.27.13-recover-staging.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.13-recover-staging.0.tgz#267925f8ec820307dfb47912b2bbf4921793211f" + integrity sha512-Jd/4cVJ7rBkLhyxBtG9MzeBrmkjPjmONaEFhIAVbW4CGB5NUEwSJ8lA8JCcpjC5nlNwY190s9eMl07jTIYamVA== dependencies: - "@ledgerhq/devices" "^8.0.0" - "@ledgerhq/errors" "^6.12.3" - "@ledgerhq/hw-transport" "^6.28.1" + "@ledgerhq/devices" "^8.0.1-recover-staging.0" + "@ledgerhq/errors" "^6.12.4-recover-staging.0" + "@ledgerhq/hw-transport" "^6.28.2-recover-staging.0" "@ledgerhq/logs" "^6.10.1" node-hid "^2.1.2" -"@ledgerhq/hw-transport-node-hid@^6.27.4": - version "6.27.12" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.12.tgz#8a628ea574c51bd727aa1d7b7a4ddaf9a5042df1" - integrity sha512-Y3GGgZK27K587P3671bCF4pbbfFYq6eVECnxoxtVwt0kdquRfpt3mxWlU51LIL+XgDEwBwt2QdB+6eyLHmWKQA== +"@ledgerhq/hw-transport-node-hid@workspace:^": + version "6.27.13-recover-staging.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.13-recover-staging.0.tgz#78a36904c80f29429b0247118fbe65cc8c32e9bb" + integrity sha512-pWBt6XnYypF12MxCi6JEdMtjdSVA6F+L1h2MUeajaxhW6wyeJBmxIc5ESKV7Tugbcuw6NHAKoS/SuTxj7xRnTA== dependencies: - "@ledgerhq/devices" "^8.0.0" - "@ledgerhq/errors" "^6.12.3" - "@ledgerhq/hw-transport" "^6.28.1" - "@ledgerhq/hw-transport-node-hid-noevents" "^6.27.12" + "@ledgerhq/devices" "^8.0.1-recover-staging.0" + "@ledgerhq/errors" "^6.12.4-recover-staging.0" + "@ledgerhq/hw-transport" "^6.28.2-recover-staging.0" + "@ledgerhq/hw-transport-node-hid-noevents" "^6.27.13-recover-staging.0" "@ledgerhq/logs" "^6.10.1" lodash "^4.17.21" node-hid "^2.1.2" usb "^1.7.0" -"@ledgerhq/hw-transport-node-speculos-http@^6.27.4": - version "6.27.12" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-speculos-http/-/hw-transport-node-speculos-http-6.27.12.tgz#774ecae4ea5a88ca2c3e994c3cee0804cbb057d4" - integrity sha512-QMX2nEC2G5OI5f3VxkACJz950MKg6bfB8BGgbnqNN2pc7JAkDb85IsmkBTEEcKtR/fAMnJ3YylVNNFp1AkggIQ== +"@ledgerhq/hw-transport-node-speculos-http@workspace:^": + version "6.27.13-recover-staging.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-speculos-http/-/hw-transport-node-speculos-http-6.27.13-recover-staging.0.tgz#8368296e229b43d04c303092102e9694ae7fb3d7" + integrity sha512-SON+iNipI/MAOaHLPUupDBbzuNefdHtKLzB0T00AkMI4sT0dZj1tY0VQ7uvtEuOQyCA2cwq/f+z0KyNsZAGwQw== dependencies: - "@ledgerhq/errors" "^6.12.3" - "@ledgerhq/hw-transport" "^6.28.1" + "@ledgerhq/errors" "^6.12.4-recover-staging.0" + "@ledgerhq/hw-transport" "^6.28.2-recover-staging.0" "@ledgerhq/logs" "^6.10.1" axios "^0.26.1" -"@ledgerhq/hw-transport@^6.27.4", "@ledgerhq/hw-transport@^6.28.1": - version "6.28.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.1.tgz#cb22fe9bc23af4682c30f2aac7fe6f7ab13ed65a" - integrity sha512-RaZe+abn0zBIz82cE9tp7Y7aZkHWWbEaE2yJpfxT8AhFz3fx+BU0kLYzuRN9fmA7vKueNJ1MTVUCY+Ex9/CHSQ== +"@ledgerhq/hw-transport@^6.28.2-recover-staging.0", "@ledgerhq/hw-transport@workspace:^": + version "6.28.2-recover-staging.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.2-recover-staging.0.tgz#abf68261bacf1254d2008c42468268cca1e170dd" + integrity sha512-HUfbGZw65A2Ntb4rnn6MarZTon+43vEoK3tujAqolDknoA8UPRdFVYpCUMNcH+C41jANRtXkd8F5sLU3+LGZMQ== dependencies: - "@ledgerhq/devices" "^8.0.0" - "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/devices" "^8.0.1-recover-staging.0" + "@ledgerhq/errors" "^6.12.4-recover-staging.0" events "^3.3.0" "@ledgerhq/logs@^6.10.1": @@ -141,10 +141,10 @@ resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.1.tgz#5bd16082261d7364eabb511c788f00937dac588d" integrity sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w== -"@noble/hashes@^1.1.2": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" - integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== +"@noble/hashes@^1.1.7": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" + integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -198,9 +198,9 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/node@^18.7.20": - version "18.14.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.4.tgz#0e64ec0b35a772e1e3d849f9a0ff61782d0cb647" - integrity sha512-VhCw7I7qO2X49+jaKcAUwi3rR+hbxT5VcYF493+Z5kMLI0DL568b7JI4IDJaxWFH0D/xwmGJNoXisyX+w7GH/g== + version "18.15.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.7.tgz#33514fca9bdf136f77027358850c0fb9cd93c669" + integrity sha512-LFmUbFunqmBn26wJZgZPYZPrDR1RwGOu2v79Mgcka1ndO6V0/cwjivPTc4yoK6n9kmw4/ls1r8cLrvh2iMibFA== "@typescript-eslint/eslint-plugin@^4.26.1": version "4.33.0" @@ -348,6 +348,14 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-includes@^3.1.5, array-includes@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" @@ -641,17 +649,17 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" - integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== dependencies: + array-buffer-byte-length "^1.0.0" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function-bind "^1.1.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.0" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" @@ -659,8 +667,8 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.4" - is-array-buffer "^3.0.1" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" @@ -668,11 +676,12 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: is-string "^1.0.7" is-typed-array "^1.1.10" is-weakref "^1.0.2" - object-inspect "^1.12.2" + object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.4.3" safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" string.prototype.trimend "^1.0.6" string.prototype.trimstart "^1.0.6" typed-array-length "^1.0.4" @@ -1145,9 +1154,9 @@ gopd@^1.0.1: get-intrinsic "^1.1.3" graceful-fs@^4.1.15: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" @@ -1241,7 +1250,7 @@ ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -internal-slot@^1.0.3, internal-slot@^1.0.4: +internal-slot@^1.0.3, internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== @@ -1250,7 +1259,7 @@ internal-slot@^1.0.3, internal-slot@^1.0.4: has "^1.0.3" side-channel "^1.0.4" -is-array-buffer@^3.0.1: +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== @@ -1584,7 +1593,7 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.12.2, object-inspect@^1.9.0: +object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== @@ -1806,9 +1815,9 @@ react-is@^16.13.1: integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.1.tgz#f9f9b5f536920253b3d26e7660e7da4ccff9bb62" - integrity sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -1995,6 +2004,15 @@ string.prototype.matchall@^4.0.8: regexp.prototype.flags "^1.4.3" side-channel "^1.0.4" +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimend@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" diff --git a/libs/ledger-live-common/src/families/aptos/hw-getAddress.ts b/libs/ledger-live-common/src/families/aptos/hw-getAddress.ts index e148730412fc..55b82e38c7d8 100644 --- a/libs/ledger-live-common/src/families/aptos/hw-getAddress.ts +++ b/libs/ledger-live-common/src/families/aptos/hw-getAddress.ts @@ -1,4 +1,4 @@ -import Aptos from "../../../../ledgerjs/packages/hw-app-aptos"; +import Aptos from "./hw-app-aptos"; import type { Resolver } from "../../hw/getAddress/types"; const resolver: Resolver = async (transport, { path, verify }) => { @@ -8,7 +8,7 @@ const resolver: Resolver = async (transport, { path, verify }) => { return { address: r.address, - publicKey: r.publicKey.toString(), // TODO: check by Vlad + publicKey: r.publicKey.toString("hex"), path, }; }; diff --git a/libs/ledger-live-common/src/families/aptos/js-broadcast.ts b/libs/ledger-live-common/src/families/aptos/js-broadcast.ts new file mode 100644 index 000000000000..3a2e14b6c93f --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/js-broadcast.ts @@ -0,0 +1,17 @@ +import type { Account, Operation, SignedOperation } from "@ledgerhq/types-live"; +import { patchOperationWithHash } from "./../../operation"; +import { AptosAPI } from "./api"; + +const broadcast = async ({ + signedOperation, + account, +}: { + signedOperation: SignedOperation; + account: Account; +}): Promise => { + const { signature, operation } = signedOperation; + const hash = await new AptosAPI(account.currency.id).broadcast(signature); + return patchOperationWithHash(operation, hash); +}; + +export default broadcast; diff --git a/libs/ledger-live-common/src/families/aptos/js-buildTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-buildTransaction.ts new file mode 100644 index 000000000000..3b8fac499a41 --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/js-buildTransaction.ts @@ -0,0 +1,54 @@ +import BigNumber from "bignumber.js"; +import { TxnBuilderTypes } from "aptos"; +import type { Account } from "@ledgerhq/types-live"; + +import { AptosAPI } from "./api"; +import { DEFAULT_GAS, DEFAULT_GAS_PRICE } from "./logic"; +import type { Transaction } from "./types"; + +const buildTransaction = async ( + account: Account, + transaction: Transaction, + aptosClient: AptosAPI +): Promise => { + const amount = transaction.useAllAmount + ? getMaxSendBalance( + account.spendableBalance, + new BigNumber(DEFAULT_GAS + 2000), + new BigNumber(DEFAULT_GAS_PRICE) + ) + : transaction.amount; + + const txPayload = getPayload(transaction.recipient, amount); + const tx = await aptosClient.generateTransaction( + account.freshAddresses[0].address, + txPayload, + { + max_gas_amount: transaction.gasLimit || DEFAULT_GAS.toString(), + gas_unit_price: transaction.gasUnitPrice || DEFAULT_GAS_PRICE.toString(), + } + ); + + return tx; +}; + +const getMaxSendBalance = ( + amount: BigNumber, + gas: BigNumber, + gasPrice: BigNumber +) => { + const totalGas = new BigNumber(gas).multipliedBy(BigNumber(gasPrice)); + + if (amount.gt(totalGas)) return amount.minus(totalGas); + return amount; +}; + +const getPayload = (sendTo: string, amount: BigNumber) => { + return { + function: "0x1::aptos_account::transfer", + type_arguments: [], + arguments: [sendTo, amount.toString()], + }; +}; + +export default buildTransaction; diff --git a/libs/ledger-live-common/src/families/aptos/js-createTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-createTransaction.ts new file mode 100644 index 000000000000..5344a448a74d --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/js-createTransaction.ts @@ -0,0 +1,12 @@ +import BigNumber from "bignumber.js"; +import type { Transaction } from "./types"; + +const createTransaction = (): Transaction => ({ + family: "aptos", + mode: "send", + amount: BigNumber(0), + recipient: "", + useAllAmount: false, +}); + +export default createTransaction; diff --git a/libs/ledger-live-common/src/families/aptos/js-estimateMaxSpendable.ts b/libs/ledger-live-common/src/families/aptos/js-estimateMaxSpendable.ts new file mode 100644 index 000000000000..94f65ac0285d --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/js-estimateMaxSpendable.ts @@ -0,0 +1,33 @@ +import { getAbandonSeedAddress } from "@ledgerhq/cryptoassets"; +import type { Account, AccountLike } from "@ledgerhq/types-live"; +import { BigNumber } from "bignumber.js"; +import { getMainAccount } from "../../account"; +import createTransaction from "./js-createTransaction"; +import getTransactionStatus from "./js-getTransactionStatus"; +import prepareTransaction from "./js-prepareTransaction"; +import type { Transaction } from "./types"; + +const estimateMaxSpendable = async ({ + account, + parentAccount, + transaction, +}: { + account: AccountLike; + parentAccount: Account; + transaction: Transaction; +}): Promise => { + const mainAccount = getMainAccount(account, parentAccount); + + const t = await prepareTransaction(mainAccount, { + ...createTransaction(), + ...transaction, + recipient: + transaction?.recipient || getAbandonSeedAddress(mainAccount.currency.id), + useAllAmount: true, + }); + + const s = await getTransactionStatus(mainAccount, t); + return s.amount; +}; + +export default estimateMaxSpendable; diff --git a/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts new file mode 100644 index 000000000000..1fe529fc0bc7 --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts @@ -0,0 +1,54 @@ +import BigNumber from "bignumber.js"; +import { HexString, TxnBuilderTypes } from "aptos"; +import { log } from "@ledgerhq/logs"; +import type { Account } from "@ledgerhq/types-live"; + +import { AptosAPI } from "./api"; +import buildTransaction from "./js-buildTransaction"; +import { DEFAULT_GAS, DEFAULT_GAS_PRICE } from "./logic"; +import type { Transaction } from "./types"; + +export const getEstimatedGas = async ( + account: Account, + transaction: Transaction, + aptosClient: AptosAPI +) => { + const res = { + fees: new BigNumber(0), + gasLimit: DEFAULT_GAS.toString(), + gasUnitPrice: DEFAULT_GAS_PRICE.toString(), + }; + + try { + if (!account.xpub) + throw Error("Account public key missing to estimate transaction"); + + const tx = await buildTransaction(account, transaction, aptosClient); + + const pubKeyUint = new HexString(account.xpub as string).toUint8Array(); + const publicKeyEd = new TxnBuilderTypes.Ed25519PublicKey(pubKeyUint); + const simulation = await aptosClient.simulateTransaction(publicKeyEd, tx); + const completedTx = simulation[0]; + + if (!completedTx.success) + throw Error( + `Can not simulate aptos transaction: ${completedTx.vm_status}` + ); + + res.fees = res.fees.plus( + BigNumber( + Math.max( + Math.ceil(+completedTx.gas_used * +completedTx.gas_unit_price), + DEFAULT_GAS + ) + ) + ); + res.gasLimit = completedTx.gas_used; + res.gasUnitPrice = completedTx.gas_unit_price; + } catch (e: any) { + log("error", e.message); + res.fees = res.fees.plus(DEFAULT_GAS); + } + + return res; +}; diff --git a/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts b/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts new file mode 100644 index 000000000000..82c3720c8e9f --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts @@ -0,0 +1,55 @@ +import { BigNumber } from "bignumber.js"; +import { + NotEnoughBalance, + RecipientRequired, + InvalidAddress, + FeeNotLoaded, +} from "@ledgerhq/errors"; +import type { Account } from "@ledgerhq/types-live"; +import type { TransactionStatus } from "../..//generated/types"; +import type { Transaction } from "./types"; + +import { isValidAddress } from "./logic"; + +const getTransactionStatus = async ( + a: Account, + t: Transaction +): Promise => { + const errors: Record = {}; + const warnings = {}; + const useAllAmount = !!t.useAllAmount; + + if (!t.fees) { + errors.fees = new FeeNotLoaded(); + } + + const estimatedFees = t.fees || BigNumber(0); + + const totalSpent = useAllAmount + ? a.balance + : BigNumber(t.amount).plus(estimatedFees); + + const amount = useAllAmount + ? a.balance.minus(estimatedFees) + : BigNumber(t.amount); + + if (totalSpent.gt(a.balance)) { + errors.amount = new NotEnoughBalance(); + } + + if (!t.recipient) { + errors.recipient = new RecipientRequired(); + } else if (!isValidAddress(t.recipient)) { + errors.recipient = new InvalidAddress(); + } + + return Promise.resolve({ + errors, + warnings, + estimatedFees, + amount, + totalSpent, + }); +}; + +export default getTransactionStatus; diff --git a/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts new file mode 100644 index 000000000000..2fbc2a5200cb --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts @@ -0,0 +1,34 @@ +import type { Account } from "@ledgerhq/types-live"; + +import { AptosAPI } from "./api"; +import { getEstimatedGas } from "./js-getFeesForTransaction"; +import type { Transaction } from "./types"; + +const prepareTransaction = async ( + account: Account, + transaction: Transaction +): Promise => { + let amount = transaction.amount; + const aptosClient = new AptosAPI(account.currency.id); + + const { fees, gasLimit, gasUnitPrice } = await getEstimatedGas( + account, + transaction, + aptosClient + ); + + if (transaction.useAllAmount) { + amount = account.balance.minus(fees); + } + + const preparedTransaction = { + ...transaction, + amount, + fees, + gasLimit, + gasUnitPrice, + }; + return preparedTransaction; +}; + +export default prepareTransaction; diff --git a/libs/ledger-live-common/src/families/aptos/js-signOperation.ts b/libs/ledger-live-common/src/families/aptos/js-signOperation.ts new file mode 100644 index 000000000000..1bb977fdb198 --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/js-signOperation.ts @@ -0,0 +1,105 @@ +import type { Transaction } from "./types"; +import { Observable } from "rxjs"; +import { withDevice } from "../../hw/deviceAccess"; +import { encodeOperationId } from "../../operation"; +import buildTransaction from "./js-buildTransaction"; +import BigNumber from "bignumber.js"; + +import type { + Account, + Operation, + OperationType, + SignOperationEvent, +} from "@ledgerhq/types-live"; +import { AptosAPI } from "./api"; +import LedgerAccount from "./LedgerAccount"; + +const signOperation = ({ + account, + deviceId, + transaction, +}: { + account: Account; + deviceId: any; + transaction: Transaction; +}): Observable => + withDevice(deviceId)( + (transport) => + new Observable((o) => { + let cancelled; + + async function main() { + const aptosClient = new AptosAPI(account.currency.id); + + o.next({ type: "device-signature-requested" }); + + const ledgerAccount = new LedgerAccount( + account.freshAddresses[0].derivationPath + ); + await ledgerAccount.init(transport); + + const rawTx = await buildTransaction( + account, + transaction, + aptosClient + ); + const signedTx = await ledgerAccount.signTransaction(rawTx); + + if (cancelled) return; + + o.next({ type: "device-signature-granted" }); + + const hash = ""; + const accountId = account.id; + const fee = transaction.fees || new BigNumber(0); + const extra = {}; + const type: OperationType = "OUT"; + const senders: string[] = []; + const recipients: string[] = []; + + if (transaction.mode === "send") { + senders.push(account.freshAddress); + recipients.push(transaction.recipient); + } + + // build optimistic operation + const operation: Operation = { + id: encodeOperationId(accountId, hash, type), + hash, + type, + value: transaction.useAllAmount + ? account.balance.minus(fee) + : transaction.amount.plus(fee), + fee, + extra, + blockHash: null, + blockHeight: null, + senders, + recipients, + accountId, + date: new Date(), + transactionSequenceNumber: Number(rawTx.sequence_number), + }; + + o.next({ + type: "signed", + signedOperation: { + operation, + signature: Buffer.from(signedTx).toString("hex"), + expirationDate: null, + }, + }); + } + + main().then( + () => o.complete(), + (e) => o.error(e) + ); + + return () => { + cancelled = true; + }; + }) + ); + +export default signOperation; diff --git a/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts b/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts new file mode 100644 index 000000000000..29ec459ae3ea --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts @@ -0,0 +1,132 @@ +import BigNumber from "bignumber.js"; +import type { Types as AptosTypes } from "aptos"; +import type { Operation, OperationType } from "@ledgerhq/types-live"; +import type { GetAccountShape } from "../../bridge/jsHelpers"; +import type { AptosTransaction } from "./types"; +import { makeSync, makeScanAccounts, mergeOps } from "../../bridge/jsHelpers"; + +import { encodeAccountId } from "../../account"; +import { encodeOperationId } from "../../operation"; + +import { AptosAPI } from "./api"; +import Aptos from "./hw-app-aptos"; + +const getBlankOperation = (tx: AptosTransaction, id: string): Operation => ({ + id: "", + hash: tx.hash, + type: "" as OperationType, + value: new BigNumber(0), + fee: new BigNumber(0), + blockHash: tx.block.hash, + blockHeight: tx.block.height, + senders: [] as string[], + recipients: [] as string[], + accountId: id, + date: new Date(parseInt(tx.timestamp) / 1000), + extra: {}, + transactionSequenceNumber: parseInt(tx.sequence_number), + hasFailed: false, +}); + +const txsToOps = (info: any, id: string, txs: AptosTransaction[]) => { + const { address } = info; + const ops: Operation[] = []; + txs.forEach((tx) => { + const op: Operation = getBlankOperation(tx, id); + op.fee = new BigNumber(tx.gas_used).multipliedBy( + BigNumber(tx.gas_unit_price) + ); + + const entryFunctionPayload = tx.payload as AptosTypes.EntryFunctionPayload; + const functionName = entryFunctionPayload.function.slice( + entryFunctionPayload.function.lastIndexOf("::") + 2 + ); + op.extra.entryFunction = entryFunctionPayload.function.slice( + entryFunctionPayload.function.indexOf("::") + 2 + ); + + switch (functionName) { + case "transfer": { + op.type = "OUT"; + op.recipients.push(entryFunctionPayload.arguments[0]); + op.value = op.value.plus(entryFunctionPayload.arguments[1]); + op.value = op.value.plus(op.fee); + break; + } + case "add_liquidity": { + op.type = "ADD_LIQUIDITY"; + op.value = op.value.plus(entryFunctionPayload.arguments[0]); + break; + } + case "create_account": { + op.type = "CREATE_ACCOUNT"; + op.value = op.value.plus(op.fee); + break; + } + default: { + op.type = "CUSTOM_CALL"; + op.value = op.value.plus(op.fee); + break; + } + } + + op.senders.push(address); + op.hasFailed = !tx.success; + op.id = encodeOperationId(id, tx.hash, op.type); + ops.push(op); + }); + return ops; +}; + +const getAccountShape: GetAccountShape = async (info) => { + const { + address, + initialAccount, + derivationMode, + derivationPath, + currency, + transport, + } = info; + + const oldOperations = initialAccount?.operations || []; + + let xpub; + if (!initialAccount?.xpub && transport) { + const aptos = new Aptos(transport); + const r = await aptos.getAddress(derivationPath); + xpub = r.publicKey.toString("hex"); + } + + const accountId = encodeAccountId({ + type: "js", + version: "2", + currencyId: currency.id, + xpubOrAddress: address, + derivationMode, + }); + + const aptosClient = new AptosAPI(currency.id); + + const { balance, txs, blockHeight } = await aptosClient.getAccountInfo( + address + ); + + const newOperations = txsToOps(info, accountId, txs); + const operations = mergeOps(oldOperations, newOperations); + + const shape = { + id: accountId, + xpub, + balance: balance, + spendableBalance: balance, + operationsCount: operations.length, + blockHeight, + }; + + return { ...shape, operations }; +}; + +export const scanAccounts = makeScanAccounts({ + getAccountShape, +}); +export const sync = makeSync({ getAccountShape }); diff --git a/libs/ledger-live-common/src/families/aptos/logic.ts b/libs/ledger-live-common/src/families/aptos/logic.ts new file mode 100644 index 000000000000..26b39d1883aa --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/logic.ts @@ -0,0 +1,30 @@ +import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies"; + +export const DEFAULT_GAS = 500; +export const DEFAULT_GAS_PRICE = 100; +export const ESTIMATE_GAS_MUL = 1.2; + +const HEX_REGEXP = /^[-+]?[a-f0-9]+\.?[a-f0-9]*?$/i; + +const LENGTH_WITH_0x = 66; + +export function isValidAddress(address = ""): boolean { + let str = address; + + const validAddressWithOx = + address.startsWith("0x") && address.length === LENGTH_WITH_0x; + + if (!validAddressWithOx) return false; + + str = str.substring(2); + + return isValidHex(str); +} + +function isValidHex(hex: string): boolean { + return HEX_REGEXP.test(hex); +} + +export function isTestnet(currencyId: string): boolean { + return getCryptoCurrencyById(currencyId).isTestnetFor ? true : false; +} diff --git a/libs/ledger-live-common/src/families/aptos/transaction.ts b/libs/ledger-live-common/src/families/aptos/transaction.ts new file mode 100644 index 000000000000..0e3015ea2e8a --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/transaction.ts @@ -0,0 +1,63 @@ +import { BigNumber } from "bignumber.js"; +import type { Transaction, TransactionRaw } from "./types"; +import { + formatTransactionStatusCommon as formatTransactionStatus, + fromTransactionCommonRaw, + fromTransactionStatusRawCommon as fromTransactionStatusRaw, + toTransactionCommonRaw, + toTransactionStatusRawCommon as toTransactionStatusRaw, +} from "../../transaction/common"; +import { Account } from "@ledgerhq/types-live"; +import { formatCurrencyUnit } from "../../currencies"; +import { getAccountUnit } from "../../account"; + +export const formatTransaction = ( + { mode, amount, fees, recipient, useAllAmount }: Transaction, + account: Account +): string => ` +${mode.toUpperCase()} ${ + useAllAmount + ? "MAX" + : amount.isZero() + ? "" + : " " + + formatCurrencyUnit(getAccountUnit(account), amount, { + showCode: true, + disableRounding: true, + }) +} +TO ${recipient} +with fees=${fees ? formatCurrencyUnit(getAccountUnit(account), fees) : "?"}`; + +export const fromTransactionRaw = (tr: TransactionRaw): Transaction => { + const common = fromTransactionCommonRaw(tr); + return { + ...common, + family: tr.family, + mode: tr.mode, + fees: tr.fees ? new BigNumber(tr.fees) : null, + gasLimit: tr.gasLimit, + gasUnitPrice: tr.gasUnitPrice, + }; +}; + +export const toTransactionRaw = (t: Transaction): TransactionRaw => { + const common = toTransactionCommonRaw(t); + return { + ...common, + family: t.family, + mode: t.mode, + fees: t.fees ? t.fees.toString() : null, + gasLimit: t.gasLimit, + gasUnitPrice: t.gasUnitPrice, + }; +}; + +export default { + formatTransaction, + fromTransactionRaw, + toTransactionRaw, + fromTransactionStatusRaw, + toTransactionStatusRaw, + formatTransactionStatus, +}; diff --git a/libs/ledger-live-common/src/families/aptos/types.ts b/libs/ledger-live-common/src/families/aptos/types.ts index 4970534f7e40..e34df4e421b5 100644 --- a/libs/ledger-live-common/src/families/aptos/types.ts +++ b/libs/ledger-live-common/src/families/aptos/types.ts @@ -1,34 +1,46 @@ -import { +import type { BigNumber } from "bignumber.js"; +import type { Types as AptosTypes } from "aptos"; +import type { TransactionCommon, TransactionCommonRaw, TransactionStatusCommon, TransactionStatusCommonRaw, } from "@ledgerhq/types-live"; -import { Types as AptosTypes } from "aptos"; -export type AptosLikeTransaction = TransactionCommon & AptosTypes.Transaction; +export type AptosTransaction = AptosTypes.UserTransaction & { + block: { + height: number; + hash: string; + }; +}; -export type Transaction = AptosLikeTransaction & { - family: "aptos"; - // networkInfo: NetworkInfoRaw | null | undefined; +export type TransactionStatus = TransactionStatusCommon; + +export type TransactionStatusRaw = TransactionStatusCommonRaw; + +export type AptosCoinStoreResource = { + coin: { + value: string; + }; }; -export type AptosLikeTransactionRaw = TransactionCommonRaw & { - family: string; - // mode: CosmosOperationMode; - // networkInfo: CosmosLikeNetworkInfoRaw | null | undefined; - // fees: string | null | undefined; - // gas: string | null | undefined; - // memo: string | null | undefined; - // validators: CosmosDelegationInfoRaw[]; - // sourceValidator: string | null | undefined; +export type AptosResource = any> = { + data: T; + type: string; }; -export type TransactionRaw = AptosLikeTransactionRaw & { +export type Transaction = TransactionCommon & { + mode: string; family: "aptos"; - // networkInfo: NetworkInfoRaw | null | undefined; + fees?: BigNumber | null; + gasLimit?: string; + gasUnitPrice?: string; }; -export type TransactionStatus = TransactionStatusCommon; - -export type TransactionStatusRaw = TransactionStatusCommonRaw; +export type TransactionRaw = TransactionCommonRaw & { + family: "aptos"; + mode: string; + fees?: string | null; + gasLimit?: string; + gasUnitPrice?: string; +}; diff --git a/libs/ledger-live-common/src/generated/bridge/js.ts b/libs/ledger-live-common/src/generated/bridge/js.ts index 1e66e1b9f3bf..aeda5947ae38 100644 --- a/libs/ledger-live-common/src/generated/bridge/js.ts +++ b/libs/ledger-live-common/src/generated/bridge/js.ts @@ -1,4 +1,5 @@ import algorand from "../../families/algorand/bridge/js"; +import aptos from "../../families/aptos/bridge/js"; import bitcoin from "../../families/bitcoin/bridge/js"; import cardano from "../../families/cardano/bridge/js"; import celo from "../../families/celo/bridge/js"; @@ -20,6 +21,7 @@ import tron from "../../families/tron/bridge/js"; export default { algorand, + aptos, bitcoin, cardano, celo, diff --git a/libs/ledger-live-common/src/generated/transaction.ts b/libs/ledger-live-common/src/generated/transaction.ts index 6b70d4f1a89d..ccaa173691ff 100644 --- a/libs/ledger-live-common/src/generated/transaction.ts +++ b/libs/ledger-live-common/src/generated/transaction.ts @@ -1,4 +1,5 @@ import algorand from "../families/algorand/transaction"; +import aptos from "../families/aptos/transaction"; import bitcoin from "../families/bitcoin/transaction"; import cardano from "../families/cardano/transaction"; import celo from "../families/celo/transaction"; @@ -20,6 +21,7 @@ import polkadot from "@ledgerhq/coin-polkadot/transaction"; export default { algorand, + aptos, bitcoin, cardano, celo, diff --git a/libs/ledgerjs/packages/cryptoassets/src/currencies.ts b/libs/ledgerjs/packages/cryptoassets/src/currencies.ts index 570483edfee3..8ae6f1dc55b4 100644 --- a/libs/ledgerjs/packages/cryptoassets/src/currencies.ts +++ b/libs/ledgerjs/packages/cryptoassets/src/currencies.ts @@ -88,14 +88,14 @@ export const cryptocurrenciesById: Record = { aptos: { type: "CryptoCurrency", id: "aptos", - coinType: 637, // The slip-0044 coin type if registered + coinType: CoinType.APTOS, name: "Aptos", - managerAppName: "Aptos", // name of the embedded app in manager case-sensitive + managerAppName: "Aptos", ticker: "APT", - countervalueTicker: "APT", // depending on the counter value api + countervalueTicker: "APT", scheme: "aptos", - color: "#E6007A", // color to be display on live-desktop and mobile - family: "aptos", // folder name in the live-common / desktop and mobile + color: "#231F20", + family: "aptos", units: [ { name: "APT", @@ -105,8 +105,36 @@ export const cryptocurrenciesById: Record = { ], explorerViews: [ { - address: "https://explorer.aptoslabs.com/account/$address", // url for exploring an address - tx: "https://explorer.aptoslabs.com/txn/$hash", // url for exploring a transaction + address: + "https://explorer.aptoslabs.com/account/$address?network=testnet", // TODO: change to mainnet before release + tx: "https://explorer.aptoslabs.com/txn/$hash?network=testnet", // TODO: change to mainnet before release + }, + ], + }, + aptos_testnet: { + type: "CryptoCurrency", + id: "aptos_testnet", + coinType: CoinType.APTOS, + name: "Aptos (Testnet)", + managerAppName: "Aptos", + ticker: "APT", + countervalueTicker: "APT", + scheme: "aptos_testnet", + color: "#231F20", + family: "aptos", + isTestnetFor: "aptos", + units: [ + { + name: "APT", + code: "APT", + magnitude: 8, + }, + ], + explorerViews: [ + { + address: + "https://explorer.aptoslabs.com/account/$address?network=testnet", + tx: "https://explorer.aptoslabs.com/txn/$hash?network=testnet", }, ], }, diff --git a/libs/ledgerjs/packages/hw-app-aptos/app.ts b/libs/ledgerjs/packages/hw-app-aptos/app.ts deleted file mode 100644 index 13f80240229b..000000000000 --- a/libs/ledgerjs/packages/hw-app-aptos/app.ts +++ /dev/null @@ -1,59 +0,0 @@ -// import Transport from '@ledgerhq/hw-transport' -// import SpeculosTransport from '@ledgerhq/hw-transport-node-speculos-http' -// import TransportNodeHid from '@ledgerhq/hw-transport-node-hid' -// import Aptos from './src/Aptos' - -// function hexStringToBytes (hex: string) { -// const value: number[] = [] -// for (var i = 0; i < hex.length; i += 2) { -// value.push(parseInt(hex.substring(i, i + 2), 16)) -// } - -// return Buffer.from(value) -// } - -// async function exampleRaw (transport: Transport) { -// console.log('getVersion(raw)', await transport.send(0x5b, 0x03, 0x00, 0x00)) -// } - -// async function exampleAptos (transport: Transport) { -// const aptosClinet = new Aptos(transport) - -// console.log('getVersion', await aptosClinet.getVersion()) -// console.log('getAddress', await aptosClinet.getAddress("m/44'/637'/1'/0'/0'", true)) - -// const rawTx = 'b5e97db07fa0bd0e5598aa3643a9bc6f6693bddc1a9fec9e674a461eaa00b193783135e8b00430253a22ba041d860c373d7a1501ccf7ac2d1ad37a8ed2775aee000000000000000002000000000000000000000000000000000000000000000000000000000000000104636f696e087472616e73666572010700000000000000000000000000000000000000000000000000000000000000010a6170746f735f636f696e094170746f73436f696e000220094c6fc0d3b382a599c37e1aaa7618eff2c96a3586876082c4594c50c50d7dde082a00000000000000204e0000000000006400000000000000565c51630000000022' -// const tx = hexStringToBytes(rawTx) -// console.log('signTransaction', (await aptosClinet.signTransaction("m/44'/637'/1'/0'/0'", tx))) -// } - -// const args = process.argv.slice(2) -// const main = async (): Promise => { -// const mode = args[0] -// let transport: Transport -// switch (mode) { -// case 'hid': -// transport = await TransportNodeHid.open(null) -// break -// case 'headless': -// transport = await SpeculosTransport.open({ baseURL: 'http://localhost:5000' }) -// break -// default: -// console.error('Transport mode is not specified, available options: hid, headless') -// return -// } - -// try { -// await exampleRaw(transport) -// await exampleAptos(transport) -// } catch (err) { -// console.log(err) -// } finally { -// await transport.close() -// } -// } - -// main().catch(error => { -// console.error(error) -// process.exit(1) -// }) diff --git a/libs/ledgerjs/packages/types-cryptoassets/src/index.ts b/libs/ledgerjs/packages/types-cryptoassets/src/index.ts index c137c512aa80..61f50959992d 100644 --- a/libs/ledgerjs/packages/types-cryptoassets/src/index.ts +++ b/libs/ledgerjs/packages/types-cryptoassets/src/index.ts @@ -126,7 +126,8 @@ export type CryptoCurrencyId = | "songbird" | "moonbeam" | "near" - | "aptos"; + | "aptos" + | "aptos_testnet"; /** * diff --git a/libs/ledgerjs/packages/types-cryptoassets/src/slip44.ts b/libs/ledgerjs/packages/types-cryptoassets/src/slip44.ts index ee17f5a54238..474888f8b95e 100644 --- a/libs/ledgerjs/packages/types-cryptoassets/src/slip44.ts +++ b/libs/ledgerjs/packages/types-cryptoassets/src/slip44.ts @@ -4,6 +4,7 @@ export enum CoinType { AION = 425, AKA = 200625, ALGO = 283, + APTOS = 637, ATOM = 118, ARK = 111, ATH = 1620, diff --git a/libs/ledgerjs/packages/types-live/src/operation.ts b/libs/ledgerjs/packages/types-live/src/operation.ts index 8ec4ad9b0705..682d9e32157a 100644 --- a/libs/ledgerjs/packages/types-live/src/operation.ts +++ b/libs/ledgerjs/packages/types-live/src/operation.ts @@ -11,6 +11,10 @@ export type OperationType = | "NONE" | "CREATE" | "REVEAL" + // APTOS + | "ADD_LIQUIDITY" + | "CREATE_ACCOUNT" + | "CUSTOM_CALL" // COSMOS | "DELEGATE" | "UNDELEGATE" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f7da7fbe908..c60d20eac2fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1216,6 +1216,7 @@ importers: '@ledgerhq/types-live': workspace:^ '@ledgerhq/wallet-api-core': ^0.11.0 '@ledgerhq/wallet-api-server': ^0.11.0 + '@noble/hashes': ^1.1.7 '@solana/spl-token': ^0.2.0 '@solana/web3.js': 1.41.3 '@stricahq/bip32ed25519': ^1.0.3 @@ -1397,6 +1398,7 @@ importers: '@ledgerhq/logs': link:../ledgerjs/packages/logs '@ledgerhq/wallet-api-core': 0.11.0 '@ledgerhq/wallet-api-server': 0.11.0_react@17.0.2 + '@noble/hashes': 1.2.0 '@solana/spl-token': 0.2.0 '@solana/web3.js': 1.41.3 '@stricahq/bip32ed25519': 1.0.4 @@ -1705,31 +1707,6 @@ importers: ts-node: 10.7.0_33lso24kgdvwdhve7eirdtgycu typescript: 4.6.4 - libs/ledgerjs/packages/hw-app-aptos: - specifiers: - '@ledgerhq/errors': ^6.10.2 - '@ledgerhq/hw-transport': ^6.27.4 - '@ledgerhq/hw-transport-node-hid': ^6.27.4 - '@ledgerhq/hw-transport-node-speculos-http': ^6.27.4 - '@noble/hashes': ^1.1.2 - '@types/node': ^18.7.20 - bip32-path: ^0.4.2 - ts-node: ^10.9.1 - ts-standard: ^11.0.0 - typescript: ^4.8.3 - dependencies: - '@ledgerhq/errors': link:../errors - '@ledgerhq/hw-transport': 6.28.1 - '@ledgerhq/hw-transport-node-hid': 6.27.12 - '@noble/hashes': 1.1.5 - bip32-path: 0.4.2 - devDependencies: - '@ledgerhq/hw-transport-node-speculos-http': 6.27.12 - '@types/node': 18.11.18 - ts-node: 10.9.1_bdgp3l2zgaopogaavxusmetvge - ts-standard: 11.0.0_typescript@4.9.5 - typescript: 4.9.5 - libs/ledgerjs/packages/hw-app-btc: specifiers: '@ledgerhq/hw-transport': workspace:^ @@ -8648,7 +8625,7 @@ packages: /@confio/ics23/0.6.8: resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} dependencies: - '@noble/hashes': 1.1.5 + '@noble/hashes': 1.2.0 protobufjs: 6.11.2 dev: false @@ -8741,7 +8718,7 @@ packages: '@cosmjs/encoding': 0.28.4 '@cosmjs/math': 0.28.4 '@cosmjs/utils': 0.28.4 - '@noble/hashes': 1.1.5 + '@noble/hashes': 1.2.0 bn.js: 5.2.1 elliptic: 6.5.4 libsodium-wrappers: 0.7.10 @@ -13380,6 +13357,7 @@ packages: '@ledgerhq/logs': 6.10.1 rxjs: 6.6.7 semver: 7.3.8 + dev: false /@ledgerhq/electron-updater/4.2.2: resolution: {integrity: sha512-kPUJDBnic9VAj8bnL+beqWMP7fpng6SvvbkZQ9+ALHpeoZEcVfF0mmcdB78fqNpoAC4nGw8+G1jgpbbbO1yD2Q==} @@ -13402,6 +13380,7 @@ packages: /@ledgerhq/errors/6.12.3: resolution: {integrity: sha512-djiMSgB/7hnK3aLR/c5ZMMivxjcI7o2+y3VKcsZZpydPoVf9+FXqeJPRfOwmJ0JxbQ//LinUfWpIfHew8LkaVw==} + dev: false /@ledgerhq/hw-app-eth/5.11.0: resolution: {integrity: sha512-qgpPwZzM8UMHYMC5+9xYV2O+8kgkDAl9+38w9JiBksaGmUFqcS4najsB1nj6AWf2rGEuXdKMb2WEYRskVypJrA==} @@ -13410,38 +13389,6 @@ packages: '@ledgerhq/hw-transport': 5.51.1 dev: false - /@ledgerhq/hw-transport-node-hid-noevents/6.27.12: - resolution: {integrity: sha512-f99lIcdEz78jHVfr57Vl9sgP/WpAuM3X26lLDSTKmNHDxLSx7IQaK/eJOcFG4XLk5K7dK/zoyXqq13zcLL2tPg==} - dependencies: - '@ledgerhq/devices': 8.0.0 - '@ledgerhq/errors': 6.12.3 - '@ledgerhq/hw-transport': 6.28.1 - '@ledgerhq/logs': 6.10.1 - node-hid: 2.1.2 - dev: false - - /@ledgerhq/hw-transport-node-hid/6.27.12: - resolution: {integrity: sha512-Y3GGgZK27K587P3671bCF4pbbfFYq6eVECnxoxtVwt0kdquRfpt3mxWlU51LIL+XgDEwBwt2QdB+6eyLHmWKQA==} - dependencies: - '@ledgerhq/devices': 8.0.0 - '@ledgerhq/errors': 6.12.3 - '@ledgerhq/hw-transport': 6.28.1 - '@ledgerhq/hw-transport-node-hid-noevents': 6.27.12 - '@ledgerhq/logs': 6.10.1 - lodash: 4.17.21 - node-hid: 2.1.2 - usb: 1.9.2 - dev: false - - /@ledgerhq/hw-transport-node-speculos-http/6.27.12: - resolution: {integrity: sha512-QMX2nEC2G5OI5f3VxkACJz950MKg6bfB8BGgbnqNN2pc7JAkDb85IsmkBTEEcKtR/fAMnJ3YylVNNFp1AkggIQ==} - dependencies: - '@ledgerhq/errors': 6.12.3 - '@ledgerhq/hw-transport': 6.28.1 - '@ledgerhq/logs': 6.10.1 - axios: 0.26.1 - dev: true - /@ledgerhq/hw-transport-u2f/5.36.0-deprecated: resolution: {integrity: sha512-T/+mGHIiUK/ZQATad6DMDmobCMZ1mVST952009jKzhaE1Et2Uy2secU+QhRkx3BfEAkvwa0zSRSYCL9d20Iqjg==} deprecated: '@ledgerhq/hw-transport-u2f is deprecated. Please use @ledgerhq/hw-transport-webusb or @ledgerhq/hw-transport-webhid. https://github.com/LedgerHQ/ledgerjs/blob/master/docs/migrate_webusb.md' @@ -13483,6 +13430,7 @@ packages: '@ledgerhq/devices': 8.0.0 '@ledgerhq/errors': 6.12.3 events: 3.3.0 + dev: false /@ledgerhq/live-app-sdk/0.5.1: resolution: {integrity: sha512-kWERpf8rVgxVGoksoU18SuYF2dc2WIC0t2zXgA5HI9toVK/gfmQz8x+ElXytImLbtQ+RhFUf73C03K2f9ZH5SQ==} @@ -13504,6 +13452,7 @@ packages: /@ledgerhq/logs/6.10.1: resolution: {integrity: sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==} + dev: false /@ledgerhq/react-native-passcode-auth/2.1.0: resolution: {integrity: sha512-K3SETlNUJAjU/bN6dNJf56gfpxOhGldmClezIU5puw1PcGDvNf4y8vmEouVz5Htc2a/0vetklf0eIQD8Wk3Hww==} @@ -13780,6 +13729,10 @@ packages: resolution: {integrity: sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==} dev: false + /@noble/hashes/1.2.0: + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + dev: false + /@noble/secp256k1/1.7.1: resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} dev: false @@ -20615,31 +20568,6 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: - resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - '@typescript-eslint/parser': ^4.0.0 - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/experimental-utils': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe - '@typescript-eslint/scope-manager': 4.33.0 - debug: 4.3.4 - eslint: 7.32.0 - functional-red-black-tree: 1.0.1 - ignore: 5.2.0 - regexpp: 3.2.0 - semver: 7.3.7 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/eslint-plugin/5.23.0_e5ttr75qf74rtjqbvndt6ltmhq: resolution: {integrity: sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -20853,24 +20781,6 @@ packages: - typescript dev: true - /@typescript-eslint/experimental-utils/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: - resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: '*' - dependencies: - '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 4.33.0 - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 - eslint: 7.32.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@7.32.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/experimental-utils/4.33.0_wdqgoy3juh7r2u2b4n4o4ol5rq: resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} engines: {node: ^10.12.0 || >=12.0.0} @@ -20984,26 +20894,6 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: - resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 4.33.0 - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 - debug: 4.3.4 - eslint: 7.32.0 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/parser/4.33.0_wdqgoy3juh7r2u2b4n4o4ol5rq: resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} engines: {node: ^10.12.0 || >=12.0.0} @@ -21396,27 +21286,6 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/4.33.0_typescript@4.9.5: - resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree/5.23.0_typescript@4.9.3: resolution: {integrity: sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -29900,38 +29769,6 @@ packages: - supports-color dev: false - /eslint-config-standard-jsx/10.0.0_rfut5ehdjmzxinfjxzbnr2vvmi: - resolution: {integrity: sha512-hLeA2f5e06W1xyr/93/QJulN/rLbUVUmqTlexv9PRKHFwEC9ffJcH2LvJhMoEqYQBEYafedgGZXH2W8NUpt5lA==} - peerDependencies: - eslint: ^7.12.1 - eslint-plugin-react: ^7.21.5 - dependencies: - eslint: 7.32.0 - eslint-plugin-react: 7.31.10_eslint@7.32.0 - dev: true - - /eslint-config-standard-with-typescript/21.0.1_jbdluxmlzkbjkmcermr7hyy25y: - resolution: {integrity: sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^4.0.1 - eslint: ^7.12.1 - eslint-plugin-import: ^2.22.1 - eslint-plugin-node: ^11.1.0 - eslint-plugin-promise: ^4.2.1 || ^5.0.0 - typescript: ^3.9 || ^4.0.0 - dependencies: - '@typescript-eslint/eslint-plugin': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe - '@typescript-eslint/parser': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe - eslint: 7.32.0 - eslint-config-standard: 16.0.3_wnerebu6rbpsve3qx7qqwvcqtq - eslint-plugin-import: 2.26.0_eslint@7.32.0 - eslint-plugin-node: 11.1.0_eslint@7.32.0 - eslint-plugin-promise: 5.2.0_eslint@7.32.0 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-config-standard/16.0.3_wnerebu6rbpsve3qx7qqwvcqtq: resolution: {integrity: sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==} peerDependencies: @@ -30174,31 +30011,6 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.3_ulu2225r2ychl26a37c6o2rfje: - resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - debug: 3.2.7 - eslint-import-resolver-node: 0.3.6 - find-up: 2.1.0 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-module-utils/2.7.3_v3bireslbrxtr5bkc2nznayije: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} @@ -30353,36 +30165,6 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-import/2.26.0_eslint@7.32.0: - resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - array-includes: 3.1.5 - array.prototype.flat: 1.3.0 - debug: 2.6.9 - doctrine: 2.1.0 - eslint: 7.32.0 - eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3_ulu2225r2ychl26a37c6o2rfje - has: 1.0.3 - is-core-module: 2.9.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.5 - resolve: 1.22.0 - tsconfig-paths: 3.14.1 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - /eslint-plugin-import/2.26.0_ffi3uiz42rv3jyhs6cr7p7qqry: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} @@ -34361,11 +34143,6 @@ packages: engines: {node: '>=4'} dev: true - /get-stdin/8.0.0: - resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} - engines: {node: '>=10'} - dev: true - /get-stream/3.0.0: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} engines: {node: '>=4'} @@ -40664,6 +40441,7 @@ packages: pify: 4.0.1 strip-bom: 3.0.0 type-fest: 0.3.1 + dev: false /load-module/3.0.0: resolution: {integrity: sha512-ZqprfrTx4vfH5+1mgpspPh5JYsNyA193NkMUdb3GwpmVqMczOh8cUDJgZBmEZVlSR42JBGYTUxlBAX9LHIBtIA==} @@ -44317,6 +44095,7 @@ packages: dependencies: find-up: 3.0.0 load-json-file: 5.3.0 + dev: false /pkg-dir/1.0.0: resolution: {integrity: sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==} @@ -51271,16 +51050,6 @@ packages: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} dev: false - /standard-engine/14.0.1: - resolution: {integrity: sha512-7FEzDwmHDOGva7r9ifOzD3BGdTbA7ujJ50afLVdW/tK14zQEptJjbFuUfn50irqdHDcTbNh0DTIoMPynMCXb0Q==} - engines: {node: '>=8.10'} - dependencies: - get-stdin: 8.0.0 - minimist: 1.2.6 - pkg-conf: 3.1.0 - xdg-basedir: 4.0.0 - dev: true - /standard-version/9.3.2: resolution: {integrity: sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==} engines: {node: '>=10'} @@ -53473,39 +53242,6 @@ packages: - source-map-support dev: true - /ts-node/10.9.1_bdgp3l2zgaopogaavxusmetvge: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.8 - '@tsconfig/node12': 1.0.9 - '@tsconfig/node14': 1.0.1 - '@tsconfig/node16': 1.0.2 - '@types/node': 18.11.18 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - transitivePeerDependencies: - - source-map-support - dev: true - /ts-node/10.9.1_c7x7xisxsab3cereq3ok2kgue4: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -53605,34 +53341,6 @@ packages: typescript: 4.9.3 dev: true - /ts-standard/11.0.0_typescript@4.9.5: - resolution: {integrity: sha512-fe+PCOM6JTMIcG1Smr8BQJztUi3dc/SDJMqezxNAL8pe/0+h0shK0+fNPTuF1hMVMYO+O53Wtp9WQHqj0GJtMw==} - engines: {node: '>=12.0.0'} - hasBin: true - peerDependencies: - typescript: '>=3.8' - dependencies: - '@typescript-eslint/eslint-plugin': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe - eslint: 7.32.0 - eslint-config-standard: 16.0.3_wnerebu6rbpsve3qx7qqwvcqtq - eslint-config-standard-jsx: 10.0.0_rfut5ehdjmzxinfjxzbnr2vvmi - eslint-config-standard-with-typescript: 21.0.1_jbdluxmlzkbjkmcermr7hyy25y - eslint-plugin-import: 2.26.0_eslint@7.32.0 - eslint-plugin-node: 11.1.0_eslint@7.32.0 - eslint-plugin-promise: 5.2.0_eslint@7.32.0 - eslint-plugin-react: 7.31.10_eslint@7.32.0 - get-stdin: 8.0.0 - minimist: 1.2.6 - pkg-conf: 3.1.0 - standard-engine: 14.0.1 - typescript: 4.9.5 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - /tsconfig-paths/3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: From 6484c0d680407c47d4fce5353ac5e038d48e390d Mon Sep 17 00:00:00 2001 From: Vladyslav Belyokhin Date: Sun, 4 Jun 2023 21:06:49 +0300 Subject: [PATCH 03/85] Add transaction configuration * Gas fee (gas price, gas limit) * Additional settings (sequence number, exp. timestamp) * TODO: add texts to the dictionary --- .../aptos/ExpirationTimestampField.tsx | 85 +++++++++ .../renderer/families/aptos/GasPriceField.tsx | 82 +++++++++ .../families/aptos/MaxGasAmountField.tsx | 85 +++++++++ .../families/aptos/SendAmountFields.tsx | 172 ++++++++++++++++++ .../families/aptos/SequenceNumberField.tsx | 85 +++++++++ .../static/i18n/en/app.json | 18 ++ .../src/families/aptos/api/index.ts | 37 +++- .../src/families/aptos/errors.ts | 12 ++ .../src/families/aptos/js-buildTransaction.ts | 12 +- .../families/aptos/js-createTransaction.ts | 10 + .../families/aptos/js-estimateMaxSpendable.ts | 17 +- .../aptos/js-getFeesForTransaction.ts | 133 +++++++++++--- .../families/aptos/js-getTransactionStatus.ts | 40 +++- .../families/aptos/js-prepareTransaction.ts | 38 ++-- .../src/families/aptos/js-synchronisation.ts | 2 +- .../src/families/aptos/logic.ts | 31 +++- .../src/families/aptos/transaction.ts | 24 ++- .../src/families/aptos/types.ts | 35 +++- 18 files changed, 836 insertions(+), 82 deletions(-) create mode 100644 apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx create mode 100644 apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx create mode 100644 apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx create mode 100644 apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx create mode 100644 apps/ledger-live-desktop/src/renderer/families/aptos/SequenceNumberField.tsx create mode 100644 libs/ledger-live-common/src/families/aptos/errors.ts diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx new file mode 100644 index 000000000000..de3006766688 --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx @@ -0,0 +1,85 @@ +import React, { forwardRef, useCallback, useImperativeHandle, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { BigNumber } from "bignumber.js"; +import invariant from "invariant"; +import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; +import { getMainAccount } from "@ledgerhq/live-common/account/index"; +import Box from "~/renderer/components/Box"; +import Input from "~/renderer/components/Input"; +import Label from "~/renderer/components/Label"; + +import { Account } from "@ledgerhq/types-live"; +import { Transaction, TransactionStatus } from "@ledgerhq/live-common/generated/types"; +import { Result } from "@ledgerhq/live-common/lib/bridge/useBridgeTransaction"; + +type AptosTransaction = Extract; +type Props = { + account: Account; + parentAccount: Account | null | undefined; + transaction: AptosTransaction; + status: TransactionStatus; + updateTransaction: Result["updateTransaction"]; +}; + +const ExpirationTimestampField = forwardRef(function ExpirationTimestampComponent( + { account, parentAccount, transaction, status, updateTransaction }: Props, + ref, +) { + invariant(transaction.family === "aptos", "ExpirationTimestamp: aptos family expected"); + const mainAccount = getMainAccount(account, parentAccount); + invariant(mainAccount, "Account required"); + const bridge = getAccountBridge(mainAccount); + const { t } = useTranslation(); + const [localValue, setLocalValue] = useState(null); + + useImperativeHandle(ref, () => ({ + resetData: () => { + setLocalValue(null); + }, + })); + + const onExpirationTimestampChange = useCallback( + (str: string) => { + if (str && !BigNumber(str).isFinite()) { + return; + } + setLocalValue(str); + updateTransaction((transaction: AptosTransaction) => + bridge.updateTransaction(transaction, { + options: { + ...transaction.options, + expirationTimestampSecs: str, + }, + errors: Object.assign({}, transaction.errors, { expirationTimestampSecs: "" }), + }), + ); + }, + [updateTransaction, bridge], + ); + + const expirationTimestampSecs = localValue ?? ""; + const { expirationTimestampSecs: expirationTimestampSecsError } = status.errors; + const { expirationTimestampSecs: expirationTimestampSecsWarning } = status.warnings; + + return ( + + + + + + + + + ); +}); + +export default ExpirationTimestampField; diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx new file mode 100644 index 000000000000..10cb5ab51b10 --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx @@ -0,0 +1,82 @@ +import React, { useCallback, useState, forwardRef, useImperativeHandle } from "react"; +import { BigNumber } from "bignumber.js"; +import { Result } from "@ledgerhq/live-common/lib/bridge/useBridgeTransaction"; +import invariant from "invariant"; +import { Account } from "@ledgerhq/types-live"; +import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; +import { getMainAccount } from "@ledgerhq/live-common/account/index"; +import Box from "~/renderer/components/Box"; +import Input from "~/renderer/components/Input"; +import Label from "~/renderer/components/Label"; +import { Transaction, TransactionStatus } from "@ledgerhq/live-common/generated/types"; +import { DEFAULT_GAS_PRICE } from "@ledgerhq/live-common/families/aptos/logic"; +import { useTranslation } from "react-i18next"; + +type AptosTransaction = Extract; +type Props = { + account: Account; + parentAccount: Account | null | undefined; + transaction: Transaction; + status: TransactionStatus; + updateTransaction: Result["updateTransaction"]; +}; + +const FeesField = forwardRef(function FeesFieldComponent( + { account, parentAccount, transaction, status, updateTransaction }: Props, + ref, +) { + invariant(transaction.family === "aptos", "FeeField: aptos family expected"); + const mainAccount = getMainAccount(account, parentAccount); + invariant(mainAccount, "Account required"); + const { t } = useTranslation(); + const [localValue, setLocalValue] = useState(null); + const bridge = getAccountBridge(mainAccount); + + useImperativeHandle(ref, () => ({ + resetData: () => { + setLocalValue(transaction.estimate.gasUnitPrice); + }, + })); + + const onGasPriceChange = useCallback( + (str: string) => { + if (str && !BigNumber(str).isFinite()) return; + setLocalValue(str); + updateTransaction(transaction => + bridge.updateTransaction(transaction, { + options: { + ...transaction.options, + gasUnitPrice: str || transaction.estimate.gasUnitPrice, + }, + skipEmulation: true, + }), + ); + }, + [updateTransaction, bridge], + ); + + const gasUnitPrice = localValue ?? transaction.estimate.gasUnitPrice; + const { gasUnitPrice: gasPriceError } = status.errors; + const { gasUnitPrice: gasPriceWarning } = status.warnings; + return ( + + + + + + + + + ); +}); +export default FeesField; diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx new file mode 100644 index 000000000000..78bbc12fd801 --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx @@ -0,0 +1,85 @@ +import React, { forwardRef, useCallback, useState, useImperativeHandle } from "react"; +import { Transaction, TransactionStatus } from "@ledgerhq/live-common/generated/types"; +import { Result } from "@ledgerhq/live-common/lib/bridge/useBridgeTransaction"; +import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; +import { getMainAccount } from "@ledgerhq/live-common/account/index"; +import { Account, AccountLike } from "@ledgerhq/types-live"; +import { useTranslation } from "react-i18next"; +import { BigNumber } from "bignumber.js"; +import invariant from "invariant"; +import Box from "~/renderer/components/Box"; +import Input from "~/renderer/components/Input"; +import Label from "~/renderer/components/Label"; + +import { DEFAULT_GAS } from "@ledgerhq/live-common/families/aptos/logic"; + +type AptosTransaction = Extract; +type Props = { + transaction: AptosTransaction; + account: AccountLike; + parentAccount: Account | null | undefined; + status: TransactionStatus; + updateTransaction: Result["updateTransaction"]; +}; + +const MaxGasAmountField = forwardRef(function MaxGasAmountFieldComponent( + { account, parentAccount, transaction, status, updateTransaction }: Props, + ref, +) { + invariant(transaction.family === "aptos", "MaxGasAmount: aptos family expected"); + const mainAccount = getMainAccount(account, parentAccount); + invariant(mainAccount, "Account required"); + const bridge = getAccountBridge(mainAccount); + const { t } = useTranslation(); + const [localValue, setLocalValue] = useState(null); + + useImperativeHandle(ref, () => ({ + resetData: () => { + setLocalValue(transaction.estimate.maxGasAmount); + }, + })); + + const onMaxGasAmountChange = useCallback( + (str: string) => { + if (str && !BigNumber(str).isFinite()) return; + setLocalValue(str); + updateTransaction((transaction: AptosTransaction) => + bridge.updateTransaction(transaction, { + options: { + ...transaction.options, + maxGasAmount: str || transaction.estimate.maxGasAmount, + }, + skipEmulation: true, + }), + ); + }, + [bridge, updateTransaction], + ); + + const maxGasAmount = localValue ?? transaction.estimate.maxGasAmount; + const { maxGasAmount: maxGasAmountError } = status.errors; + const { maxGasAmount: maxGasAmountWarning } = status.warnings; + + return ( + + + + + + + + + ); +}); + +export default MaxGasAmountField; diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx new file mode 100644 index 000000000000..0088c9eb8250 --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx @@ -0,0 +1,172 @@ +import invariant from "invariant"; +import React, { useState, useCallback, useRef, useMemo, useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { Account, FeeStrategy } from "@ledgerhq/types-live"; +import { Transaction, TransactionStatus } from "@ledgerhq/live-common/generated/types"; +import { Result } from "@ledgerhq/live-common/lib/bridge/useBridgeTransaction"; +import Button from "~/renderer/components/Button"; +import Box from "~/renderer/components/Box"; +import Label from "~/renderer/components/Label"; +import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; +import { getMainAccount } from "@ledgerhq/live-common/account/index"; +import GasPriceField from "./GasPriceField"; +import MaxGasAmountField from "./MaxGasAmountField"; +import SequenceNumberField from "./SequenceNumberField"; +import ExpirationTimestampField from "./ExpirationTimestampField"; + +type AptosTransaction = Extract; +type Props = { + account: Account; + parentAccount: Account | undefined | null; + transaction: AptosTransaction; + onChange: (a: AptosTransaction) => void; + status: TransactionStatus; + bridgePending: boolean; + updateTransaction: Result["updateTransaction"]; + mapStrategies?: ( + a: FeeStrategy, + ) => FeeStrategy & { + [x: string]: any; + }; + trackProperties?: object; +}; +const Fields = ({ account, parentAccount, transaction, updateTransaction, status }: Props) => { + invariant(transaction.family === "aptos", "SendAmountFields: aptos family expected"); + const mainAccount = getMainAccount(account, parentAccount); + invariant(mainAccount, "Account required"); + const { t } = useTranslation(); + + const [isFee, setIsFee] = useState(true); + const [isSettings, setIsSettings] = useState(true); + + const gasPriceFieldElement = useRef(); + const gasLimitElement = useRef(); + const sequenceNumberElement = useRef(); + const expirationTimestampElement = useRef(); + + const setOptimalGas = useCallback(() => { + gasPriceFieldElement.current?.resetData(); + gasLimitElement.current?.resetData(); + + const bridge = getAccountBridge(mainAccount); + updateTransaction((transaction: AptosTransaction) => + bridge.updateTransaction(transaction, { + options: { + ...transaction.options, + maxGasAmount: transaction.estimate.maxGasAmount, + gasUnitPrice: transaction.estimate.gasUnitPrice, + }, + skipEmulation: true, + }), + ); + }, [mainAccount, updateTransaction]); + + const resetSettings = useCallback(() => { + sequenceNumberElement.current?.resetData(); + expirationTimestampElement.current?.resetData(); + + const bridge = getAccountBridge(mainAccount); + updateTransaction((transaction: AptosTransaction) => + bridge.updateTransaction(transaction, { + options: { + ...transaction.options, + sequenceNumber: "", + expirationTimestampSecs: "", + }, + errors: Object.assign({}, transaction.errors, { + sequenceNumber: "", + expirationTimestampSecs: "", + }), + }), + ); + }, [mainAccount, updateTransaction]); + + const wrapperProps = useMemo(() => { + const props = Object.create(null); + if (transaction.amount.isZero()) props.style = { opacity: 0.2, pointerEvents: "none" }; + return props; + }, [transaction.amount]); + + return ( + + + + + + + + + + + + + + + + + + + + + + + ); +}; +export default { + component: Fields, + fields: ["gasUnitPrice", "maxGasAmount", "sequenceNumber", "expirationTimestampSecs"], +}; diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/SequenceNumberField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/SequenceNumberField.tsx new file mode 100644 index 000000000000..8433fcba0ac4 --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/SequenceNumberField.tsx @@ -0,0 +1,85 @@ +import React, { forwardRef, useCallback, useImperativeHandle, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { BigNumber } from "bignumber.js"; +import invariant from "invariant"; +import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; +import { getMainAccount } from "@ledgerhq/live-common/account/index"; +import Box from "~/renderer/components/Box"; +import Input from "~/renderer/components/Input"; +import Label from "~/renderer/components/Label"; + +import { Account } from "@ledgerhq/types-live"; +import { Transaction, TransactionStatus } from "@ledgerhq/live-common/generated/types"; +import { Result } from "@ledgerhq/live-common/lib/bridge/useBridgeTransaction"; + +type AptosTransaction = Extract; +type Props = { + account: Account; + parentAccount: Account | null | undefined; + transaction: AptosTransaction; + status: TransactionStatus; + updateTransaction: Result["updateTransaction"]; +}; + +const SequenceNumberField = forwardRef(function SequenceNumberFieldComponent( + { account, parentAccount, transaction, status, updateTransaction }: Props, + ref, +) { + invariant(transaction.family === "aptos", "SequenceNumber: aptos family expected"); + const mainAccount = getMainAccount(account, parentAccount); + invariant(mainAccount, "Account required"); + const bridge = getAccountBridge(mainAccount); + const { t } = useTranslation(); + const [localValue, setLocalValue] = useState(null); + + useImperativeHandle(ref, () => ({ + resetData: () => { + setLocalValue(""); + }, + })); + + const onSequenceNumberChange = useCallback( + (str: string) => { + if (str && !BigNumber(str).isFinite()) { + return; + } + setLocalValue(str); + updateTransaction((transaction: AptosTransaction) => + bridge.updateTransaction(transaction, { + options: { + ...transaction.options, + sequenceNumber: str, + }, + errors: Object.assign({}, transaction.errors, { sequenceNumber: "" }), + }), + ); + }, + [updateTransaction, bridge], + ); + + const sequenceNumber = localValue ?? ""; + const { sequenceNumber: sequenceNumberError } = status.errors; + const { sequenceNumber: sequenceNumberWarning } = status.warnings; + + return ( + + + + + + + + + ); +}); + +export default SequenceNumberField; diff --git a/apps/ledger-live-desktop/static/i18n/en/app.json b/apps/ledger-live-desktop/static/i18n/en/app.json index ea8792bd08fe..38db1d03a0cf 100644 --- a/apps/ledger-live-desktop/static/i18n/en/app.json +++ b/apps/ledger-live-desktop/static/i18n/en/app.json @@ -2213,6 +2213,14 @@ "ethereumGasPrice": "Gas price", "ethereumMaxFee": "Max Fee ({{unitName}})", "ethereumPriorityFee": "Max Priority Fee ({{unitName}})", + "aptosGasFee": "Gas Fee", + "aptosGasLimit": "Gas Limit", + "aptosGasPrice": "Gas Price (OCTAS)", + "aptosSetOptimalGas": "SET OPTIMAL GAS", + "aptosAdditionalSettings": "Additional settings", + "aptosSequenceNumber": "Sequence Number", + "aptosExpTimestamp": "Exp. Timestamp", + "aptosResetSettings": "RESET SETTINGS", "nextBlock": "Next block", "suggested": "Suggested", "unitPerByte": "{{unit}} per byte", @@ -5233,6 +5241,16 @@ "title": "Account not scanned by full node", "description": "Please configure your full node to scan for the accounts associated with this device. Your full node must first scan the blockchain for this account before you can add it to your portfolio." }, + "SequenseNumberTooNew": { + "title": "Sequence number too new" + }, + "SequenseNumberTooOld": { + "title": "Sequence number too old", + "description": "Sequence number too old" + }, + "TransactionExpired": { + "title": "Transaction expired" + }, "SwapGenericAPIError": { "title": "Something went wrong", "description": "The exchange transaction did not go through. Please try again or contact support." diff --git a/libs/ledger-live-common/src/families/aptos/api/index.ts b/libs/ledger-live-common/src/families/aptos/api/index.ts index 90f0afc9e83a..18efcc08ab57 100644 --- a/libs/ledger-live-common/src/families/aptos/api/index.ts +++ b/libs/ledger-live-common/src/families/aptos/api/index.ts @@ -9,7 +9,9 @@ import type { AptosResource, AptosCoinStoreResource, AptosTransaction, + Transaction, } from "../types"; +import { isUndefined } from "lodash"; const getApiEndpoint = (_: string) => getEnv("APTOS_TESTNET_API_ENDPOINT"); // TODO: uncomment before release @@ -59,16 +61,37 @@ export class AptosAPI { async generateTransaction( address: string, payload: AptosTypes.EntryFunctionPayload, - options?: Partial + options: Transaction["options"] ): Promise { - const tx = await this.client.generateTransaction(address, payload, options); + const opts: Partial = {}; + if (!isUndefined(options.maxGasAmount)) { + opts.max_gas_amount = BigNumber(options.maxGasAmount).toString(); + } + + if (!isUndefined(options.gasUnitPrice)) { + opts.gas_unit_price = BigNumber(options.gasUnitPrice).toString(); + } + + if (!isUndefined(options.sequenceNumber)) { + opts.sequence_number = BigNumber(options.sequenceNumber).toString(); + } + + if (!isUndefined(options.expirationTimestampSecs)) { + opts.expiration_timestamp_secs = BigNumber( + options.expirationTimestampSecs + ).toString(); + } + + const tx = await this.client.generateTransaction(address, payload, opts); let serverTimestamp = tx.expiration_timestamp_secs; - try { - const ts = (await this.client.getLedgerInfo()).ledger_timestamp; - serverTimestamp = BigInt(Math.ceil(+ts / 1_000_000 + 2 * 60)); // in microseconds - } catch (e) { - // nothing + if (isUndefined(opts.expiration_timestamp_secs)) { + try { + const ts = (await this.client.getLedgerInfo()).ledger_timestamp; + serverTimestamp = BigInt(Math.ceil(+ts / 1_000_000 + 2 * 60)); // in microseconds + } catch (e) { + // nothing + } } const ntx = new TxnBuilderTypes.RawTransaction( diff --git a/libs/ledger-live-common/src/families/aptos/errors.ts b/libs/ledger-live-common/src/families/aptos/errors.ts new file mode 100644 index 000000000000..07f3d57b87ed --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/errors.ts @@ -0,0 +1,12 @@ +import { createCustomErrorClass } from "@ledgerhq/errors"; + +export const SequenseNumberTooOldError = createCustomErrorClass( + "SequenseNumberTooOld" +); + +export const SequenseNumberTooNewError = createCustomErrorClass( + "SequenseNumberTooNew" +); + +export const TransactionExpiredError = + createCustomErrorClass("TransactionExpired"); diff --git a/libs/ledger-live-common/src/families/aptos/js-buildTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-buildTransaction.ts index 3b8fac499a41..2920875b3587 100644 --- a/libs/ledger-live-common/src/families/aptos/js-buildTransaction.ts +++ b/libs/ledger-live-common/src/families/aptos/js-buildTransaction.ts @@ -3,7 +3,11 @@ import { TxnBuilderTypes } from "aptos"; import type { Account } from "@ledgerhq/types-live"; import { AptosAPI } from "./api"; -import { DEFAULT_GAS, DEFAULT_GAS_PRICE } from "./logic"; +import { + DEFAULT_GAS, + DEFAULT_GAS_PRICE, + normalizeTransactionOptions, +} from "./logic"; import type { Transaction } from "./types"; const buildTransaction = async ( @@ -20,13 +24,11 @@ const buildTransaction = async ( : transaction.amount; const txPayload = getPayload(transaction.recipient, amount); + const txOptions = normalizeTransactionOptions(transaction.options); const tx = await aptosClient.generateTransaction( account.freshAddresses[0].address, txPayload, - { - max_gas_amount: transaction.gasLimit || DEFAULT_GAS.toString(), - gas_unit_price: transaction.gasUnitPrice || DEFAULT_GAS_PRICE.toString(), - } + txOptions ); return tx; diff --git a/libs/ledger-live-common/src/families/aptos/js-createTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-createTransaction.ts index 5344a448a74d..80ba702fd1b7 100644 --- a/libs/ledger-live-common/src/families/aptos/js-createTransaction.ts +++ b/libs/ledger-live-common/src/families/aptos/js-createTransaction.ts @@ -1,5 +1,6 @@ import BigNumber from "bignumber.js"; import type { Transaction } from "./types"; +import { DEFAULT_GAS, DEFAULT_GAS_PRICE } from "./logic"; const createTransaction = (): Transaction => ({ family: "aptos", @@ -7,6 +8,15 @@ const createTransaction = (): Transaction => ({ amount: BigNumber(0), recipient: "", useAllAmount: false, + firstEmulation: true, + options: { + maxGasAmount: DEFAULT_GAS.toString(), + gasUnitPrice: DEFAULT_GAS_PRICE.toString(), + }, + estimate: { + maxGasAmount: DEFAULT_GAS.toString(), + gasUnitPrice: DEFAULT_GAS_PRICE.toString(), + }, }); export default createTransaction; diff --git a/libs/ledger-live-common/src/families/aptos/js-estimateMaxSpendable.ts b/libs/ledger-live-common/src/families/aptos/js-estimateMaxSpendable.ts index 94f65ac0285d..8a10658341d2 100644 --- a/libs/ledger-live-common/src/families/aptos/js-estimateMaxSpendable.ts +++ b/libs/ledger-live-common/src/families/aptos/js-estimateMaxSpendable.ts @@ -1,16 +1,12 @@ -import { getAbandonSeedAddress } from "@ledgerhq/cryptoassets"; import type { Account, AccountLike } from "@ledgerhq/types-live"; import { BigNumber } from "bignumber.js"; import { getMainAccount } from "../../account"; -import createTransaction from "./js-createTransaction"; -import getTransactionStatus from "./js-getTransactionStatus"; -import prepareTransaction from "./js-prepareTransaction"; import type { Transaction } from "./types"; +import { getMaxSendBalance } from "./logic"; const estimateMaxSpendable = async ({ account, parentAccount, - transaction, }: { account: AccountLike; parentAccount: Account; @@ -18,16 +14,7 @@ const estimateMaxSpendable = async ({ }): Promise => { const mainAccount = getMainAccount(account, parentAccount); - const t = await prepareTransaction(mainAccount, { - ...createTransaction(), - ...transaction, - recipient: - transaction?.recipient || getAbandonSeedAddress(mainAccount.currency.id), - useAllAmount: true, - }); - - const s = await getTransactionStatus(mainAccount, t); - return s.amount; + return getMaxSendBalance(mainAccount.spendableBalance); }; export default estimateMaxSpendable; diff --git a/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts index 1fe529fc0bc7..ffb6fe17be4c 100644 --- a/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts +++ b/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts @@ -1,22 +1,41 @@ import BigNumber from "bignumber.js"; import { HexString, TxnBuilderTypes } from "aptos"; -import { log } from "@ledgerhq/logs"; import type { Account } from "@ledgerhq/types-live"; import { AptosAPI } from "./api"; import buildTransaction from "./js-buildTransaction"; -import { DEFAULT_GAS, DEFAULT_GAS_PRICE } from "./logic"; -import type { Transaction } from "./types"; +import { DEFAULT_GAS, DEFAULT_GAS_PRICE, ESTIMATE_GAS_MUL } from "./logic"; +import type { Transaction, TransactionErrors } from "./types"; +import { log } from "@ledgerhq/logs"; -export const getEstimatedGas = async ( +type IGetEstimatedGasReturnType = { + fees: BigNumber; + estimate: { + maxGasAmount: string; + gasUnitPrice: string; + sequenceNumber: string; + expirationTimestampSecs: string; + }; + errors: TransactionErrors; +}; + +const CACHE = new Map(); + +export const getFee = async ( account: Account, transaction: Transaction, aptosClient: AptosAPI -) => { +): Promise => { const res = { fees: new BigNumber(0), - gasLimit: DEFAULT_GAS.toString(), - gasUnitPrice: DEFAULT_GAS_PRICE.toString(), + estimate: { + maxGasAmount: transaction.estimate.maxGasAmount, + gasUnitPrice: transaction.estimate.gasUnitPrice, + sequenceNumber: transaction.options.sequenceNumber || "", + expirationTimestampSecs: + transaction.options.expirationTimestampSecs || "", + }, + errors: { ...transaction.errors }, }; try { @@ -24,31 +43,97 @@ export const getEstimatedGas = async ( throw Error("Account public key missing to estimate transaction"); const tx = await buildTransaction(account, transaction, aptosClient); - const pubKeyUint = new HexString(account.xpub as string).toUint8Array(); const publicKeyEd = new TxnBuilderTypes.Ed25519PublicKey(pubKeyUint); const simulation = await aptosClient.simulateTransaction(publicKeyEd, tx); const completedTx = simulation[0]; - if (!completedTx.success) - throw Error( - `Can not simulate aptos transaction: ${completedTx.vm_status}` - ); - - res.fees = res.fees.plus( - BigNumber( - Math.max( - Math.ceil(+completedTx.gas_used * +completedTx.gas_unit_price), - DEFAULT_GAS + if (!completedTx.success) { + switch (true) { + case completedTx.vm_status.includes("SEQUENCE_NUMBER"): { + res.errors.sequenceNumber = completedTx.vm_status; + break; + } + case completedTx.vm_status.includes("TRANSACTION_EXPIRED"): { + res.errors.expirationTimestampSecs = completedTx.vm_status; + break; + } + case completedTx.vm_status.includes("EINSUFFICIENT_BALANCE"): { + // skip, processed in getTransactionStatus + break; + } + default: { + throw Error( + `Simulation failed with following error: ${completedTx.vm_status}` + ); + } + } + } else { + res.estimate.maxGasAmount = BigNumber( + Math.ceil( + completedTx.gas_used + ? +completedTx.gas_used * ESTIMATE_GAS_MUL + : DEFAULT_GAS ) - ) - ); - res.gasLimit = completedTx.gas_used; - res.gasUnitPrice = completedTx.gas_unit_price; + ).toString(); + + if (transaction.skipEmulation) { + res.fees = res.fees + .plus( + BigNumber( + transaction.options.gasUnitPrice || + res.estimate.gasUnitPrice || + DEFAULT_GAS_PRICE + ) + ) + .multipliedBy( + BigNumber( + transaction.options.maxGasAmount || + res.estimate.maxGasAmount || + DEFAULT_GAS + ) + ); + } else { + res.fees = res.fees + .plus(BigNumber(completedTx.gas_unit_price || DEFAULT_GAS_PRICE)) + .multipliedBy(BigNumber(res.estimate.maxGasAmount)); + } + + res.estimate.gasUnitPrice = completedTx.gas_unit_price; + res.estimate.sequenceNumber = completedTx.sequence_number; + res.estimate.expirationTimestampSecs = + completedTx.expiration_timestamp_secs; + } } catch (e: any) { - log("error", e.message); - res.fees = res.fees.plus(DEFAULT_GAS); + log(e.message); + throw e; } + CACHE.delete(getCacheKey(transaction)); return res; }; + +const getCacheKey = (transaction: Transaction): string => + JSON.stringify({ + amount: transaction.amount, + gasUnitPrice: transaction.options.gasUnitPrice, + maxGasAmount: transaction.options.maxGasAmount, + sequenceNumber: transaction.options.sequenceNumber, + expirationTimestampSecs: transaction.options.expirationTimestampSecs, + }); + +export const getEstimatedGas = async ( + account: Account, + transaction: Transaction, + aptosClient: AptosAPI +): Promise => { + const key = getCacheKey(transaction); + + if (CACHE.has(key)) { + return CACHE.get(key); + } + + CACHE.set(key, getFee(account, transaction, aptosClient)); + + return CACHE.get(key); +}; diff --git a/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts b/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts index 82c3720c8e9f..9eb6fa3d77d1 100644 --- a/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts +++ b/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts @@ -4,12 +4,18 @@ import { RecipientRequired, InvalidAddress, FeeNotLoaded, + GasLessThanEstimate, } from "@ledgerhq/errors"; import type { Account } from "@ledgerhq/types-live"; import type { TransactionStatus } from "../..//generated/types"; import type { Transaction } from "./types"; import { isValidAddress } from "./logic"; +import { + SequenseNumberTooNewError, + SequenseNumberTooOldError, + TransactionExpiredError, +} from "./errors"; const getTransactionStatus = async ( a: Account, @@ -25,14 +31,12 @@ const getTransactionStatus = async ( const estimatedFees = t.fees || BigNumber(0); + const amount = t.amount; + const totalSpent = useAllAmount ? a.balance : BigNumber(t.amount).plus(estimatedFees); - const amount = useAllAmount - ? a.balance.minus(estimatedFees) - : BigNumber(t.amount); - if (totalSpent.gt(a.balance)) { errors.amount = new NotEnoughBalance(); } @@ -43,6 +47,34 @@ const getTransactionStatus = async ( errors.recipient = new InvalidAddress(); } + if ( + t.options.maxGasAmount && + t.estimate.maxGasAmount && + +t.options.maxGasAmount < +t.estimate.maxGasAmount + ) { + errors.maxGasAmount = new GasLessThanEstimate(); + } + + if ( + t.options.gasUnitPrice && + t.estimate.gasUnitPrice && + +t.options.gasUnitPrice < +t.estimate.gasUnitPrice + ) { + errors.gasUnitPrice = new GasLessThanEstimate(); + } + + if (t.errors?.sequenceNumber) { + if (t.errors.sequenceNumber.includes("TOO_OLD")) { + errors.sequenceNumber = new SequenseNumberTooOldError(); + } else if (t.errors.sequenceNumber.includes("TOO_NEW")) { + errors.sequenceNumber = new SequenseNumberTooNewError(); + } + } + + if (t.errors?.expirationTimestampSecs) { + errors.expirationTimestampSecs = new TransactionExpiredError(); + } + return Promise.resolve({ errors, warnings, diff --git a/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts index 2fbc2a5200cb..cad3b3513b76 100644 --- a/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts +++ b/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts @@ -1,33 +1,47 @@ import type { Account } from "@ledgerhq/types-live"; +import BigNumber from "bignumber.js"; import { AptosAPI } from "./api"; import { getEstimatedGas } from "./js-getFeesForTransaction"; import type { Transaction } from "./types"; +import { getMaxSendBalance } from "./logic"; const prepareTransaction = async ( account: Account, transaction: Transaction ): Promise => { - let amount = transaction.amount; + if (transaction.amount.isZero() && !transaction.useAllAmount) { + return { + ...transaction, + fees: BigNumber(0), + }; + } + + const amount = transaction.useAllAmount + ? getMaxSendBalance(account.spendableBalance) + : BigNumber(transaction.amount); + const preparedTransaction: Transaction = { + ...transaction, + amount, + }; + const aptosClient = new AptosAPI(account.currency.id); - const { fees, gasLimit, gasUnitPrice } = await getEstimatedGas( + const { fees, estimate, errors } = await getEstimatedGas( account, transaction, aptosClient ); - if (transaction.useAllAmount) { - amount = account.balance.minus(fees); - } + const options = { ...transaction.options }; + if (transaction.firstEmulation) options.maxGasAmount = estimate.maxGasAmount; - const preparedTransaction = { - ...transaction, - amount, - fees, - gasLimit, - gasUnitPrice, - }; + preparedTransaction.fees = fees; + preparedTransaction.estimate = estimate; + preparedTransaction.errors = errors; + preparedTransaction.options = options; + preparedTransaction.firstEmulation = false; + preparedTransaction.skipEmulation = false; return preparedTransaction; }; diff --git a/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts b/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts index 29ec459ae3ea..964b5e7c2b04 100644 --- a/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts +++ b/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts @@ -90,7 +90,7 @@ const getAccountShape: GetAccountShape = async (info) => { const oldOperations = initialAccount?.operations || []; - let xpub; + let xpub = initialAccount?.xpub; if (!initialAccount?.xpub && transport) { const aptos = new Aptos(transport); const r = await aptos.getAddress(derivationPath); diff --git a/libs/ledger-live-common/src/families/aptos/logic.ts b/libs/ledger-live-common/src/families/aptos/logic.ts index 26b39d1883aa..325b11c9b9c3 100644 --- a/libs/ledger-live-common/src/families/aptos/logic.ts +++ b/libs/ledger-live-common/src/families/aptos/logic.ts @@ -1,6 +1,8 @@ import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies"; +import BigNumber from "bignumber.js"; +import { Transaction } from "./types"; -export const DEFAULT_GAS = 500; +export const DEFAULT_GAS = 5; export const DEFAULT_GAS_PRICE = 100; export const ESTIMATE_GAS_MUL = 1.2; @@ -28,3 +30,30 @@ function isValidHex(hex: string): boolean { export function isTestnet(currencyId: string): boolean { return getCryptoCurrencyById(currencyId).isTestnetFor ? true : false; } + +export const getMaxSendBalance = (amount: BigNumber): BigNumber => { + const gas = new BigNumber(DEFAULT_GAS + 2000); + const gasPrice = new BigNumber(DEFAULT_GAS_PRICE); + const totalGas = gas.multipliedBy(gasPrice); + + if (amount.gt(totalGas)) return amount.minus(totalGas); + return amount; +}; + +export function normalizeTransactionOptions( + options: Transaction["options"] +): Transaction["options"] { + const check = (v: any) => { + if (v === undefined || v === null || v === "") { + return undefined; + } + return v; + }; + + return { + maxGasAmount: check(options.maxGasAmount), + gasUnitPrice: check(options.gasUnitPrice), + sequenceNumber: check(options.sequenceNumber), + expirationTimestampSecs: check(options.expirationTimestampSecs), + }; +} diff --git a/libs/ledger-live-common/src/families/aptos/transaction.ts b/libs/ledger-live-common/src/families/aptos/transaction.ts index c7e9779ba3cf..30941f25d8f9 100644 --- a/libs/ledger-live-common/src/families/aptos/transaction.ts +++ b/libs/ledger-live-common/src/families/aptos/transaction.ts @@ -29,15 +29,18 @@ ${mode.toUpperCase()} ${ TO ${recipient} with fees=${fees ? formatCurrencyUnit(getAccountUnit(account), fees) : "?"}`; -export const fromTransactionRaw = (tr: TransactionRaw): Transaction => { - const common = fromTransactionCommonRaw(tr); +export const fromTransactionRaw = (t: TransactionRaw): Transaction => { + const common = fromTransactionCommonRaw(t); return { ...common, - family: tr.family, - mode: tr.mode, - fees: tr.fees ? new BigNumber(tr.fees) : null, - gasLimit: tr.gasLimit, - gasUnitPrice: tr.gasUnitPrice, + family: t.family, + mode: t.mode, + fees: t.fees ? new BigNumber(t.fees) : null, + options: JSON.parse(t.options), + estimate: JSON.parse(t.estimate), + firstEmulation: JSON.parse(t.firstEmulation), + skipEmulation: t.skipEmulation ? JSON.parse(t.skipEmulation) : null, + errors: t.errors ? JSON.parse(t.errors) : {}, }; }; @@ -48,8 +51,11 @@ export const toTransactionRaw = (t: Transaction): TransactionRaw => { family: t.family, mode: t.mode, fees: t.fees ? t.fees.toString() : null, - gasLimit: t.gasLimit, - gasUnitPrice: t.gasUnitPrice, + options: JSON.stringify(t.options), + estimate: JSON.stringify(t.estimate), + firstEmulation: JSON.stringify(t.firstEmulation), + skipEmulation: JSON.stringify(t.skipEmulation || false), + errors: JSON.stringify(t.errors), }; }; diff --git a/libs/ledger-live-common/src/families/aptos/types.ts b/libs/ledger-live-common/src/families/aptos/types.ts index e34df4e421b5..142d2532915c 100644 --- a/libs/ledger-live-common/src/families/aptos/types.ts +++ b/libs/ledger-live-common/src/families/aptos/types.ts @@ -29,18 +29,45 @@ export type AptosResource = any> = { type: string; }; +export interface TransactionEstimate { + maxGasAmount: string; + gasUnitPrice: string; + sequenceNumber?: string; + expirationTimestampSecs?: string; +} + +interface TransactionOptions { + maxGasAmount: string; + gasUnitPrice: string; + sequenceNumber?: string; + expirationTimestampSecs?: string; +} + +export type TransactionErrors = { + maxGasAmount?: string; + gasUnitPrice?: string; + sequenceNumber?: string; + expirationTimestampSecs?: string; +}; + export type Transaction = TransactionCommon & { mode: string; family: "aptos"; fees?: BigNumber | null; - gasLimit?: string; - gasUnitPrice?: string; + options: TransactionOptions; + estimate: TransactionEstimate; + skipEmulation?: boolean; + firstEmulation: boolean; + errors?: TransactionErrors; }; export type TransactionRaw = TransactionCommonRaw & { family: "aptos"; mode: string; fees?: string | null; - gasLimit?: string; - gasUnitPrice?: string; + options: string; + estimate: string; + skipEmulation?: string; + firstEmulation: string; + errors?: string; }; From 3c8d971a4f6e96784d4e77b5cdcf8e86baa7be29 Mon Sep 17 00:00:00 2001 From: Vladyslav Belyokhin Date: Fri, 9 Jun 2023 19:38:56 +0300 Subject: [PATCH 04/85] Fix issues --- .../aptos/ExpirationTimestampField.tsx | 2 +- .../renderer/families/aptos/GasPriceField.tsx | 6 +- .../families/aptos/MaxGasAmountField.tsx | 4 +- .../families/aptos/SendAmountFields.tsx | 25 +- .../families/aptos/SequenceNumberField.tsx | 2 +- .../src/renderer/families/aptos/index.ts | 8 + .../src/renderer/families/aptos/types.ts | 13 + .../src/families/aptos/api/index.ts | 2 +- .../aptos/js-getFeesForTransaction.ts | 6 +- .../families/aptos/js-getTransactionStatus.ts | 10 +- .../src/families/aptos/types.ts | 3 + .../packages/cryptoassets/src/currencies.ts | 2 - pnpm-lock.yaml | 448 ++++++++++++------ 13 files changed, 361 insertions(+), 170 deletions(-) create mode 100644 apps/ledger-live-desktop/src/renderer/families/aptos/index.ts create mode 100644 apps/ledger-live-desktop/src/renderer/families/aptos/types.ts diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx index de3006766688..25b3d5b31a7e 100644 --- a/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx @@ -57,7 +57,7 @@ const ExpirationTimestampField = forwardRef(function ExpirationTimestampComponen [updateTransaction, bridge], ); - const expirationTimestampSecs = localValue ?? ""; + const expirationTimestampSecs = transaction.firstEmulation ? "" : localValue ?? ""; const { expirationTimestampSecs: expirationTimestampSecsError } = status.errors; const { expirationTimestampSecs: expirationTimestampSecsWarning } = status.warnings; diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx index 10cb5ab51b10..31c8475ba8de 100644 --- a/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx @@ -42,7 +42,7 @@ const FeesField = forwardRef(function FeesFieldComponent( (str: string) => { if (str && !BigNumber(str).isFinite()) return; setLocalValue(str); - updateTransaction(transaction => + updateTransaction((transaction: AptosTransaction) => bridge.updateTransaction(transaction, { options: { ...transaction.options, @@ -55,7 +55,9 @@ const FeesField = forwardRef(function FeesFieldComponent( [updateTransaction, bridge], ); - const gasUnitPrice = localValue ?? transaction.estimate.gasUnitPrice; + const gasUnitPrice = transaction.firstEmulation + ? transaction.estimate.gasUnitPrice + : localValue ?? transaction.options.gasUnitPrice ?? transaction.estimate.gasUnitPrice; const { gasUnitPrice: gasPriceError } = status.errors; const { gasUnitPrice: gasPriceWarning } = status.warnings; return ( diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx index 78bbc12fd801..3552c02c077e 100644 --- a/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx @@ -56,7 +56,9 @@ const MaxGasAmountField = forwardRef(function MaxGasAmountFieldComponent( [bridge, updateTransaction], ); - const maxGasAmount = localValue ?? transaction.estimate.maxGasAmount; + const maxGasAmount = transaction.firstEmulation + ? transaction.estimate.maxGasAmount + : localValue ?? transaction.options.maxGasAmount ?? transaction.estimate.maxGasAmount; const { maxGasAmount: maxGasAmountError } = status.errors; const { maxGasAmount: maxGasAmountWarning } = status.warnings; diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx index 0088c9eb8250..1f4f2b96cd6e 100644 --- a/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx @@ -1,9 +1,7 @@ import invariant from "invariant"; -import React, { useState, useCallback, useRef, useMemo, useEffect } from "react"; +import React, { useState, useCallback, useRef, useMemo } from "react"; import { useTranslation } from "react-i18next"; -import { Account, FeeStrategy } from "@ledgerhq/types-live"; -import { Transaction, TransactionStatus } from "@ledgerhq/live-common/generated/types"; -import { Result } from "@ledgerhq/live-common/lib/bridge/useBridgeTransaction"; +import { Transaction } from "@ledgerhq/live-common/generated/types"; import Button from "~/renderer/components/Button"; import Box from "~/renderer/components/Box"; import Label from "~/renderer/components/Label"; @@ -13,23 +11,12 @@ import GasPriceField from "./GasPriceField"; import MaxGasAmountField from "./MaxGasAmountField"; import SequenceNumberField from "./SequenceNumberField"; import ExpirationTimestampField from "./ExpirationTimestampField"; +import { AptosFamily } from "./types"; type AptosTransaction = Extract; -type Props = { - account: Account; - parentAccount: Account | undefined | null; - transaction: AptosTransaction; - onChange: (a: AptosTransaction) => void; - status: TransactionStatus; - bridgePending: boolean; - updateTransaction: Result["updateTransaction"]; - mapStrategies?: ( - a: FeeStrategy, - ) => FeeStrategy & { - [x: string]: any; - }; - trackProperties?: object; -}; + +type Props = NonNullable["component"]; + const Fields = ({ account, parentAccount, transaction, updateTransaction, status }: Props) => { invariant(transaction.family === "aptos", "SendAmountFields: aptos family expected"); const mainAccount = getMainAccount(account, parentAccount); diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/SequenceNumberField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/SequenceNumberField.tsx index 8433fcba0ac4..aaf88314e1b4 100644 --- a/apps/ledger-live-desktop/src/renderer/families/aptos/SequenceNumberField.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/SequenceNumberField.tsx @@ -57,7 +57,7 @@ const SequenceNumberField = forwardRef(function SequenceNumberFieldComponent( [updateTransaction, bridge], ); - const sequenceNumber = localValue ?? ""; + const sequenceNumber = transaction.firstEmulation ? "" : localValue ?? ""; const { sequenceNumber: sequenceNumberError } = status.errors; const { sequenceNumber: sequenceNumberWarning } = status.warnings; diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/index.ts b/apps/ledger-live-desktop/src/renderer/families/aptos/index.ts new file mode 100644 index 000000000000..8a65592ea948 --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/index.ts @@ -0,0 +1,8 @@ +import sendAmountFields from "./SendAmountFields"; +import { AptosFamily } from "./types"; + +const family: AptosFamily = { + sendAmountFields, +}; + +export default family; diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/types.ts b/apps/ledger-live-desktop/src/renderer/families/aptos/types.ts new file mode 100644 index 000000000000..1acadc8e40d8 --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/types.ts @@ -0,0 +1,13 @@ +import { + AptosAccount, + Transaction, + TransactionStatus, +} from "../../../../../../libs/ledger-live-common/src/families/aptos/types.ts"; // TODO: use correct path after hw-app-aptos release +import { FieldComponentProps, LLDCoinFamily } from "../types"; + +export type AptosFamily = LLDCoinFamily; +export type AptosFieldComponentProps = FieldComponentProps< + AptosAccount, + Transaction, + TransactionStatus +>; diff --git a/libs/ledger-live-common/src/families/aptos/api/index.ts b/libs/ledger-live-common/src/families/aptos/api/index.ts index 18efcc08ab57..88feb4d53409 100644 --- a/libs/ledger-live-common/src/families/aptos/api/index.ts +++ b/libs/ledger-live-common/src/families/aptos/api/index.ts @@ -1,7 +1,7 @@ import { AptosClient, TxnBuilderTypes } from "aptos"; import type { Types as AptosTypes } from "aptos"; import BigNumber from "bignumber.js"; -import network from "../../../network"; +import network from "@ledgerhq/live-network/network"; import { getEnv } from "../../../env"; // import { isTestnet } from "../logic"; diff --git a/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts index ffb6fe17be4c..d16d53296779 100644 --- a/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts +++ b/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts @@ -77,7 +77,11 @@ export const getFee = async ( ) ).toString(); - if (transaction.skipEmulation) { + if ( + transaction.skipEmulation || + +transaction.options.gasUnitPrice !== DEFAULT_GAS_PRICE || + +transaction.options.maxGasAmount !== DEFAULT_GAS + ) { res.fees = res.fees .plus( BigNumber( diff --git a/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts b/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts index 9eb6fa3d77d1..f7d4a8048219 100644 --- a/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts +++ b/libs/ledger-live-common/src/families/aptos/js-getTransactionStatus.ts @@ -10,7 +10,7 @@ import type { Account } from "@ledgerhq/types-live"; import type { TransactionStatus } from "../..//generated/types"; import type { Transaction } from "./types"; -import { isValidAddress } from "./logic"; +import { isValidAddress, DEFAULT_GAS } from "./logic"; import { SequenseNumberTooNewError, SequenseNumberTooOldError, @@ -22,7 +22,7 @@ const getTransactionStatus = async ( t: Transaction ): Promise => { const errors: Record = {}; - const warnings = {}; + const warnings: Record = {}; const useAllAmount = !!t.useAllAmount; if (!t.fees) { @@ -52,7 +52,11 @@ const getTransactionStatus = async ( t.estimate.maxGasAmount && +t.options.maxGasAmount < +t.estimate.maxGasAmount ) { - errors.maxGasAmount = new GasLessThanEstimate(); + if (+t.options.maxGasAmount >= DEFAULT_GAS) { + warnings.maxGasAmount = new GasLessThanEstimate(); + } else { + errors.maxGasAmount = new GasLessThanEstimate(); + } } if ( diff --git a/libs/ledger-live-common/src/families/aptos/types.ts b/libs/ledger-live-common/src/families/aptos/types.ts index 142d2532915c..c6c78efdf2c6 100644 --- a/libs/ledger-live-common/src/families/aptos/types.ts +++ b/libs/ledger-live-common/src/families/aptos/types.ts @@ -5,6 +5,7 @@ import type { TransactionCommonRaw, TransactionStatusCommon, TransactionStatusCommonRaw, + Account, } from "@ledgerhq/types-live"; export type AptosTransaction = AptosTypes.UserTransaction & { @@ -14,6 +15,8 @@ export type AptosTransaction = AptosTypes.UserTransaction & { }; }; +export type AptosAccount = Account; + export type TransactionStatus = TransactionStatusCommon; export type TransactionStatusRaw = TransactionStatusCommonRaw; diff --git a/libs/ledgerjs/packages/cryptoassets/src/currencies.ts b/libs/ledgerjs/packages/cryptoassets/src/currencies.ts index 344af973b935..9feaa520dad2 100644 --- a/libs/ledgerjs/packages/cryptoassets/src/currencies.ts +++ b/libs/ledgerjs/packages/cryptoassets/src/currencies.ts @@ -92,7 +92,6 @@ export const cryptocurrenciesById: Record = { name: "Aptos", managerAppName: "Aptos", ticker: "APT", - countervalueTicker: "APT", scheme: "aptos", color: "#231F20", family: "aptos", @@ -118,7 +117,6 @@ export const cryptocurrenciesById: Record = { name: "Aptos (Testnet)", managerAppName: "Aptos", ticker: "APT", - countervalueTicker: "APT", scheme: "aptos_testnet", color: "#231F20", family: "aptos", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 29a26d968ec1..6d16ab7b0cb1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1504,10 +1504,10 @@ importers: version: 6.0.1 ts-jest: specifier: ^28.0.8 - version: 28.0.8(@babel/core@7.21.0)(babel-jest@28.1.3)(jest@28.1.3)(typescript@4.9.5) + version: 28.0.8(@babel/core@7.21.0)(babel-jest@28.1.3)(jest@28.1.3) ts-node: specifier: ^10.4.0 - version: 10.9.1(typescript@4.9.5) + version: 10.9.1 tslib: specifier: ^2.5.0 version: 2.5.0 @@ -1713,10 +1713,10 @@ importers: version: 4.14.191 '@typescript-eslint/eslint-plugin': specifier: ^5.46.1 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@7.32.0)(typescript@4.9.5) + version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@7.32.0) '@typescript-eslint/parser': specifier: ^5.46.1 - version: 5.57.0(eslint@7.32.0)(typescript@4.9.5) + version: 5.57.0(eslint@7.32.0) eslint: specifier: ^7.32.0 version: 7.32.0 @@ -1725,7 +1725,7 @@ importers: version: 8.5.0(eslint@7.32.0) eslint-config-typescript: specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@5.57.0)(@typescript-eslint/parser@5.57.0)(eslint@7.32.0)(typescript@4.9.5) + version: 3.0.0(@typescript-eslint/eslint-plugin@5.57.0)(@typescript-eslint/parser@5.57.0)(eslint@7.32.0) eslint-formatter-pretty: specifier: ^3.0.1 version: 3.0.1 @@ -1743,7 +1743,7 @@ importers: version: 2.8.3 ts-jest: specifier: ^28.0.5 - version: 28.0.8(jest@28.1.3)(typescript@4.9.5) + version: 28.0.8(jest@28.1.3) libs/coin-framework: dependencies: @@ -2264,6 +2264,9 @@ importers: '@ledgerhq/wallet-api-server': specifier: ^0.13.3 version: 0.13.4(react@17.0.2) + '@noble/hashes': + specifier: ^1.1.7 + version: 1.3.0 '@solana/spl-token': specifier: ^0.2.0 version: 0.2.0 @@ -2312,6 +2315,15 @@ importers: '@zondax/ledger-filecoin': specifier: ^0.11.2 version: 0.11.2 + algo-msgpack-with-bigint: + specifier: ^2.1.1 + version: 2.1.1 + algosdk: + specifier: 1.13.0 + version: 1.13.0 + aptos: + specifier: 1.3.16 + version: 1.3.16 async: specifier: ^3.2.3 version: 3.2.3 @@ -4330,10 +4342,10 @@ importers: version: 29.5.0 '@typescript-eslint/eslint-plugin': specifier: ^5.46.1 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@7.32.0)(typescript@4.9.5) + version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@7.32.0) '@typescript-eslint/parser': specifier: ^5.46.1 - version: 5.57.0(eslint@7.32.0)(typescript@4.9.5) + version: 5.57.0(eslint@7.32.0) eslint: specifier: ^7.32.0 version: 7.32.0 @@ -4342,7 +4354,7 @@ importers: version: 8.5.0(eslint@7.32.0) eslint-config-typescript: specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@5.57.0)(@typescript-eslint/parser@5.57.0)(eslint@7.32.0)(typescript@4.9.5) + version: 3.0.0(@typescript-eslint/eslint-plugin@5.57.0)(@typescript-eslint/parser@5.57.0)(eslint@7.32.0) eslint-formatter-pretty: specifier: ^3.0.1 version: 3.0.1 @@ -4360,7 +4372,7 @@ importers: version: 2.8.3 ts-jest: specifier: ^28.0.5 - version: 28.0.8(jest@28.1.3)(typescript@4.9.5) + version: 28.0.8(jest@28.1.3) libs/live-portfolio: dependencies: @@ -6021,19 +6033,19 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-create-class-features-plugin@7.21.4: - resolution: {integrity: sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==} + /@babel/helper-create-class-features-plugin@7.17.9(@babel/core@7.9.0): + resolution: {integrity: sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: + '@babel/core': 7.9.0 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.21.0 - '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-member-expression-to-functions': 7.17.7 + '@babel/helper-optimise-call-expression': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color @@ -6073,7 +6085,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.21.0): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} @@ -6219,7 +6230,7 @@ packages: '@babel/core': ^7.4.0-0 dependencies: '@babel/helper-compilation-targets': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.1 @@ -6367,9 +6378,9 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.22.1 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.21.4 + '@babel/types': 7.22.4 transitivePeerDependencies: - supports-color @@ -6608,8 +6619,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-remap-async-to-generator': 7.18.9 '@babel/plugin-syntax-async-generators': 7.8.4 transitivePeerDependencies: @@ -6673,8 +6684,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-create-class-features-plugin': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-create-class-features-plugin': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color @@ -6891,7 +6902,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3 /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.0): @@ -6994,7 +7005,7 @@ packages: dependencies: '@babel/compat-data': 7.21.4 '@babel/helper-compilation-targets': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3 '@babel/plugin-transform-parameters': 7.21.3 @@ -7040,7 +7051,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3 /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.0): @@ -7080,7 +7091,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-syntax-optional-chaining': 7.8.3 @@ -7212,7 +7223,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -7243,7 +7254,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.0): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -7278,14 +7289,14 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.9.0 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-dynamic-import@7.8.3: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} @@ -7352,7 +7363,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.9.0 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.21.0): resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} @@ -7490,7 +7501,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -7498,7 +7509,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.0): @@ -7522,7 +7533,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -7545,7 +7556,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -7614,7 +7625,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.9.0 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-arrow-functions@7.16.7(@babel/core@7.21.0): resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} @@ -7631,7 +7642,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} @@ -7671,7 +7682,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-remap-async-to-generator': 7.18.9 transitivePeerDependencies: - supports-color @@ -7717,7 +7728,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} @@ -7752,7 +7763,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} @@ -7798,11 +7809,11 @@ packages: dependencies: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-compilation-targets': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.22.1 '@babel/helper-function-name': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.22.1 '@babel/helper-split-export-declaration': 7.18.6 globals: 11.12.0 transitivePeerDependencies: @@ -7861,8 +7872,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 - '@babel/template': 7.20.7 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/template': 7.21.9 /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} @@ -7899,7 +7910,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.0): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} @@ -8059,7 +8070,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} @@ -8098,7 +8109,7 @@ packages: dependencies: '@babel/helper-compilation-targets': 7.21.4 '@babel/helper-function-name': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -8137,7 +8148,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} @@ -8182,7 +8193,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} @@ -8260,7 +8271,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-simple-access': 7.20.2 transitivePeerDependencies: - supports-color @@ -8386,7 +8397,7 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/helper-create-regexp-features-plugin': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.0): resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} @@ -8472,8 +8483,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.22.1 transitivePeerDependencies: - supports-color @@ -8516,7 +8527,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.12.9): resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} @@ -8525,7 +8536,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.9 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.0): @@ -8573,7 +8584,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} @@ -8608,7 +8619,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-react-display-name@7.16.7(@babel/core@7.21.0): resolution: {integrity: sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==} @@ -8678,7 +8689,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.9.0 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-react-jsx-source@7.19.6: resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} @@ -8704,7 +8715,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.9.0 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-react-jsx@7.18.10: resolution: {integrity: sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==} @@ -8714,9 +8725,9 @@ packages: dependencies: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-jsx': 7.18.6 - '@babel/types': 7.21.4 + '@babel/types': 7.22.4 /@babel/plugin-transform-react-jsx@7.18.10(@babel/core@7.21.0): resolution: {integrity: sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==} @@ -8867,7 +8878,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} @@ -8903,7 +8914,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.0): @@ -8941,7 +8952,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} @@ -8976,7 +8987,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} @@ -9055,8 +9066,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.9.0 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.9.0) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-create-class-features-plugin': 7.17.9(@babel/core@7.9.0) + '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-typescript': 7.17.10(@babel/core@7.9.0) transitivePeerDependencies: - supports-color @@ -9096,7 +9107,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/helper-create-regexp-features-plugin': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} @@ -10156,15 +10167,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.0 '@commitlint/types': 17.4.0 - '@types/node': 20.2.5 + '@types/node': 18.15.11 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.3.0(@types/node@20.2.5)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@4.9.5) + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@4.9.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@20.2.5)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.15.11)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -13820,7 +13831,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 20.2.5 + '@types/node': 18.15.11 chalk: 4.1.2 jest-message-util: 28.1.3 jest-util: 28.1.3 @@ -14388,7 +14399,7 @@ packages: '@jest/transform': 28.1.3 '@jest/types': 28.1.3 '@jridgewell/trace-mapping': 0.3.17 - '@types/node': 20.2.5 + '@types/node': 18.15.11 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -14427,7 +14438,7 @@ packages: '@jest/transform': 28.1.3(metro@0.76.0) '@jest/types': 28.1.3 '@jridgewell/trace-mapping': 0.3.17 - '@types/node': 20.2.5 + '@types/node': 18.15.11 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -14839,7 +14850,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.2.5 + '@types/node': 18.15.11 '@types/yargs': 17.0.10 chalk: 4.1.2 @@ -15748,7 +15759,7 @@ packages: styled-components: '*' dependencies: '@babel/runtime': 7.20.13 - '@polkadot/keyring': 10.3.1(@polkadot/util-crypto@10.3.1)(@polkadot/util@10.3.1) + '@polkadot/keyring': 10.3.1 '@polkadot/ui-settings': 2.11.1 '@polkadot/ui-shared': 2.11.1(@polkadot/util-crypto@10.3.1)(@polkadot/util@10.3.1) '@polkadot/util': 10.3.1 @@ -20819,7 +20830,7 @@ packages: find-cache-dir: 3.3.2 flat-cache: 3.0.4 micromatch: 4.0.5 - react-docgen-typescript: 2.2.2(typescript@4.9.5) + react-docgen-typescript: 2.2.2 tslib: 2.5.2 typescript: 4.9.5 webpack: 4.46.0 @@ -20838,7 +20849,7 @@ packages: find-cache-dir: 3.3.2 flat-cache: 3.0.4 micromatch: 4.0.5 - react-docgen-typescript: 2.2.2(typescript@4.9.5) + react-docgen-typescript: 2.2.2 tslib: 2.5.2 typescript: 4.9.5 webpack: 5.76.1(metro@0.76.0) @@ -22327,7 +22338,7 @@ packages: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 20.2.5 + '@types/node': 18.15.11 dev: true /@types/fs-extra@9.0.13: @@ -22345,7 +22356,7 @@ packages: /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 20.2.5 + '@types/node': 18.15.11 /@types/hammerjs@2.0.41: resolution: {integrity: sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==} @@ -22503,7 +22514,7 @@ packages: /@types/jsonfile@6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 20.2.5 + '@types/node': 18.15.11 dev: true /@types/jsonwebtoken@8.5.8: @@ -23496,6 +23507,33 @@ packages: - supports-color dev: true + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@7.32.0): + resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.0 + '@typescript-eslint/parser': 5.57.0(eslint@7.32.0) + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/type-utils': 5.57.0(eslint@7.32.0) + '@typescript-eslint/utils': 5.57.0(eslint@7.32.0) + debug: 4.3.4 + eslint: 7.32.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.3.8 + tsutils: 3.21.0 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -23518,12 +23556,13 @@ packages: ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.3.8 - tsutils: 3.21.0 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.15.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.15.0): resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -23535,18 +23574,17 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.57.0(eslint@8.15.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.57.0(eslint@8.15.0) '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/type-utils': 5.57.0(eslint@8.15.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.57.0(eslint@8.15.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.57.0(eslint@8.15.0) + '@typescript-eslint/utils': 5.57.0(eslint@8.15.0) debug: 4.3.4 eslint: 8.15.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.3.8 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0 transitivePeerDependencies: - supports-color dev: false @@ -23807,6 +23845,25 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@5.57.0(eslint@7.32.0): + resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/typescript-estree': 5.57.0 + debug: 4.3.4 + eslint: 7.32.0 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@5.57.0(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -23827,7 +23884,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.57.0(eslint@8.15.0)(typescript@4.9.5): + /@typescript-eslint/parser@5.57.0(eslint@8.15.0): resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -23842,7 +23899,6 @@ packages: '@typescript-eslint/typescript-estree': 5.57.0 debug: 4.3.4 eslint: 8.15.0 - typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false @@ -23949,6 +24005,25 @@ packages: - supports-color dev: true + /@typescript-eslint/type-utils@5.57.0(eslint@7.32.0): + resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.57.0 + '@typescript-eslint/utils': 5.57.0(eslint@7.32.0) + debug: 4.3.4 + eslint: 7.32.0 + tsutils: 3.21.0 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/type-utils@5.57.0(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -23969,7 +24044,7 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@5.57.0(eslint@8.15.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.57.0(eslint@8.15.0): resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -23979,12 +24054,11 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.57.0(typescript@4.9.5) - '@typescript-eslint/utils': 5.57.0(eslint@8.15.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.57.0 + '@typescript-eslint/utils': 5.57.0(eslint@8.15.0) debug: 4.3.4 eslint: 8.15.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0 transitivePeerDependencies: - supports-color dev: false @@ -24180,6 +24254,27 @@ packages: transitivePeerDependencies: - supports-color + /@typescript-eslint/typescript-estree@5.57.0(typescript@4.9.5): + resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/visitor-keys': 5.57.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.23.0(eslint@8.15.0): resolution: {integrity: sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -24238,6 +24333,26 @@ packages: - typescript dev: true + /@typescript-eslint/utils@5.57.0(eslint@7.32.0): + resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@7.32.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/typescript-estree': 5.57.0 + eslint: 7.32.0 + eslint-scope: 5.1.1 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/utils@5.57.0(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -24258,7 +24373,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.57.0(eslint@8.15.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.57.0(eslint@8.15.0): resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -24269,7 +24384,7 @@ packages: '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.57.0 '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.57.0 eslint: 8.15.0 eslint-scope: 5.1.1 semver: 7.3.8 @@ -29309,7 +29424,7 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig-typescript-loader@4.3.0(@types/node@20.2.5)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@4.9.5): + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@4.9.5): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -29318,9 +29433,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 20.2.5 + '@types/node': 18.15.11 cosmiconfig: 8.0.0 - ts-node: 10.9.1(@types/node@20.2.5)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.15.11)(typescript@4.9.5) typescript: 4.9.5 dev: true @@ -32447,14 +32562,14 @@ packages: '@babel/core': 7.21.0 '@babel/eslint-parser': 7.18.9(@babel/core@7.21.0)(eslint@8.15.0) '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.15.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.57.0(eslint@8.15.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.15.0) + '@typescript-eslint/parser': 5.57.0(eslint@8.15.0) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.15.0 eslint-plugin-flowtype: 8.0.3(eslint@8.15.0) eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.57.0)(eslint@8.15.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.15.0)(jest@27.5.1)(typescript@4.9.5) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.15.0)(jest@27.5.1) eslint-plugin-jsx-a11y: 6.6.1(eslint@8.15.0) eslint-plugin-react: 7.31.10(eslint@8.15.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.15.0) @@ -32508,6 +32623,19 @@ packages: eslint: 7.32.0 dev: true + /eslint-config-typescript@3.0.0(@typescript-eslint/eslint-plugin@5.57.0)(@typescript-eslint/parser@5.57.0)(eslint@7.32.0): + resolution: {integrity: sha512-CwC2cQ29OLE1OUw0k+Twpc6wpCdenG8rrErl89sWrzmMpWfkulyeQS1HJhhjU0B3Tb4k41zdei4LtX26x5m60Q==} + peerDependencies: + '@typescript-eslint/eslint-plugin': '>=1.8.0' + '@typescript-eslint/parser': '>=1.8.0' + eslint: '>=6.0.0' + typescript: '*' + dependencies: + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@7.32.0) + '@typescript-eslint/parser': 5.57.0(eslint@7.32.0) + eslint: 7.32.0 + dev: true + /eslint-config-typescript@3.0.0(@typescript-eslint/eslint-plugin@5.57.0)(@typescript-eslint/parser@5.57.0)(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-CwC2cQ29OLE1OUw0k+Twpc6wpCdenG8rrErl89sWrzmMpWfkulyeQS1HJhhjU0B3Tb4k41zdei4LtX26x5m60Q==} peerDependencies: @@ -32712,7 +32840,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.15.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.57.0(eslint@8.15.0) debug: 3.2.7 eslint-import-resolver-node: 0.3.6 find-up: 2.1.0 @@ -32937,7 +33065,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.57.0(eslint@7.32.0) array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 @@ -32968,7 +33096,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.15.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.57.0(eslint@8.15.0) array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 @@ -33038,7 +33166,7 @@ packages: - typescript dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.15.0)(jest@27.5.1)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.15.0)(jest@27.5.1): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -33051,8 +33179,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.15.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.3.1(eslint@8.15.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.15.0) + '@typescript-eslint/experimental-utils': 5.3.1(eslint@8.15.0) eslint: 8.15.0 jest: 27.5.1 transitivePeerDependencies: @@ -33548,7 +33676,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.57.0(eslint@8.15.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.57.0(eslint@8.15.0) eslint: 8.15.0 transitivePeerDependencies: - supports-color @@ -39611,7 +39739,7 @@ packages: pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.7.0(@types/node@18.15.11)(source-map-support@0.5.21)(typescript@4.9.5) + ts-node: 10.7.0(@types/node@18.15.11)(source-map-support@0.5.21) transitivePeerDependencies: - metro - supports-color @@ -39652,7 +39780,7 @@ packages: pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.7.0(@types/node@18.15.3)(source-map-support@0.5.21)(typescript@4.9.5) + ts-node: 10.7.0(@types/node@18.15.3)(source-map-support@0.5.21) transitivePeerDependencies: - metro - supports-color @@ -39693,7 +39821,7 @@ packages: pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.15.3)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.15.3) transitivePeerDependencies: - metro - supports-color @@ -39814,7 +39942,7 @@ packages: pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(typescript@4.9.5) + ts-node: 10.9.1 transitivePeerDependencies: - metro - supports-color @@ -39855,7 +39983,7 @@ packages: pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.7.0(@types/node@18.15.11)(source-map-support@0.5.21)(typescript@4.9.5) + ts-node: 10.7.0(@types/node@18.15.11)(source-map-support@0.5.21) transitivePeerDependencies: - metro - supports-color @@ -39896,7 +40024,7 @@ packages: pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.15.3)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.15.3) transitivePeerDependencies: - metro - supports-color @@ -39936,7 +40064,7 @@ packages: pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(typescript@4.9.5) + ts-node: 10.9.1 transitivePeerDependencies: - metro - supports-color @@ -40144,7 +40272,7 @@ packages: '@jest/environment': 28.1.3 '@jest/fake-timers': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 20.2.5 + '@types/node': 18.15.11 jest-mock: 28.1.3 jest-util: 28.1.3 dev: true @@ -40330,7 +40458,7 @@ packages: dependencies: '@jest/types': 28.1.3 '@types/graceful-fs': 4.1.5 - '@types/node': 20.2.5 + '@types/node': 18.15.11 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -40823,7 +40951,7 @@ packages: '@jest/test-result': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 20.2.5 + '@types/node': 18.15.11 chalk: 4.1.2 emittery: 0.10.2 graceful-fs: 4.2.10 @@ -40853,7 +40981,7 @@ packages: '@jest/test-result': 28.1.3 '@jest/transform': 28.1.3(metro@0.76.0) '@jest/types': 28.1.3 - '@types/node': 20.2.5 + '@types/node': 18.15.11 chalk: 4.1.2 emittery: 0.10.2 graceful-fs: 4.2.10 @@ -41182,7 +41310,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 20.2.5 + '@types/node': 18.15.11 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -41204,7 +41332,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.15.11 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -41318,7 +41446,7 @@ packages: dependencies: '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 20.2.5 + '@types/node': 18.15.11 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 @@ -41457,7 +41585,7 @@ packages: metro: optional: true dependencies: - '@types/node': 20.2.5 + '@types/node': 18.15.11 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -41470,7 +41598,7 @@ packages: metro: optional: true dependencies: - '@types/node': 20.2.5 + '@types/node': 18.15.11 merge-stream: 2.0.0 metro: 0.76.0 supports-color: 8.1.1 @@ -55825,6 +55953,39 @@ packages: yargs-parser: 21.1.1 dev: true + /ts-jest@28.0.8(jest@28.1.3)(typescript@4.9.5): + resolution: {integrity: sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^28.0.0 + babel-jest: ^28.0.0 + esbuild: '*' + jest: ^28.0.0 + typescript: '>=4.3' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 28.1.3 + jest-util: 28.1.3 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.8 + typescript: 4.9.5 + yargs-parser: 21.1.1 + dev: true + /ts-node@10.7.0(@types/node@17.0.32): resolution: {integrity: sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==} hasBin: true @@ -55921,7 +56082,7 @@ packages: - source-map-support dev: true - /ts-node@10.9.1(@types/node@18.15.3)(source-map-support@0.5.21)(typescript@4.9.5): + /ts-node@10.9.1: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -55935,26 +56096,24 @@ packages: '@swc/wasm': optional: true dependencies: - '@cspotcode/source-map-support': 0.8.1(source-map-support@0.5.21) + '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 18.15.3 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 transitivePeerDependencies: - source-map-support dev: true - /ts-node@10.9.1(@types/node@18.15.3)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.15.11)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -55973,20 +56132,21 @@ packages: '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 18.15.3 + '@types/node': 18.15.11 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 transitivePeerDependencies: - source-map-support dev: true - /ts-node@10.9.1(@types/node@20.2.5)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.15.3): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -56005,21 +56165,20 @@ packages: '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 20.2.5 + '@types/node': 18.15.3 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 transitivePeerDependencies: - source-map-support dev: true - /ts-node@10.9.1(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.15.3)(source-map-support@0.5.21): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -56038,6 +56197,7 @@ packages: '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 + '@types/node': 18.15.3 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -56201,6 +56361,16 @@ packages: dependencies: tslib: 1.14.1 + /tsutils@3.21.0(typescript@4.9.5): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.9.5 + dev: true + /tty-browserify@0.0.0: resolution: {integrity: sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=} From d6398a28e5ac04b85165ff43269af30cb94c2656 Mon Sep 17 00:00:00 2001 From: Vladyslav Belyokhin Date: Tue, 20 Jun 2023 16:35:32 +0300 Subject: [PATCH 05/85] Update dictionary --- apps/ledger-live-desktop/static/i18n/ar/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/de/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/es/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/fr/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/hu/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/ja/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/ko/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/nl/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/no/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/pl/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/pt-BR/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/pt/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/ru/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/sr/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/sv/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/tr/app.json | 8 ++++++++ apps/ledger-live-desktop/static/i18n/zh/app.json | 8 ++++++++ 17 files changed, 136 insertions(+) diff --git a/apps/ledger-live-desktop/static/i18n/ar/app.json b/apps/ledger-live-desktop/static/i18n/ar/app.json index b807deff4638..9204e36d2917 100644 --- a/apps/ledger-live-desktop/static/i18n/ar/app.json +++ b/apps/ledger-live-desktop/static/i18n/ar/app.json @@ -2215,6 +2215,14 @@ "ethereumGasPrice" : "سعر الغاز", "ethereumMaxFee" : "الحد الأقصى للرسوم ({{unitName}})", "ethereumPriorityFee" : "الحد الأقصى لرسوم الأولوية ({{unitName}})", + "aptosGasFee": "رسوم الغاز", + "aptosGasLimit": "حد الغاز", + "aptosGasPrice": "(OCTAS) سعر الغاز", + "aptosSetOptimalGas": "ضبط الغاز الأمثل", + "aptosAdditionalSettings": "إعدادات إضافية", + "aptosSequenceNumber": "رقم التسلسل", + "aptosExpTimestamp": "إكسب. الطابع الزمني", + "aptosResetSettings": "اعادة الضبط", "nextBlock" : "الكتلة التالية", "suggested" : "مُقترح", "unitPerByte" : "{{unit}} لكل بايت", diff --git a/apps/ledger-live-desktop/static/i18n/de/app.json b/apps/ledger-live-desktop/static/i18n/de/app.json index 210c2cc1ce20..244653867b9b 100644 --- a/apps/ledger-live-desktop/static/i18n/de/app.json +++ b/apps/ledger-live-desktop/static/i18n/de/app.json @@ -2215,6 +2215,14 @@ "ethereumGasPrice" : "Gaspreis", "ethereumMaxFee" : "Max. Gebühr ({{unitName}})", "ethereumPriorityFee" : "Max. Prioritätsgebühr ({{unitName}})", + "aptosGasFee": "Gasgebühr", + "aptosGasLimit": "Gaslimit", + "aptosGasPrice": "Gaspreis (OCTAS)", + "aptosSetOptimalGas": "OPTIMALES GAS EINSTELLEN", + "aptosAdditionalSettings": "Zusätzliche Einstellungen", + "aptosSequenceNumber": "Sequenznummer", + "aptosExpTimestamp": "Exp. Zeitstempel", + "aptosResetSettings": "EINSTELLUNGEN ZURÜCKSETZEN", "nextBlock" : "Nächster Block", "suggested" : "Empfohlen", "unitPerByte" : "{{unit}} pro Byte", diff --git a/apps/ledger-live-desktop/static/i18n/es/app.json b/apps/ledger-live-desktop/static/i18n/es/app.json index 70d5f082272a..39c4216165e7 100644 --- a/apps/ledger-live-desktop/static/i18n/es/app.json +++ b/apps/ledger-live-desktop/static/i18n/es/app.json @@ -2215,6 +2215,14 @@ "ethereumGasPrice" : "Precio de gas", "ethereumMaxFee" : "Tarifa máxima ({{unitName}})", "ethereumPriorityFee" : "Tarifa de prioridad máxima ({{unitName}})", + "aptosGasFee": "Tarifa de gasolina", + "aptosGasLimit": "Límite de gas", + "aptosGasPrice": "Precio Gas (OCTAS)", + "aptosSetOptimalGas": "ESTABLECER GAS ÓPTIMO", + "aptosAdditionalSettings": "Ajustes adicionales", + "aptosSequenceNumber": "Secuencia de números", + "aptosExpTimestamp": "Exp. marca de tiempo", + "aptosResetSettings": "REINICIAR AJUSTES", "nextBlock" : "Siguiente bloque", "suggested" : "Sugerida", "unitPerByte" : "{{unit}} por byte", diff --git a/apps/ledger-live-desktop/static/i18n/fr/app.json b/apps/ledger-live-desktop/static/i18n/fr/app.json index 2214e35f26ed..7e0edaf93eb9 100644 --- a/apps/ledger-live-desktop/static/i18n/fr/app.json +++ b/apps/ledger-live-desktop/static/i18n/fr/app.json @@ -2215,6 +2215,14 @@ "ethereumGasPrice" : "Prix du gaz", "ethereumMaxFee" : "Frais maximaux ({{unitName}})", "ethereumPriorityFee" : "Frais de priorité maximaux ({{unitName}})", + "aptosGasFee": "Frais de gaz", + "aptosGasLimit": "Limite de gaz", + "aptosGasPrice": "Prix du gaz (OCTAS)", + "aptosSetOptimalGas": "RÉGLER LE GAZ OPTIMAL", + "aptosAdditionalSettings": "Paramètres additionnels", + "aptosSequenceNumber": "Numéro de séquence", + "aptosExpTimestamp": "Exp. Horodatage", + "aptosResetSettings": "RÉINITIALISER LES OPTIONS", "nextBlock" : "Bloc suivant", "suggested" : "Suggérés", "unitPerByte" : "{{unit}} par byte", diff --git a/apps/ledger-live-desktop/static/i18n/hu/app.json b/apps/ledger-live-desktop/static/i18n/hu/app.json index 623c7f8dfc5e..cf645172ea1f 100644 --- a/apps/ledger-live-desktop/static/i18n/hu/app.json +++ b/apps/ledger-live-desktop/static/i18n/hu/app.json @@ -1897,6 +1897,14 @@ "rippleTagPlaceholder": "Opcionális", "ethereumGasLimit": "Gas határ", "ethereumGasPrice": "Gas ár", + "aptosGasFee": "Gas Fee", + "aptosGasLimit": "Gas Limit", + "aptosGasPrice": "Gas Price (OCTAS)", + "aptosSetOptimalGas": "SET OPTIMAL GAS", + "aptosAdditionalSettings": "Additional settings", + "aptosSequenceNumber": "Sequence Number", + "aptosExpTimestamp": "Exp. Timestamp", + "aptosResetSettings": "RESET SETTINGS", "unitPerByte": "{{unit}} byte-onként", "nft": "NFT", "nftQuantity": "Quantity" diff --git a/apps/ledger-live-desktop/static/i18n/ja/app.json b/apps/ledger-live-desktop/static/i18n/ja/app.json index 5771c8f30a8b..9c75b81b44b5 100644 --- a/apps/ledger-live-desktop/static/i18n/ja/app.json +++ b/apps/ledger-live-desktop/static/i18n/ja/app.json @@ -2215,6 +2215,14 @@ "ethereumGasPrice" : "ガス価格", "ethereumMaxFee" : "最大手数料 ({{unitName}})", "ethereumPriorityFee" : "最大優先手数料 ({{unitName}})", + "aptosGasFee": "ガス料金", + "aptosGasLimit": "ガスリミット", + "aptosGasPrice": "ガス価格 (OCTAS)", + "aptosSetOptimalGas": "最適なガスを設定する", + "aptosAdditionalSettings": "追加の設定", + "aptosSequenceNumber": "シーケンス番号", + "aptosExpTimestamp": "経験値 タイムスタンプ", + "aptosResetSettings": "設定をリセット", "nextBlock" : "次のブロック", "suggested" : "提案済み", "unitPerByte" : "1バイトあたり{{unit}}", diff --git a/apps/ledger-live-desktop/static/i18n/ko/app.json b/apps/ledger-live-desktop/static/i18n/ko/app.json index bf072bbbf916..30e16a2c5b47 100644 --- a/apps/ledger-live-desktop/static/i18n/ko/app.json +++ b/apps/ledger-live-desktop/static/i18n/ko/app.json @@ -2215,6 +2215,14 @@ "ethereumGasPrice" : "가스 가격(Gas price)", "ethereumMaxFee" : "최대 비용({{unitName}})", "ethereumPriorityFee" : "최대 우선 수수료({{unitName}})", + "aptosGasFee": "가스비", + "aptosGasLimit": "가스 한도", + "aptosGasPrice": "가스 가격(OCTAS)", + "aptosSetOptimalGas": "최적의 가스 설정", + "aptosAdditionalSettings": "추가 세팅", + "aptosSequenceNumber": "시퀀스 번호", + "aptosExpTimestamp": "특급 타임스탬프", + "aptosResetSettings": "재설정 설정", "nextBlock" : "다음 블록", "suggested" : "추천", "unitPerByte" : "바이트당 {{unit}}", diff --git a/apps/ledger-live-desktop/static/i18n/nl/app.json b/apps/ledger-live-desktop/static/i18n/nl/app.json index df2f81a1de16..47a96e75df06 100644 --- a/apps/ledger-live-desktop/static/i18n/nl/app.json +++ b/apps/ledger-live-desktop/static/i18n/nl/app.json @@ -1897,6 +1897,14 @@ "rippleTagPlaceholder": "Optional", "ethereumGasLimit": "Gas limit", "ethereumGasPrice": "Gas price", + "aptosGasFee": "Gas Fee", + "aptosGasLimit": "Gas Limit", + "aptosGasPrice": "Gas Price (OCTAS)", + "aptosSetOptimalGas": "SET OPTIMAL GAS", + "aptosAdditionalSettings": "Additional settings", + "aptosSequenceNumber": "Sequence Number", + "aptosExpTimestamp": "Exp. Timestamp", + "aptosResetSettings": "RESET SETTINGS", "unitPerByte": "{{unit}} per byte", "nft": "NFT", "nftQuantity": "Quantity" diff --git a/apps/ledger-live-desktop/static/i18n/no/app.json b/apps/ledger-live-desktop/static/i18n/no/app.json index df2f81a1de16..47a96e75df06 100644 --- a/apps/ledger-live-desktop/static/i18n/no/app.json +++ b/apps/ledger-live-desktop/static/i18n/no/app.json @@ -1897,6 +1897,14 @@ "rippleTagPlaceholder": "Optional", "ethereumGasLimit": "Gas limit", "ethereumGasPrice": "Gas price", + "aptosGasFee": "Gas Fee", + "aptosGasLimit": "Gas Limit", + "aptosGasPrice": "Gas Price (OCTAS)", + "aptosSetOptimalGas": "SET OPTIMAL GAS", + "aptosAdditionalSettings": "Additional settings", + "aptosSequenceNumber": "Sequence Number", + "aptosExpTimestamp": "Exp. Timestamp", + "aptosResetSettings": "RESET SETTINGS", "unitPerByte": "{{unit}} per byte", "nft": "NFT", "nftQuantity": "Quantity" diff --git a/apps/ledger-live-desktop/static/i18n/pl/app.json b/apps/ledger-live-desktop/static/i18n/pl/app.json index df2f81a1de16..47a96e75df06 100644 --- a/apps/ledger-live-desktop/static/i18n/pl/app.json +++ b/apps/ledger-live-desktop/static/i18n/pl/app.json @@ -1897,6 +1897,14 @@ "rippleTagPlaceholder": "Optional", "ethereumGasLimit": "Gas limit", "ethereumGasPrice": "Gas price", + "aptosGasFee": "Gas Fee", + "aptosGasLimit": "Gas Limit", + "aptosGasPrice": "Gas Price (OCTAS)", + "aptosSetOptimalGas": "SET OPTIMAL GAS", + "aptosAdditionalSettings": "Additional settings", + "aptosSequenceNumber": "Sequence Number", + "aptosExpTimestamp": "Exp. Timestamp", + "aptosResetSettings": "RESET SETTINGS", "unitPerByte": "{{unit}} per byte", "nft": "NFT", "nftQuantity": "Quantity" diff --git a/apps/ledger-live-desktop/static/i18n/pt-BR/app.json b/apps/ledger-live-desktop/static/i18n/pt-BR/app.json index 9b89b39c6c0c..9b653fe2d6d3 100644 --- a/apps/ledger-live-desktop/static/i18n/pt-BR/app.json +++ b/apps/ledger-live-desktop/static/i18n/pt-BR/app.json @@ -2215,6 +2215,14 @@ "ethereumGasPrice" : "Preço do gás", "ethereumMaxFee" : "Taxa máxima ({{unitName}})", "ethereumPriorityFee" : "Taxa de Prioridade Máxima ({{unitName}})", + "aptosGasFee": "Taxa de gás", + "aptosGasLimit": "Limite de Gás", + "aptosGasPrice": "Preço do Gás (OCTAS)", + "aptosSetOptimalGas": "DEFINIR GÁS IDEAL", + "aptosAdditionalSettings": "Configurações adicionais", + "aptosSequenceNumber": "Número sequencial", + "aptosExpTimestamp": "Exp. carimbo de data/hora", + "aptosResetSettings": "REDEFINIR AS CONFIGURAÇÕES", "nextBlock" : "Próximo bloco", "suggested" : "Sugerido", "unitPerByte" : "{{unit}} por byte", diff --git a/apps/ledger-live-desktop/static/i18n/pt/app.json b/apps/ledger-live-desktop/static/i18n/pt/app.json index 7747ca58ea4a..a5ee5c7d29b5 100644 --- a/apps/ledger-live-desktop/static/i18n/pt/app.json +++ b/apps/ledger-live-desktop/static/i18n/pt/app.json @@ -1937,6 +1937,14 @@ "rippleTagPlaceholder" : "Opcional", "ethereumGasLimit" : "Limite de gas", "ethereumGasPrice" : "Preço do gás", + "aptosGasFee": "Taxa de gás", + "aptosGasLimit": "Limite de Gás", + "aptosGasPrice": "Preço do Gás (OCTAS)", + "aptosSetOptimalGas": "DEFINIR GÁS IDEAL", + "aptosAdditionalSettings": "Configurações adicionais", + "aptosSequenceNumber": "Número sequencial", + "aptosExpTimestamp": "Exp. carimbo de data/hora", + "aptosResetSettings": "REDEFINIR AS CONFIGURAÇÕES", "unitPerByte" : "{{unit}} por byte", "nft" : "NFT", "nftQuantity" : "Quantidade" diff --git a/apps/ledger-live-desktop/static/i18n/ru/app.json b/apps/ledger-live-desktop/static/i18n/ru/app.json index 5eb2a9c367c7..dbeafea14292 100644 --- a/apps/ledger-live-desktop/static/i18n/ru/app.json +++ b/apps/ledger-live-desktop/static/i18n/ru/app.json @@ -2215,6 +2215,14 @@ "ethereumGasPrice" : "Цена Газа", "ethereumMaxFee" : "Макс. комиссия ({{unitName}})", "ethereumPriorityFee" : "Макс. комиссия за приоритет ({{unitName}})", + "aptosGasFee": "Gas Fee", + "aptosGasLimit": "Gas Limit", + "aptosGasPrice": "Gas Price (OCTAS)", + "aptosSetOptimalGas": "SET OPTIMAL GAS", + "aptosAdditionalSettings": "Additional settings", + "aptosSequenceNumber": "Sequence Number", + "aptosExpTimestamp": "Exp. Timestamp", + "aptosResetSettings": "RESET SETTINGS", "nextBlock" : "Следующий блок", "suggested" : "Рекомендовано", "unitPerByte" : "{{unit}} за байт", diff --git a/apps/ledger-live-desktop/static/i18n/sr/app.json b/apps/ledger-live-desktop/static/i18n/sr/app.json index df2f81a1de16..47a96e75df06 100644 --- a/apps/ledger-live-desktop/static/i18n/sr/app.json +++ b/apps/ledger-live-desktop/static/i18n/sr/app.json @@ -1897,6 +1897,14 @@ "rippleTagPlaceholder": "Optional", "ethereumGasLimit": "Gas limit", "ethereumGasPrice": "Gas price", + "aptosGasFee": "Gas Fee", + "aptosGasLimit": "Gas Limit", + "aptosGasPrice": "Gas Price (OCTAS)", + "aptosSetOptimalGas": "SET OPTIMAL GAS", + "aptosAdditionalSettings": "Additional settings", + "aptosSequenceNumber": "Sequence Number", + "aptosExpTimestamp": "Exp. Timestamp", + "aptosResetSettings": "RESET SETTINGS", "unitPerByte": "{{unit}} per byte", "nft": "NFT", "nftQuantity": "Quantity" diff --git a/apps/ledger-live-desktop/static/i18n/sv/app.json b/apps/ledger-live-desktop/static/i18n/sv/app.json index df2f81a1de16..47a96e75df06 100644 --- a/apps/ledger-live-desktop/static/i18n/sv/app.json +++ b/apps/ledger-live-desktop/static/i18n/sv/app.json @@ -1897,6 +1897,14 @@ "rippleTagPlaceholder": "Optional", "ethereumGasLimit": "Gas limit", "ethereumGasPrice": "Gas price", + "aptosGasFee": "Gas Fee", + "aptosGasLimit": "Gas Limit", + "aptosGasPrice": "Gas Price (OCTAS)", + "aptosSetOptimalGas": "SET OPTIMAL GAS", + "aptosAdditionalSettings": "Additional settings", + "aptosSequenceNumber": "Sequence Number", + "aptosExpTimestamp": "Exp. Timestamp", + "aptosResetSettings": "RESET SETTINGS", "unitPerByte": "{{unit}} per byte", "nft": "NFT", "nftQuantity": "Quantity" diff --git a/apps/ledger-live-desktop/static/i18n/tr/app.json b/apps/ledger-live-desktop/static/i18n/tr/app.json index 468245422ed7..77a5dde2e8b7 100644 --- a/apps/ledger-live-desktop/static/i18n/tr/app.json +++ b/apps/ledger-live-desktop/static/i18n/tr/app.json @@ -2213,6 +2213,14 @@ "edit" : "Düzenle", "ethereumGasLimit" : "Gas limiti", "ethereumGasPrice" : "Gas ücreti", + "aptosGasFee": "Benzin Ücreti", + "aptosGasLimit": "Gaz Limiti", + "aptosGasPrice": "Benzin Fiyatı (OCTAS)", + "aptosSetOptimalGas": "OPTİMUM GAZI AYARLAYIN", + "aptosAdditionalSettings": "Ek ayarlar", + "aptosSequenceNumber": "Sıra numarası", + "aptosExpTimestamp": "Sona Erme Zaman Damgası", + "aptosResetSettings": "AYARLARI SIFIRLA", "ethereumMaxFee" : "Ücret Üst Limiti ({{unitName}})", "ethereumPriorityFee" : "Öncelik Ücreti Üst Limiti ({{unitName}})", "nextBlock" : "Sonraki blok", diff --git a/apps/ledger-live-desktop/static/i18n/zh/app.json b/apps/ledger-live-desktop/static/i18n/zh/app.json index 91a61d8092e4..95b69418e412 100644 --- a/apps/ledger-live-desktop/static/i18n/zh/app.json +++ b/apps/ledger-live-desktop/static/i18n/zh/app.json @@ -2213,6 +2213,14 @@ "edit" : "编辑", "ethereumGasLimit" : "Gas 限值", "ethereumGasPrice" : "Gas 价格", + "aptosGasFee": "煤气费", + "aptosGasLimit": "气体限制", + "aptosGasPrice": "天然气价格 (OCTAS)", + "aptosSetOptimalGas": "设置最优气体", + "aptosAdditionalSettings": "附加设置", + "aptosSequenceNumber": "序列号", + "aptosExpTimestamp": "Exp.时间戳", + "aptosResetSettings": "重置设置", "ethereumMaxFee" : "最高费用 ({{unitName}})", "ethereumPriorityFee" : "最高优先费用 ({{unitName}})", "nextBlock" : "下一个区块", From b71bf2bfbfc59163e40a760a8fa661250a1423d7 Mon Sep 17 00:00:00 2001 From: Vladyslav Belyokhin Date: Tue, 3 Oct 2023 19:33:40 +0300 Subject: [PATCH 06/85] update `hw-app-aptos` package --- .../src/families/aptos/bridge/js.ts | 2 +- .../src/Aptos.ts => hw-app-aptos.ts} | 0 .../src/families/aptos/hw-app-aptos/index.ts | 1 - .../families/aptos/hw-app-aptos/package.json | 30 - .../families/aptos/hw-app-aptos/tsconfig.json | 7 - .../src/families/aptos/hw-app-aptos/yarn.lock | 2317 ----------------- .../src/families/aptos/js-synchronisation.ts | 2 +- 7 files changed, 2 insertions(+), 2357 deletions(-) rename libs/ledger-live-common/src/families/aptos/{hw-app-aptos/src/Aptos.ts => hw-app-aptos.ts} (100%) delete mode 100644 libs/ledger-live-common/src/families/aptos/hw-app-aptos/index.ts delete mode 100644 libs/ledger-live-common/src/families/aptos/hw-app-aptos/package.json delete mode 100644 libs/ledger-live-common/src/families/aptos/hw-app-aptos/tsconfig.json delete mode 100644 libs/ledger-live-common/src/families/aptos/hw-app-aptos/yarn.lock diff --git a/libs/ledger-live-common/src/families/aptos/bridge/js.ts b/libs/ledger-live-common/src/families/aptos/bridge/js.ts index 4269c550f45f..abda3de2f46e 100644 --- a/libs/ledger-live-common/src/families/aptos/bridge/js.ts +++ b/libs/ledger-live-common/src/families/aptos/bridge/js.ts @@ -13,7 +13,7 @@ import { withDevice } from "../../../hw/deviceAccess"; import Aptos from "../hw-app-aptos"; // TODO: change path when package is published import { from, firstValueFrom } from "rxjs"; import { CryptoCurrency } from "@ledgerhq/types-cryptoassets"; -import { AddressData } from "../hw-app-aptos/src/Aptos"; +import { AddressData } from "../hw-app-aptos"; const receive = makeAccountBridgeReceive(); diff --git a/libs/ledger-live-common/src/families/aptos/hw-app-aptos/src/Aptos.ts b/libs/ledger-live-common/src/families/aptos/hw-app-aptos.ts similarity index 100% rename from libs/ledger-live-common/src/families/aptos/hw-app-aptos/src/Aptos.ts rename to libs/ledger-live-common/src/families/aptos/hw-app-aptos.ts diff --git a/libs/ledger-live-common/src/families/aptos/hw-app-aptos/index.ts b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/index.ts deleted file mode 100644 index 837242bc9818..000000000000 --- a/libs/ledger-live-common/src/families/aptos/hw-app-aptos/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./src/Aptos"; diff --git a/libs/ledger-live-common/src/families/aptos/hw-app-aptos/package.json b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/package.json deleted file mode 100644 index 8ec6eb612583..000000000000 --- a/libs/ledger-live-common/src/families/aptos/hw-app-aptos/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "hw-app-aptos", - "version": "0.0.1", - "description": "Ledger Hardware Wallet Aptos Application API", - "main": "lib/Aptos.js", - "module": "lib-es/Aptos.js", - "repository": "https://github.com/Aptos-Pontem-RnD/hw-app-aptos.git", - "author": "vldmkr ", - "license": "Apache-2.0", - "scripts": { - "clean": "rimraf lib lib-es", - "build": "tsc && tsc -m ES6 --outDir lib-es", - "prewatch": "pnpm build", - "watch": "tsc --watch" - }, - "dependencies": { - "@ledgerhq/errors": "workspace:^", - "@ledgerhq/hw-transport": "workspace:^", - "@ledgerhq/hw-transport-node-hid": "workspace:^", - "@noble/hashes": "^1.1.7", - "bip32-path": "^0.4.2" - }, - "devDependencies": { - "@ledgerhq/hw-transport-node-speculos-http": "workspace:^", - "@types/node": "^18.7.20", - "ts-node": "^10.9.1", - "ts-standard": "^11.0.0", - "typescript": "^4.8.3" - } -} diff --git a/libs/ledger-live-common/src/families/aptos/hw-app-aptos/tsconfig.json b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/tsconfig.json deleted file mode 100644 index 8a3725e5d061..000000000000 --- a/libs/ledger-live-common/src/families/aptos/hw-app-aptos/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../../../../ledgerjs/tsconfig.json", - "compilerOptions": { - "outDir": "lib" - }, - "include": ["src/**/*"] -} diff --git a/libs/ledger-live-common/src/families/aptos/hw-app-aptos/yarn.lock b/libs/ledger-live-common/src/families/aptos/hw-app-aptos/yarn.lock deleted file mode 100644 index 1026f8ba1285..000000000000 --- a/libs/ledger-live-common/src/families/aptos/hw-app-aptos/yarn.lock +++ /dev/null @@ -1,2317 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/helper-validator-identifier@^7.18.6": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/highlight@^7.10.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@ledgerhq/devices@^8.0.1-recover-staging.0": - version "8.0.1-recover-staging.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.1-recover-staging.0.tgz#1d32f613d125266b3d973e2fe582324d893898d0" - integrity sha512-bE7F6hJHkRpT7Io31vPcvf62L2OyaHWVQaVS7CUvg1QNVvff0xGZ4ScJrFEXXcMaxPq2LmCI/ohF3AxERCGl/w== - dependencies: - "@ledgerhq/errors" "^6.12.4-recover-staging.0" - "@ledgerhq/logs" "^6.10.1" - rxjs "6" - semver "^7.3.5" - -"@ledgerhq/errors@^6.12.4-recover-staging.0", "@ledgerhq/errors@workspace:^": - version "6.12.4-recover-staging.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.4-recover-staging.0.tgz#14627ab77833bd1814a033f87b77898922f02e66" - integrity sha512-uXSqMG1ZNC/ALjdS235yEcfjoDvCvYYuNJarONnjVgalirc4hZWOqeBgFBVHfatE5xhbyT0MBDGvAsk2QrSncA== - -"@ledgerhq/hw-transport-node-hid-noevents@^6.27.13-recover-staging.0": - version "6.27.13-recover-staging.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.13-recover-staging.0.tgz#267925f8ec820307dfb47912b2bbf4921793211f" - integrity sha512-Jd/4cVJ7rBkLhyxBtG9MzeBrmkjPjmONaEFhIAVbW4CGB5NUEwSJ8lA8JCcpjC5nlNwY190s9eMl07jTIYamVA== - dependencies: - "@ledgerhq/devices" "^8.0.1-recover-staging.0" - "@ledgerhq/errors" "^6.12.4-recover-staging.0" - "@ledgerhq/hw-transport" "^6.28.2-recover-staging.0" - "@ledgerhq/logs" "^6.10.1" - node-hid "^2.1.2" - -"@ledgerhq/hw-transport-node-hid@workspace:^": - version "6.27.13-recover-staging.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.13-recover-staging.0.tgz#78a36904c80f29429b0247118fbe65cc8c32e9bb" - integrity sha512-pWBt6XnYypF12MxCi6JEdMtjdSVA6F+L1h2MUeajaxhW6wyeJBmxIc5ESKV7Tugbcuw6NHAKoS/SuTxj7xRnTA== - dependencies: - "@ledgerhq/devices" "^8.0.1-recover-staging.0" - "@ledgerhq/errors" "^6.12.4-recover-staging.0" - "@ledgerhq/hw-transport" "^6.28.2-recover-staging.0" - "@ledgerhq/hw-transport-node-hid-noevents" "^6.27.13-recover-staging.0" - "@ledgerhq/logs" "^6.10.1" - lodash "^4.17.21" - node-hid "^2.1.2" - usb "^1.7.0" - -"@ledgerhq/hw-transport-node-speculos-http@workspace:^": - version "6.27.13-recover-staging.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-speculos-http/-/hw-transport-node-speculos-http-6.27.13-recover-staging.0.tgz#8368296e229b43d04c303092102e9694ae7fb3d7" - integrity sha512-SON+iNipI/MAOaHLPUupDBbzuNefdHtKLzB0T00AkMI4sT0dZj1tY0VQ7uvtEuOQyCA2cwq/f+z0KyNsZAGwQw== - dependencies: - "@ledgerhq/errors" "^6.12.4-recover-staging.0" - "@ledgerhq/hw-transport" "^6.28.2-recover-staging.0" - "@ledgerhq/logs" "^6.10.1" - axios "^0.26.1" - -"@ledgerhq/hw-transport@^6.28.2-recover-staging.0", "@ledgerhq/hw-transport@workspace:^": - version "6.28.2-recover-staging.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.2-recover-staging.0.tgz#abf68261bacf1254d2008c42468268cca1e170dd" - integrity sha512-HUfbGZw65A2Ntb4rnn6MarZTon+43vEoK3tujAqolDknoA8UPRdFVYpCUMNcH+C41jANRtXkd8F5sLU3+LGZMQ== - dependencies: - "@ledgerhq/devices" "^8.0.1-recover-staging.0" - "@ledgerhq/errors" "^6.12.4-recover-staging.0" - events "^3.3.0" - -"@ledgerhq/logs@^6.10.1": - version "6.10.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.1.tgz#5bd16082261d7364eabb511c788f00937dac588d" - integrity sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w== - -"@noble/hashes@^1.1.7": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" - integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== - -"@types/json-schema@^7.0.7": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/node@^18.7.20": - version "18.15.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.7.tgz#33514fca9bdf136f77027358850c0fb9cd93c669" - integrity sha512-LFmUbFunqmBn26wJZgZPYZPrDR1RwGOu2v79Mgcka1ndO6V0/cwjivPTc4yoK6n9kmw4/ls1r8cLrvh2iMibFA== - -"@typescript-eslint/eslint-plugin@^4.26.1": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@^4.0.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== - dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== - -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== - dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" - -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.4.1: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-includes@^3.1.5, array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" - integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -axios@^0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" - integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== - dependencies: - follow-redirects "^1.14.8" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bip32-path@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/bip32-path/-/bip32-path-0.4.2.tgz#5db0416ad6822712f077836e2557b8697c0c7c99" - integrity sha512-ZBMCELjJfcNMkz5bDuJ1WrYvjlhEF5k6mQ8vUr4N7MbVRsXei7ZOg8VhhwMfNiW68NWmLkgkc6WvTickrLGprQ== - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -detect-libc@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" - integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" - integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== - dependencies: - array-buffer-byte-length "^1.0.0" - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.2.0" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.10" - is-weakref "^1.0.2" - object-inspect "^1.12.3" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" - -es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== - dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - has-tostringtag "^1.0.0" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-standard-jsx@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-10.0.0.tgz#dc24992661325a2e480e2c3091d669f19034e18d" - integrity sha512-hLeA2f5e06W1xyr/93/QJulN/rLbUVUmqTlexv9PRKHFwEC9ffJcH2LvJhMoEqYQBEYafedgGZXH2W8NUpt5lA== - -eslint-config-standard-with-typescript@^21.0.1: - version "21.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-21.0.1.tgz#f4c8bb883d8dfd634005239a54c3c222746e3c64" - integrity sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw== - dependencies: - "@typescript-eslint/parser" "^4.0.0" - eslint-config-standard "^16.0.0" - -eslint-config-standard@^16.0.0, eslint-config-standard@^16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" - integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== - -eslint-import-resolver-node@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" - integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== - dependencies: - debug "^3.2.7" - is-core-module "^2.11.0" - resolve "^1.22.1" - -eslint-module-utils@^2.7.4: - version "2.7.4" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" - integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== - dependencies: - debug "^3.2.7" - -eslint-plugin-es@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" - integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== - dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" - -eslint-plugin-import@^2.23.4: - version "2.27.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" - integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" - eslint-module-utils "^2.7.4" - has "^1.0.3" - is-core-module "^2.11.0" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.values "^1.1.6" - resolve "^1.22.1" - semver "^6.3.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-node@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" - integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== - dependencies: - eslint-plugin-es "^3.0.0" - eslint-utils "^2.0.0" - ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" - -eslint-plugin-promise@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971" - integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== - -eslint-plugin-react@^7.24.0: - version "7.32.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" - integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.4" - semver "^6.3.0" - string.prototype.matchall "^4.0.8" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^7.28.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - 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" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.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.merge "^4.6.2" - 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.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -events@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -follow-redirects@^1.14.8: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -functions-have-names@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-stdin@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" - integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.6.0, globals@^13.9.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@^11.0.3: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.15: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -internal-slot@^1.0.3, internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== - dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" - side-channel "^1.0.4" - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.11.0, is-core-module@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.3.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== - dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -load-json-file@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" - integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== - dependencies: - graceful-fs "^4.1.15" - parse-json "^4.0.0" - pify "^4.0.1" - strip-bom "^3.0.0" - type-fest "^0.3.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -node-abi@^3.3.0: - version "3.33.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.33.0.tgz#8b23a0cec84e1c5f5411836de6a9b84bccf26e7f" - integrity sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog== - dependencies: - semver "^7.3.5" - -node-addon-api@^3.0.2: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-addon-api@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" - integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== - -node-gyp-build@^4.3.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" - integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== - -node-hid@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-2.1.2.tgz#3145fa86ed4336a402a71e9f372c54213b88797c" - integrity sha512-qhCyQqrPpP93F/6Wc/xUR7L8mAJW0Z6R7HMQV8jCHHksAxNDe/4z4Un/H9CpLOT+5K39OPyt9tIQlavxWES3lg== - dependencies: - bindings "^1.5.0" - node-addon-api "^3.0.2" - prebuild-install "^7.1.1" - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.3, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.hasown@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" - integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - 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@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pkg-conf@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae" - integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ== - dependencies: - find-up "^3.0.0" - load-json-file "^5.2.0" - -prebuild-install@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" - integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== - dependencies: - detect-libc "^2.0.0" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^3.3.0" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^4.0.0" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^3.0.0, regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.10.1, resolve@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.4: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@6: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@^5.0.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -semver@^6.1.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.5: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" - integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== - dependencies: - decompress-response "^6.0.0" - once "^1.3.1" - simple-concat "^1.0.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -standard-engine@^14.0.1: - version "14.0.1" - resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-14.0.1.tgz#fe568e138c3d9768fc59ff81001f7049908a8156" - integrity sha512-7FEzDwmHDOGva7r9ifOzD3BGdTbA7ujJ50afLVdW/tK14zQEptJjbFuUfn50irqdHDcTbNh0DTIoMPynMCXb0Q== - dependencies: - get-stdin "^8.0.0" - minimist "^1.2.5" - pkg-conf "^3.1.0" - xdg-basedir "^4.0.0" - -string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.matchall@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" - integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.3" - side-channel "^1.0.4" - -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -table@^6.0.9: - version "6.8.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" - integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -tar-fs@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -ts-node@^10.9.1: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -ts-standard@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/ts-standard/-/ts-standard-11.0.0.tgz#2d9908869818f09601af9d57cc224c836d9eb31c" - integrity sha512-fe+PCOM6JTMIcG1Smr8BQJztUi3dc/SDJMqezxNAL8pe/0+h0shK0+fNPTuF1hMVMYO+O53Wtp9WQHqj0GJtMw== - dependencies: - "@typescript-eslint/eslint-plugin" "^4.26.1" - eslint "^7.28.0" - eslint-config-standard "^16.0.3" - eslint-config-standard-jsx "^10.0.0" - eslint-config-standard-with-typescript "^21.0.1" - eslint-plugin-import "^2.23.4" - eslint-plugin-node "^11.1.0" - eslint-plugin-promise "^5.1.0" - eslint-plugin-react "^7.24.0" - get-stdin "^8.0.0" - minimist "^1.2.5" - pkg-conf "^3.1.0" - standard-engine "^14.0.1" - -tsconfig-paths@^3.14.1: - version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" - integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typescript@^4.8.3: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -usb@^1.7.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/usb/-/usb-1.9.2.tgz#fb6b36f744ecc707a196c45a6ec72442cb6f2b73" - integrity sha512-dryNz030LWBPAf6gj8vyq0Iev3vPbCLHCT8dBw3gQRXRzVNsIdeuU+VjPp3ksmSPkeMAl1k+kQ14Ij0QHyeiAg== - dependencies: - node-addon-api "^4.2.0" - node-gyp-build "^4.3.0" - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts b/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts index c9cb075cc16f..0b640f2bdee1 100644 --- a/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts +++ b/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts @@ -11,7 +11,7 @@ import { encodeOperationId } from "../../operation"; import { AptosAPI } from "./api"; import Aptos from "./hw-app-aptos"; import { CryptoCurrency } from "@ledgerhq/types-cryptoassets"; -import { AddressData } from "./hw-app-aptos/src/Aptos"; +import { AddressData } from "./hw-app-aptos"; const getBlankOperation = (tx: AptosTransaction, id: string): Operation => ({ id: "", From ac8ed9d4b8eff0e31778394ef8b425bfef64be79 Mon Sep 17 00:00:00 2001 From: Vladyslav Belyokhin Date: Sat, 18 Nov 2023 17:12:02 +0200 Subject: [PATCH 07/85] Rework transaction receiving - Get transactions from the indexer by its version - Get both transaction types Receive/Send - Use Aptos API --- .../OperationsList/ConfirmationCheck.tsx | 6 - .../src/renderer/icons/AccountCircle.tsx | 14 - .../src/renderer/icons/AddLiquidity.tsx | 24 - .../src/renderer/icons/CustomCall.tsx | 14 - .../static/i18n/en/app.json | 5 +- libs/coin-framework/src/derivation.ts | 3 + libs/coin-framework/src/operation.ts | 3 - libs/env/src/env.ts | 18 +- .../src/families/aptos/api/graphql/types.ts | 95 ++ .../src/families/aptos/api/index.ts | 131 +- .../src/families/aptos/bridge/js.ts | 18 +- .../src/families/aptos/constants.ts | 52 + .../aptos/js-getFeesForTransaction.ts | 81 +- .../families/aptos/js-prepareTransaction.ts | 8 +- .../src/families/aptos/js-synchronisation.ts | 194 ++- .../src/families/aptos/logic.ts | 5 +- .../src/families/aptos/utils.ts | 7 + .../packages/types-live/src/operation.ts | 4 +- pnpm-lock.yaml | 1459 ++++++++++++++++- 19 files changed, 1837 insertions(+), 304 deletions(-) delete mode 100644 apps/ledger-live-desktop/src/renderer/icons/AccountCircle.tsx delete mode 100644 apps/ledger-live-desktop/src/renderer/icons/AddLiquidity.tsx delete mode 100644 apps/ledger-live-desktop/src/renderer/icons/CustomCall.tsx create mode 100644 libs/ledger-live-common/src/families/aptos/api/graphql/types.ts create mode 100644 libs/ledger-live-common/src/families/aptos/constants.ts create mode 100644 libs/ledger-live-common/src/families/aptos/utils.ts diff --git a/apps/ledger-live-desktop/src/renderer/components/OperationsList/ConfirmationCheck.tsx b/apps/ledger-live-desktop/src/renderer/components/OperationsList/ConfirmationCheck.tsx index db7d8ce1759f..9986f6b34cc5 100644 --- a/apps/ledger-live-desktop/src/renderer/components/OperationsList/ConfirmationCheck.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/OperationsList/ConfirmationCheck.tsx @@ -15,9 +15,6 @@ import IconFees from "~/renderer/icons/Fees"; import IconTrash from "~/renderer/icons/Trash"; import IconLink from "~/renderer/icons/LinkIcon"; import IconCoins from "~/renderer/icons/Coins"; -import IconCustomCall from "~/renderer/icons/CustomCall"; -import IconAddLiquidity from "~/renderer/icons/AddLiquidity"; -import IconAccountCircle from "~/renderer/icons/AccountCircle"; import Freeze from "~/renderer/icons/Freeze"; import Unfreeze from "~/renderer/icons/Unfreeze"; import Box from "~/renderer/components/Box"; @@ -120,9 +117,6 @@ const iconsComponent = { STAKE: IconDelegate, UNSTAKE: IconUndelegate, WITHDRAW_UNSTAKED: IconCoins, - ADD_LIQUIDITY: IconAddLiquidity, - CUSTOM_CALL: IconCustomCall, - CREATE_ACCOUNT: () => , }; class ConfirmationCheck extends PureComponent<{ marketColor: string; diff --git a/apps/ledger-live-desktop/src/renderer/icons/AccountCircle.tsx b/apps/ledger-live-desktop/src/renderer/icons/AccountCircle.tsx deleted file mode 100644 index c88e915662db..000000000000 --- a/apps/ledger-live-desktop/src/renderer/icons/AccountCircle.tsx +++ /dev/null @@ -1,14 +0,0 @@ -// @flow - -import React from "react"; - -const AccountCircle = ({ size = 16 }: { size: number }) => ( - - - -); - -export default AccountCircle; diff --git a/apps/ledger-live-desktop/src/renderer/icons/AddLiquidity.tsx b/apps/ledger-live-desktop/src/renderer/icons/AddLiquidity.tsx deleted file mode 100644 index a3ea7cdcf1a7..000000000000 --- a/apps/ledger-live-desktop/src/renderer/icons/AddLiquidity.tsx +++ /dev/null @@ -1,24 +0,0 @@ -// @flow - -import React from "react"; - -const AddLiquidity = ({ size = 16 }: { size?: number }) => ( - - - - -); - -export default AddLiquidity; diff --git a/apps/ledger-live-desktop/src/renderer/icons/CustomCall.tsx b/apps/ledger-live-desktop/src/renderer/icons/CustomCall.tsx deleted file mode 100644 index b0f20ca4ecef..000000000000 --- a/apps/ledger-live-desktop/src/renderer/icons/CustomCall.tsx +++ /dev/null @@ -1,14 +0,0 @@ -// @flow - -import React from "react"; - -const CustomCall = ({ size = 16 }: { size?: number }) => ( - - - -); - -export default CustomCall; diff --git a/apps/ledger-live-desktop/static/i18n/en/app.json b/apps/ledger-live-desktop/static/i18n/en/app.json index b276eb685efd..65d00faaa198 100644 --- a/apps/ledger-live-desktop/static/i18n/en/app.json +++ b/apps/ledger-live-desktop/static/i18n/en/app.json @@ -236,10 +236,7 @@ "notEnoughFundsToCancel": "Cancelling transaction is not available because you don't have enough funds on your account.", "notEnoughFundsToSpeedup": "Speeding up transaction is not available because you don’t have enough funds in your account.", "notlowestNonceToSpeedup": "Speed up feature is not available. Your transaction is pending because a previous transaction is stuck. You can wait for it to be confirmed, speed it up and cancel it." - }, - "ADD_LIQUIDITY": "Add liquidity", - "CREATE_ACCOUNT": "Create account", - "CUSTOM_CALL": "Custom call" + } } }, "byteSize": { diff --git a/libs/coin-framework/src/derivation.ts b/libs/coin-framework/src/derivation.ts index 90b5918e862f..1ae3c2e16ec3 100644 --- a/libs/coin-framework/src/derivation.ts +++ b/libs/coin-framework/src/derivation.ts @@ -203,6 +203,9 @@ const modes = Object.freeze({ startsAt: 1, tag: "third-party", }, + aptos: { + overridesDerivation: "44'/637'/'/0'/0'", + }, }); modes as Record; // eslint-disable-line diff --git a/libs/coin-framework/src/operation.ts b/libs/coin-framework/src/operation.ts index 7b6ff207f808..275527e2ad40 100644 --- a/libs/coin-framework/src/operation.ts +++ b/libs/coin-framework/src/operation.ts @@ -174,9 +174,6 @@ export function getOperationAmountNumber(op: Operation): BigNumber { case "OPT_OUT": case "SLASH": case "LOCK": - case "ADD_LIQUIDITY": - case "CREATE_ACCOUNT": - case "CUSTOM_CALL": return op.value.negated(); case "FREEZE": diff --git a/libs/env/src/env.ts b/libs/env/src/env.ts index 88f3cfa8d5c5..4486e57ad76b 100644 --- a/libs/env/src/env.ts +++ b/libs/env/src/env.ts @@ -63,14 +63,24 @@ const envDefinitions = { desc: "Rosetta API for ICP", }, APTOS_API_ENDPOINT: { - def: "https://aptos-mainnet.pontem.network/v1/", + def: "https://fullnode.mainnet.aptoslabs.com/v1/", parser: stringParser, - desc: "API enpoint for aptos", + desc: "API enpoint for Aptos", }, APTOS_TESTNET_API_ENDPOINT: { - def: "https://aptos-testnet.pontem.network/v1/", + def: "https://fullnode.testnet.aptoslabs.com/v1/", parser: stringParser, - desc: "API enpoint for aptos", + desc: "API enpoint for Aptos", + }, + APTOS_INDEXER_ENDPOINT: { + def: "https://indexer.mainnet.aptoslabs.com/v1/graphql", + parser: stringParser, + desc: "Indexer endpoint for Aptos", + }, + APTOS_TESTNET_INDEXER_ENDPOINT: { + def: "https://indexer-testnet.staging.gcp.aptosdev.com/v1/graphql", + parser: stringParser, + desc: "Indexer endpoint for Aptos", }, API_ALGORAND_BLOCKCHAIN_EXPLORER_API_ENDPOINT: { def: "https://algorand.coin.ledger.com", diff --git a/libs/ledger-live-common/src/families/aptos/api/graphql/types.ts b/libs/ledger-live-common/src/families/aptos/api/graphql/types.ts new file mode 100644 index 000000000000..b8c35d624ce2 --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/api/graphql/types.ts @@ -0,0 +1,95 @@ +import gql from "graphql-tag"; +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + bigint: any; + jsonb: any; + numeric: any; + timestamp: any; + timestamptz: any; +}; + +export type GetAccountTransactionsDataQueryVariables = Exact<{ + address?: InputMaybe; + limit?: InputMaybe; +}>; + +export type GetAccountTransactionsDataQuery = { + __typename?: "query_root"; + address_version_from_move_resources: Array<{ + __typename: "address_version_from_move_resources"; + transaction_version?: any | null; + }>; +}; + +export type GetAccountTransactionsDataGtQueryVariables = Exact<{ + address?: InputMaybe; + limit?: InputMaybe; + gt?: InputMaybe; +}>; + +export type GetAccountTransactionsDataGtQuery = { + __typename?: "query_root"; + address_version_from_move_resources: Array<{ + __typename: "address_version_from_move_resources"; + transaction_version?: any | null; + }>; +}; + +export type GetAccountTransactionsDataLtQueryVariables = Exact<{ + address?: InputMaybe; + limit?: InputMaybe; + lt?: InputMaybe; +}>; + +export type GetAccountTransactionsDataLtQuery = { + __typename?: "query_root"; + address_version_from_move_resources: Array<{ + __typename: "address_version_from_move_resources"; + transaction_version?: any | null; + }>; +}; + +export const GetAccountTransactionsData = gql` + query GetAccountTransactionsData($address: String, $limit: Int) { + address_version_from_move_resources( + where: { address: { _eq: $address } } + order_by: { transaction_version: desc } + limit: $limit + ) { + transaction_version + __typename + } + } +`; +export const GetAccountTransactionsDataGt = gql` + query GetAccountTransactionsDataGt($address: String, $limit: Int, $gt: bigint) { + address_version_from_move_resources( + where: { address: { _eq: $address }, transaction_version: { _gt: $gt } } + order_by: { transaction_version: desc } + limit: $limit + ) { + transaction_version + __typename + } + } +`; +export const GetAccountTransactionsDataLt = gql` + query GetAccountTransactionsDataLt($address: String, $limit: Int, $lt: bigint) { + address_version_from_move_resources( + where: { address: { _eq: $address }, transaction_version: { _lt: $lt } } + order_by: { transaction_version: desc } + limit: $limit + ) { + transaction_version + __typename + } + } +`; diff --git a/libs/ledger-live-common/src/families/aptos/api/index.ts b/libs/ledger-live-common/src/families/aptos/api/index.ts index 40fe59bfe036..223480039ace 100644 --- a/libs/ledger-live-common/src/families/aptos/api/index.ts +++ b/libs/ledger-live-common/src/families/aptos/api/index.ts @@ -1,9 +1,18 @@ import { AptosClient, TxnBuilderTypes } from "aptos"; +import { ApolloClient, InMemoryCache } from "@apollo/client"; import type { Types as AptosTypes } from "aptos"; import BigNumber from "bignumber.js"; import network from "@ledgerhq/live-network/network"; import { getEnv } from "@ledgerhq/live-env"; +import { + GetAccountTransactionsDataGt, + GetAccountTransactionsDataQuery, + GetAccountTransactionsData, + GetAccountTransactionsDataLt, + GetAccountTransactionsDataQueryVariables, +} from "./graphql/types"; + // import { isTestnet } from "../logic"; import type { AptosResource, @@ -14,6 +23,7 @@ import type { import { isUndefined } from "lodash"; const getApiEndpoint = (_: string) => getEnv("APTOS_TESTNET_API_ENDPOINT"); +const getIndexerEndpoint = (_: string) => getEnv("APTOS_TESTNET_INDEXER_ENDPOINT"); // TODO: uncomment before release // const getApiEndpoint = (currencyId: string) => // isTestnet(currencyId) @@ -21,41 +31,94 @@ const getApiEndpoint = (_: string) => getEnv("APTOS_TESTNET_API_ENDPOINT"); // : getEnv("APTOS_API_ENDPOINT"); export class AptosAPI { - protected defaultEndpoint: string; - private client: AptosClient; + private apiUrl: string; + private indexerUrl: string; + private aptosClient: AptosClient; + private apolloClient: ApolloClient; constructor(currencyId: string) { - this.defaultEndpoint = getApiEndpoint(currencyId); - this.client = new AptosClient(this.defaultEndpoint); + this.apiUrl = getApiEndpoint(currencyId); + this.indexerUrl = getIndexerEndpoint(currencyId); + this.aptosClient = new AptosClient(this.apiUrl); + this.apolloClient = new ApolloClient({ + uri: this.indexerUrl, + cache: new InMemoryCache(), + headers: { + "x-client": "ledger-live", + }, + }); + } + + async fetchTransactions(address: string, lt?: string, gt?: string) { + if (!address) { + return []; + } + + // WORKAROUND: Where is no way to pass optional bigint var to query + let query = GetAccountTransactionsData; + if (lt) { + query = GetAccountTransactionsDataLt; + } + if (gt) { + query = GetAccountTransactionsDataGt; + } + + const queryResponse = await this.apolloClient.query< + GetAccountTransactionsDataQuery, + GetAccountTransactionsDataQueryVariables + >({ + query, + variables: { + address, + limit: 1000, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + lt, + gt, + }, + fetchPolicy: "network-only", + }); + + return Promise.all( + queryResponse.data.address_version_from_move_resources.map(({ transaction_version }) => { + return this.richItemByVersion(transaction_version); + }), + ); + } + + async richItemByVersion(version: number): Promise { + try { + const tx: AptosTypes.Transaction = await this.aptosClient.getTransactionByVersion(version); + const block = await this.getBlock(version); + return { + ...tx, + block, + } as AptosTransaction; + } catch (error) { + return null; + } } - getAccount = async (address: string): Promise => { - return this.client.getAccount(address); - }; + async getAccount(address: string): Promise { + return this.aptosClient.getAccount(address); + } - async getAccountInfo(address: string) { + async getAccountInfo(address: string, startAt: string) { const [balance, transactions, blockHeight] = await Promise.all([ this.getBalance(address), - this.getTransactions(address), + this.fetchTransactions(address, undefined, startAt), this.getHeight(), ]); - const txs = await Promise.all( - transactions.map(async tx => { - tx.block = await this.getBlock(parseInt(tx.version)); - return tx; - }), - ); - return { balance, - txs, + transactions, blockHeight, }; } async estimateGasPrice(): Promise { - return this.client.estimateGasPrice(); + return this.aptosClient.estimateGasPrice(); } async generateTransaction( @@ -80,12 +143,12 @@ export class AptosAPI { opts.expiration_timestamp_secs = BigNumber(options.expirationTimestampSecs).toString(); } - const tx = await this.client.generateTransaction(address, payload, opts); + const tx = await this.aptosClient.generateTransaction(address, payload, opts); let serverTimestamp = tx.expiration_timestamp_secs; if (isUndefined(opts.expiration_timestamp_secs)) { try { - const ts = (await this.client.getLedgerInfo()).ledger_timestamp; + const ts = (await this.aptosClient.getLedgerInfo()).ledger_timestamp; serverTimestamp = BigInt(Math.ceil(+ts / 1_000_000 + 2 * 60)); // in microseconds } catch (e) { // nothing @@ -108,34 +171,24 @@ export class AptosAPI { async simulateTransaction( address: TxnBuilderTypes.Ed25519PublicKey, tx: TxnBuilderTypes.RawTransaction, - ): Promise { - return this.client.simulateTransaction(address, tx, { + options = { estimateGasUnitPrice: true, estimateMaxGasAmount: true, estimatePrioritizedGasUnitPrice: false, - }); + }, + ): Promise { + return this.aptosClient.simulateTransaction(address, tx, options); } async broadcast(signature: string): Promise { const txBytes = Uint8Array.from(Buffer.from(signature, "hex")); - const pendingTx = await this.client.submitTransaction(txBytes); + const pendingTx = await this.aptosClient.submitTransaction(txBytes); return pendingTx.hash; } - private async getTransactions(address: string): Promise { - try { - const txs = await this.client.getAccountTransactions(address, { - limit: 1000, - }); - return txs as unknown as AptosTransaction[]; - } catch (e: any) { - return []; - } - } - private async getBalance(address: string): Promise { try { - const balanceRes = await this.client.getAccountResource( + const balanceRes = await this.aptosClient.getAccountResource( address, "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>", ); @@ -149,13 +202,13 @@ export class AptosAPI { private async getHeight(): Promise { const { data } = await network({ method: "GET", - url: this.defaultEndpoint, + url: this.apiUrl, }); - return data.block_height; + return parseInt(data.block_height); } private async getBlock(version: number) { - const block = await this.client.getBlockByVersion(version); + const block = await this.aptosClient.getBlockByVersion(version); return { height: parseInt(block.block_height), hash: block.block_hash, diff --git a/libs/ledger-live-common/src/families/aptos/bridge/js.ts b/libs/ledger-live-common/src/families/aptos/bridge/js.ts index abda3de2f46e..6d86c61d7fea 100644 --- a/libs/ledger-live-common/src/families/aptos/bridge/js.ts +++ b/libs/ledger-live-common/src/families/aptos/bridge/js.ts @@ -2,32 +2,20 @@ import type { AccountBridge, CurrencyBridge } from "@ledgerhq/types-live"; import type { Transaction } from "../types"; import { makeAccountBridgeReceive } from "../../../bridge/jsHelpers"; -import { sync, scanAccounts, SignerContext } from "../js-synchronisation"; +import { sync, scanAccounts } from "../js-synchronisation"; import getTransactionStatus from "../js-getTransactionStatus"; import prepareTransaction from "../js-prepareTransaction"; import createTransaction from "../js-createTransaction"; import estimateMaxSpendable from "../js-estimateMaxSpendable"; import signOperation from "../js-signOperation"; import broadcast from "../js-broadcast"; -import { withDevice } from "../../../hw/deviceAccess"; -import Aptos from "../hw-app-aptos"; // TODO: change path when package is published -import { from, firstValueFrom } from "rxjs"; -import { CryptoCurrency } from "@ledgerhq/types-cryptoassets"; -import { AddressData } from "../hw-app-aptos"; const receive = makeAccountBridgeReceive(); -const signerContext: SignerContext = ( - deviceId: string, - crypto: CryptoCurrency, - fn: (signer: Aptos) => Promise, -): Promise => - firstValueFrom(withDevice(deviceId)(transport => from(fn(new Aptos(transport))))); - const currencyBridge: CurrencyBridge = { preload: () => Promise.resolve({}), hydrate: () => {}, - scanAccounts: scanAccounts(signerContext), + scanAccounts, }; const updateTransaction = (t: Transaction, patch: Partial): Transaction => ({ @@ -41,7 +29,7 @@ const accountBridge: AccountBridge = { updateTransaction, getTransactionStatus, prepareTransaction, - sync: sync(signerContext), + sync, receive, signOperation, broadcast, diff --git a/libs/ledger-live-common/src/families/aptos/constants.ts b/libs/ledger-live-common/src/families/aptos/constants.ts new file mode 100644 index 000000000000..b17c4b717c6c --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/constants.ts @@ -0,0 +1,52 @@ +export const LOAD_LIMIT = 10; + +export enum TX_TYPE { + REGISTER = "register", + TRANSFER = "transfer", + RECEIVE = "receive", + ALLOW_RECEIVE_NFT = "opt_in_direct_transfer", + FAUCET = "faucet", + SWAP = "swap", + ADD_LIQUIDITY = "add_liquidity", + REGISTER_POOL_AND_ADD_LIQUIDITY = "register_pool_and_add_liquidity", + REMOVE_LIQUIDITY = "remove_liquidity", + TRANSFER_NFT = "transfer_with_opt_in", + RECEIVE_NFT = "receive_nft", + OFFER_NFT = "offer_script", + CANCEL_OFFER_NFT = "cancel_offer_script", + BUY_NFT = "buy", + LIST_NFT = "list", + SELL_NFT = "fill", + EDIT_NFT = "edit", + DELIST_NFT = "delist", + DELETE_NFT = "delete_nft", + CLAIM_NFT = "claim_script", + + STAKE_APTOS = "stake_aptos", + INSTANT_UNSTAKE_APTOS = "instant_unstake", + DEPOSIT = "deposit", + WITHDRAW = "withdraw", + CLAIM_THL = "claim_thl_rewards", + + APPROVE = "approve", + CONTRACT_ADDRESS_CREATED = "contract_address_created", + + UNKNOWN = "unknown", +} + +export enum TX_STATUS { + PENDING = "pending", + FAIL = "fail", + SUCCESS = "success", +} + +export const TRANSFER_TYPES = ["transfer", "transfer_coins"]; + +export const APTOS_TRANSFER_FUNCTION_ADDRESS = "0x1::aptos_account::transfer"; +export const APTOS_OBJECT_TRANSFER = "0x1::object::transfer"; + +export enum DIRECTION { + IN = "IN", + OUT = "OUT", + UNKNOWN = "UNKNOWN", +} diff --git a/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts index 28d182b63999..fd8d1edcb754 100644 --- a/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts +++ b/libs/ledger-live-common/src/families/aptos/js-getFeesForTransaction.ts @@ -1,12 +1,15 @@ import BigNumber from "bignumber.js"; import { HexString, TxnBuilderTypes } from "aptos"; import type { Account } from "@ledgerhq/types-live"; +import { from, firstValueFrom } from "rxjs"; import { AptosAPI } from "./api"; import buildTransaction from "./js-buildTransaction"; import { DEFAULT_GAS, DEFAULT_GAS_PRICE, ESTIMATE_GAS_MUL } from "./logic"; import type { Transaction, TransactionErrors } from "./types"; +import { withDevice } from "../../hw/deviceAccess"; import { log } from "@ledgerhq/logs"; +import Aptos from "./hw-app-aptos"; type IGetEstimatedGasReturnType = { fees: BigNumber; @@ -37,12 +40,26 @@ export const getFee = async ( errors: { ...transaction.errors }, }; + let gasPrice = DEFAULT_GAS_PRICE; + let gasLimit = DEFAULT_GAS; + let sequenceNumber = ""; + try { - if (!account.xpub) throw Error("Account public key missing to estimate transaction"); + const { gas_estimate } = await aptosClient.estimateGasPrice(); + gasPrice = gas_estimate; + } catch (err) { + // skip + } - const tx = await buildTransaction(account, transaction, aptosClient); - const pubKeyUint = new HexString(account.xpub as string).toUint8Array(); + try { + const fn = (signer: Aptos) => signer.getAddress(account.freshAddressPath); + const result = await firstValueFrom( + withDevice("")(transport => from(fn(new Aptos(transport)))), + ); + const publickKey = result.publicKey.toString("hex"); + const pubKeyUint = new HexString(publickKey).toUint8Array(); const publicKeyEd = new TxnBuilderTypes.Ed25519PublicKey(pubKeyUint); + const tx = await buildTransaction(account, transaction, aptosClient); const simulation = await aptosClient.simulateTransaction(publicKeyEd, tx); const completedTx = simulation[0]; @@ -64,38 +81,34 @@ export const getFee = async ( throw Error(`Simulation failed with following error: ${completedTx.vm_status}`); } } - } else { - res.estimate.maxGasAmount = BigNumber( - Math.ceil(completedTx.gas_used ? +completedTx.gas_used * ESTIMATE_GAS_MUL : DEFAULT_GAS), - ).toString(); - - if ( - transaction.skipEmulation || - +transaction.options.gasUnitPrice !== DEFAULT_GAS_PRICE || - +transaction.options.maxGasAmount !== DEFAULT_GAS - ) { - res.fees = res.fees - .plus( - BigNumber( - transaction.options.gasUnitPrice || res.estimate.gasUnitPrice || DEFAULT_GAS_PRICE, - ), - ) - .multipliedBy( - BigNumber(transaction.options.maxGasAmount || res.estimate.maxGasAmount || DEFAULT_GAS), - ); - } else { - res.fees = res.fees - .plus(BigNumber(completedTx.gas_unit_price || DEFAULT_GAS_PRICE)) - .multipliedBy(BigNumber(res.estimate.maxGasAmount)); - } - - res.estimate.gasUnitPrice = completedTx.gas_unit_price; - res.estimate.sequenceNumber = completedTx.sequence_number; - res.estimate.expirationTimestampSecs = completedTx.expiration_timestamp_secs; } - } catch (e: any) { - log(e.message); - throw e; + + res.estimate.expirationTimestampSecs = completedTx.expiration_timestamp_secs; + gasLimit = Number(completedTx.gas_used ?? DEFAULT_GAS); + } catch (error: any) { + log(error.message); + throw error; + } + + try { + const { sequence_number } = await aptosClient.getAccount(account.freshAddresses[0].address); + sequenceNumber = sequence_number; + } catch (err) { + // skip + } + + gasLimit = Math.ceil(gasLimit * ESTIMATE_GAS_MUL); + + res.estimate.gasUnitPrice = gasPrice.toString(); + res.estimate.sequenceNumber = sequenceNumber.toString(); + res.estimate.maxGasAmount = gasLimit.toString(); + + if (transaction.skipEmulation) { + res.fees = res.fees + .plus(transaction.options.gasUnitPrice) + .multipliedBy(BigNumber(transaction.options.maxGasAmount)); + } else { + res.fees = res.fees.plus(BigNumber(gasPrice)).multipliedBy(BigNumber(gasLimit)); } CACHE.delete(getCacheKey(transaction)); diff --git a/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts b/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts index cad3b3513b76..eeec300c3738 100644 --- a/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts +++ b/libs/ledger-live-common/src/families/aptos/js-prepareTransaction.ts @@ -8,7 +8,7 @@ import { getMaxSendBalance } from "./logic"; const prepareTransaction = async ( account: Account, - transaction: Transaction + transaction: Transaction, ): Promise => { if (transaction.amount.isZero() && !transaction.useAllAmount) { return { @@ -27,11 +27,7 @@ const prepareTransaction = async ( const aptosClient = new AptosAPI(account.currency.id); - const { fees, estimate, errors } = await getEstimatedGas( - account, - transaction, - aptosClient - ); + const { fees, estimate, errors } = await getEstimatedGas(account, transaction, aptosClient); const options = { ...transaction.options }; if (transaction.firstEmulation) options.maxGasAmount = estimate.maxGasAmount; diff --git a/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts b/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts index 0b640f2bdee1..95d06af6cad2 100644 --- a/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts +++ b/libs/ledger-live-common/src/families/aptos/js-synchronisation.ts @@ -1,138 +1,130 @@ import BigNumber from "bignumber.js"; import type { Types as AptosTypes } from "aptos"; -import type { AccountBridge, CurrencyBridge, Operation, OperationType } from "@ledgerhq/types-live"; +import type { Operation, OperationType, Account } from "@ledgerhq/types-live"; import type { GetAccountShape } from "../../bridge/jsHelpers"; -import type { AptosTransaction, Transaction } from "./types"; +import type { AptosTransaction } from "./types"; import { makeSync, makeScanAccounts, mergeOps } from "../../bridge/jsHelpers"; import { encodeAccountId } from "../../account"; import { encodeOperationId } from "../../operation"; import { AptosAPI } from "./api"; -import Aptos from "./hw-app-aptos"; -import { CryptoCurrency } from "@ledgerhq/types-cryptoassets"; -import { AddressData } from "./hw-app-aptos"; - -const getBlankOperation = (tx: AptosTransaction, id: string): Operation => ({ +import { + TRANSFER_TYPES, + TX_TYPE, + APTOS_OBJECT_TRANSFER, + APTOS_TRANSFER_FUNCTION_ADDRESS, + DIRECTION, +} from "./constants"; +import { compareAddress } from "./utils"; + +const getBlankOperation = ( + tx: AptosTransaction, + id: string, +): Operation> => ({ id: "", hash: tx.hash, type: "" as OperationType, value: new BigNumber(0), fee: new BigNumber(0), - blockHash: tx.block.hash, - blockHeight: tx.block.height, + blockHash: tx.block?.hash, + blockHeight: tx.block?.height, senders: [] as string[], recipients: [] as string[], accountId: id, date: new Date(parseInt(tx.timestamp) / 1000), - extra: {}, + extra: { version: tx?.version }, transactionSequenceNumber: parseInt(tx.sequence_number), hasFailed: false, }); -const txsToOps = (info: any, id: string, txs: AptosTransaction[]) => { +const txsToOps = (info: any, id: string, txs: (AptosTransaction | null)[]) => { const { address } = info; const ops: Operation[] = []; txs.forEach(tx => { - const op: Operation = getBlankOperation(tx, id); - op.fee = new BigNumber(tx.gas_used).multipliedBy(BigNumber(tx.gas_unit_price)); - - const entryFunctionPayload = tx.payload as AptosTypes.EntryFunctionPayload; - const functionName = entryFunctionPayload.function.slice( - entryFunctionPayload.function.lastIndexOf("::") + 2, - ); - (op.extra as any).entryFunction = entryFunctionPayload.function.slice( - entryFunctionPayload.function.indexOf("::") + 2, - ); - - switch (functionName) { - case "transfer": { - op.type = "OUT"; - op.recipients.push(entryFunctionPayload.arguments[0]); - op.value = op.value.plus(entryFunctionPayload.arguments[1]); - op.value = op.value.plus(op.fee); - break; - } - case "add_liquidity": { - op.type = "ADD_LIQUIDITY"; - op.value = op.value.plus(entryFunctionPayload.arguments[0]); - break; - } - case "create_account": { - op.type = "CREATE_ACCOUNT"; - op.value = op.value.plus(op.fee); - break; + if (tx !== null) { + const op: Operation = getBlankOperation(tx, id); + op.fee = new BigNumber(tx.gas_used).multipliedBy(BigNumber(tx.gas_unit_price)); + + const payload = tx.payload as AptosTypes.EntryFunctionPayload; + + let type; + if ("function" in payload) { + type = payload.function.split("::").at(-1) as TX_TYPE; + (op.extra as any).entryFunction = payload.function.slice( + payload.function.indexOf("::") + 2, + ); + } else if ("type" in payload) { + type = (payload as any).type as TX_TYPE; } - default: { - op.type = "CUSTOM_CALL"; - op.value = op.value.plus(op.fee); - break; + (op.extra as any).entryFunction = type; + + // TRANSFER & RECEIVE + if (TRANSFER_TYPES.includes(type) && "arguments" in payload) { + // avoid v2 parse + if ("function" in payload && payload.function === APTOS_OBJECT_TRANSFER) { + op.type = DIRECTION.UNKNOWN; + } else { + op.recipients.push(payload.arguments[0]); + op.senders.push(tx.sender); + op.value = op.value.plus(payload.arguments[1]); + if (compareAddress(op.recipients[0], address)) { + op.type = DIRECTION.IN; + } else { + op.type = DIRECTION.OUT; + } + } + + if ( + !payload.type_arguments[0] && + "function" in payload && + payload.function !== APTOS_TRANSFER_FUNCTION_ADDRESS + ) { + op.type = DIRECTION.UNKNOWN; + } + + op.hasFailed = !tx.success; + op.id = encodeOperationId(id, tx.hash, op.type); + ops.push(op); } } - - op.senders.push(address); - op.hasFailed = !tx.success; - op.id = encodeOperationId(id, tx.hash, op.type); - ops.push(op); }); return ops; }; -export type SignerContext = ( - deviceId: string, - crypto: CryptoCurrency, - fn: (signer: Aptos) => Promise, -) => Promise; - -const makeGetAccountShape = - (signerContext: SignerContext): GetAccountShape => - async info => { - const { address, initialAccount, derivationMode, derivationPath, currency, deviceId } = info; +const getAccountShape: GetAccountShape = async info => { + const { address, initialAccount, derivationMode, currency } = info; - const oldOperations = initialAccount?.operations || []; - - let xpub = initialAccount?.xpub; - - if (!xpub) { - if (deviceId === null || deviceId === undefined) { - throw new Error("DeviceId required to generate the xpub"); - } - const r = await signerContext(deviceId, currency, signer => - signer.getAddress(derivationPath), - ); - xpub = r?.publicKey.toString("hex"); - } + const oldOperations = initialAccount?.operations || []; + const startAt = (oldOperations[0]?.extra as any)?.version; - const accountId = encodeAccountId({ - type: "js", - version: "2", - currencyId: currency.id, - xpubOrAddress: address, - derivationMode, - }); - - const aptosClient = new AptosAPI(currency.id); - - const { balance, txs, blockHeight } = await aptosClient.getAccountInfo(address); - - const newOperations = txsToOps(info, accountId, txs); - const operations = mergeOps(oldOperations, newOperations); - - const shape = { - id: accountId, - xpub, - balance: balance, - spendableBalance: balance, - operationsCount: operations.length, - blockHeight, - }; + const accountId = encodeAccountId({ + type: "js", + version: "2", + currencyId: currency.id, + xpubOrAddress: address, + derivationMode, + }); - return { ...shape, operations }; + const aptosClient = new AptosAPI(currency.id); + const { balance, transactions, blockHeight } = await aptosClient.getAccountInfo(address, startAt); + + const newOperations = txsToOps(info, accountId, transactions); + const operations = mergeOps(oldOperations, newOperations); + + const shape: Partial = { + type: "Account", + id: accountId, + balance: balance, + spendableBalance: balance, + operations, + operationsCount: operations.length, + blockHeight, + lastSyncDate: new Date(), }; -export const scanAccounts = (signerContext: SignerContext): CurrencyBridge["scanAccounts"] => - makeScanAccounts({ - getAccountShape: makeGetAccountShape(signerContext), - }); -export const sync = (signerContext: SignerContext): AccountBridge["sync"] => - makeSync({ getAccountShape: makeGetAccountShape(signerContext) }); + return shape; +}; + +export const scanAccounts = makeScanAccounts({ getAccountShape }); +export const sync = makeSync({ getAccountShape, shouldMergeOps: false }); diff --git a/libs/ledger-live-common/src/families/aptos/logic.ts b/libs/ledger-live-common/src/families/aptos/logic.ts index 325b11c9b9c3..e4049486adc6 100644 --- a/libs/ledger-live-common/src/families/aptos/logic.ts +++ b/libs/ledger-live-common/src/families/aptos/logic.ts @@ -13,8 +13,7 @@ const LENGTH_WITH_0x = 66; export function isValidAddress(address = ""): boolean { let str = address; - const validAddressWithOx = - address.startsWith("0x") && address.length === LENGTH_WITH_0x; + const validAddressWithOx = address.startsWith("0x") && address.length === LENGTH_WITH_0x; if (!validAddressWithOx) return false; @@ -41,7 +40,7 @@ export const getMaxSendBalance = (amount: BigNumber): BigNumber => { }; export function normalizeTransactionOptions( - options: Transaction["options"] + options: Transaction["options"], ): Transaction["options"] { const check = (v: any) => { if (v === undefined || v === null || v === "") { diff --git a/libs/ledger-live-common/src/families/aptos/utils.ts b/libs/ledger-live-common/src/families/aptos/utils.ts new file mode 100644 index 000000000000..66ee2e5b482b --- /dev/null +++ b/libs/ledger-live-common/src/families/aptos/utils.ts @@ -0,0 +1,7 @@ +const cleanHex = /^0x0*|^0+/; + +export function compareAddress(addressA: string, addressB: string) { + return ( + addressA.replace(cleanHex, "").toLowerCase() === addressB.replace(cleanHex, "").toLowerCase() + ); +} diff --git a/libs/ledgerjs/packages/types-live/src/operation.ts b/libs/ledgerjs/packages/types-live/src/operation.ts index effe4f1c78bc..a856da6a0695 100644 --- a/libs/ledgerjs/packages/types-live/src/operation.ts +++ b/libs/ledgerjs/packages/types-live/src/operation.ts @@ -12,9 +12,7 @@ export type OperationType = | "CREATE" | "REVEAL" // APTOS - | "ADD_LIQUIDITY" - | "CREATE_ACCOUNT" - | "CUSTOM_CALL" + | "UNKNOWN" // COSMOS | "DELEGATE" | "UNDELEGATE" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fbac680c795d..37255cc7cc7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1908,6 +1908,9 @@ importers: libs/ledger-live-common: dependencies: + '@apollo/client': + specifier: ^3.8.6 + version: 3.8.6(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) '@cardano-foundation/ledgerjs-hw-app-cardano': specifier: ^5.1.0 version: 5.1.0 @@ -1977,6 +1980,9 @@ importers: '@ethersproject/strings': specifier: ^5.7.0 version: 5.7.0 + '@graphql-codegen/typescript-operations': + specifier: 3.0.2 + version: 3.0.2(graphql@16.6.0) '@hashgraph/sdk': specifier: ^2.10.1 version: 2.14.2(react-native@0.72.6)(react@18.2.0) @@ -2152,8 +2158,8 @@ importers: specifier: ^1.0.2 version: 1.0.2 aptos: - specifier: 1.3.16 - version: 1.3.16 + specifier: 1.20.0 + version: 1.20.0 async: specifier: ^3.2.3 version: 3.2.3 @@ -2256,6 +2262,9 @@ importers: generic-pool: specifier: ^3.8.2 version: 3.9.0 + graphql: + specifier: 16.6.0 + version: 16.6.0 invariant: specifier: ^2.2.2 version: 2.2.4 @@ -2359,6 +2368,15 @@ importers: specifier: ^4.30.2 version: 4.32.0 devDependencies: + '@graphql-codegen/cli': + specifier: 3.2.2 + version: 3.2.2(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-codegen/typescript': + specifier: ^3.0.4 + version: 3.0.4(graphql@16.6.0) + '@graphql-codegen/typescript-document-nodes': + specifier: 4.0.1 + version: 4.0.1(graphql@16.6.0) '@ledgerhq/types-cryptoassets': specifier: workspace:^ version: link:../ledgerjs/packages/types-cryptoassets @@ -2434,6 +2452,9 @@ importers: glob: specifier: ^7.2.0 version: 7.2.0 + graphql-tag: + specifier: ^2.12.6 + version: 2.12.6(graphql@16.6.0) jest: specifier: ^28.1.1 version: 28.1.3(@types/node@18.15.11)(ts-node@10.7.0) @@ -5461,6 +5482,87 @@ packages: leven: 3.1.0 dev: false + /@apollo/client@3.8.6(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FnHg3vhQP8tQzgBs6oTJCFFIbovelDGYujj6MK7CJneiHf62TJstCIO0Ot4A1h7XrgFEtgl8a/OgajQWqrTuYw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-ws: ^5.5.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + subscriptions-transport-ws: ^0.9.0 || ^0.11.0 + peerDependenciesMeta: + graphql-ws: + optional: true + react: + optional: true + react-dom: + optional: true + subscriptions-transport-ws: + optional: true + dependencies: + '@graphql-typed-document-node/core': 3.1.1(graphql@16.6.0) + '@wry/context': 0.7.4 + '@wry/equality': 0.5.7 + '@wry/trie': 0.4.3 + graphql: 16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) + hoist-non-react-statics: 3.3.2 + optimism: 0.17.5 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + response-iterator: 0.2.6 + symbol-observable: 4.0.0 + ts-invariant: 0.10.3 + tslib: 2.6.2 + zen-observable-ts: 1.2.5 + dev: false + + /@aptos-labs/aptos-client@0.0.2: + resolution: {integrity: sha512-FgKZb5zDPz8MmAcVxXzYhxP6OkzuIPoDRJp48YJ8+vrZ9EOZ35HaWGN2M3u+GPdnFE9mODFqkxw3azh3kHGZjQ==} + engines: {node: '>=15.10.0'} + dependencies: + axios: 0.27.2 + got: 11.8.6 + dev: false + + /@ardatan/relay-compiler@12.0.0(graphql@16.6.0): + resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} + hasBin: true + peerDependencies: + graphql: '*' + dependencies: + '@babel/core': 7.23.2 + '@babel/generator': 7.23.0 + '@babel/parser': 7.23.0 + '@babel/runtime': 7.23.2 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + babel-preset-fbjs: 3.4.0(@babel/core@7.23.2) + chalk: 4.1.2 + fb-watchman: 2.0.2 + fbjs: 3.0.4 + glob: 7.2.3 + graphql: 16.6.0 + immutable: 3.7.6 + invariant: 2.2.4 + nullthrows: 1.1.1 + relay-runtime: 12.0.0 + signedsource: 1.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - encoding + - supports-color + + /@ardatan/sync-fetch@0.0.1: + resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} + engines: {node: '>=14'} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: true + /@aws-crypto/crc32@3.0.0: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: @@ -8735,6 +8837,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-import-assertions@7.22.5: + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} @@ -16949,6 +17060,600 @@ packages: /@gar/promisify@1.1.3: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + /@graphql-codegen/cli@3.2.2(@types/node@18.15.11)(graphql@16.6.0): + resolution: {integrity: sha512-u+dm/SW1heLnUL4Tyf5Uv0AxOFhTCmUPHKwRLq2yE8MPhv7+Ti4vxxUP/XGoaMNRuHlN37wLI7tpFLV1Hhm22Q==} + hasBin: true + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@babel/generator': 7.23.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + '@graphql-codegen/core': 3.1.0(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 4.2.0(graphql@16.6.0) + '@graphql-tools/apollo-engine-loader': 7.3.26(graphql@16.6.0) + '@graphql-tools/code-file-loader': 7.3.23(graphql@16.6.0) + '@graphql-tools/git-loader': 7.3.0(graphql@16.6.0) + '@graphql-tools/github-loader': 7.3.28(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.6.0) + '@graphql-tools/json-file-loader': 7.4.18(graphql@16.6.0) + '@graphql-tools/load': 7.8.14(graphql@16.6.0) + '@graphql-tools/prisma-loader': 7.2.72(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-tools/url-loader': 7.17.18(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@parcel/watcher': 2.3.0 + '@whatwg-node/fetch': 0.8.8 + chalk: 4.1.2 + cosmiconfig: 7.1.0 + debounce: 1.2.1 + detect-indent: 6.1.0 + graphql: 16.6.0 + graphql-config: 4.5.0(@types/node@18.15.11)(graphql@16.6.0) + inquirer: 8.2.6 + is-glob: 4.0.3 + jiti: 1.20.0 + json-to-pretty-yaml: 1.2.2 + listr2: 4.0.5 + log-symbols: 4.1.0 + micromatch: 4.0.5 + shell-quote: 1.8.1 + string-env-interpolation: 1.0.1 + ts-log: 2.2.5 + tslib: 2.6.2 + yaml: 1.10.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - encoding + - enquirer + - supports-color + - utf-8-validate + dev: true + + /@graphql-codegen/core@3.1.0(graphql@16.6.0): + resolution: {integrity: sha512-DH1/yaR7oJE6/B+c6ZF2Tbdh7LixF1K8L+8BoSubjNyQ8pNwR4a70mvc1sv6H7qgp6y1bPQ9tKE+aazRRshysw==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 4.2.0(graphql@16.6.0) + '@graphql-tools/schema': 9.0.19(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.5.0 + dev: true + + /@graphql-codegen/plugin-helpers@4.2.0(graphql@16.6.0): + resolution: {integrity: sha512-THFTCfg+46PXlXobYJ/OoCX6pzjI+9woQqCjdyKtgoI0tn3Xq2HUUCiidndxUpEYVrXb5pRiRXb7b/ZbMQqD0A==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + change-case-all: 1.0.15 + common-tags: 1.8.2 + graphql: 16.6.0 + import-from: 4.0.0 + lodash: 4.17.21 + tslib: 2.5.0 + + /@graphql-codegen/plugin-helpers@5.0.1(graphql@16.6.0): + resolution: {integrity: sha512-6L5sb9D8wptZhnhLLBcheSPU7Tg//DGWgc5tQBWX46KYTOTQHGqDpv50FxAJJOyFVJrveN9otWk9UT9/yfY4ww==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-tools/utils': 10.0.7(graphql@16.6.0) + change-case-all: 1.0.15 + common-tags: 1.8.2 + graphql: 16.6.0 + import-from: 4.0.0 + lodash: 4.17.21 + tslib: 2.5.0 + dev: true + + /@graphql-codegen/schema-ast@3.0.1(graphql@16.6.0): + resolution: {integrity: sha512-rTKTi4XiW4QFZnrEqetpiYEWVsOFNoiR/v3rY9mFSttXFbIwNXPme32EspTiGWmEEdHY8UuTDtZN3vEcs/31zw==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 4.2.0(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.5.0 + + /@graphql-codegen/typescript-document-nodes@4.0.1(graphql@16.6.0): + resolution: {integrity: sha512-Q+0xER6T5/qVY3XYdT+H5Dnn4kWIQefV8IlV2KyxRfCxQVgJT4h5wA4NU+n2qd4B6Kn39gBA+mle9x8Lx2acrw==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.6.0) + auto-bind: 4.0.0 + graphql: 16.6.0 + tslib: 2.5.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/typescript-operations@3.0.2(graphql@16.6.0): + resolution: {integrity: sha512-FYi5QcOsBZZvBKlzBQ+jpBCUxMo9g3fTYa2v1+rqooG6SiW/lQyk2CNL5tsYAt6TLmH3rws8rzSUil0DWNsflQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 4.2.0(graphql@16.6.0) + '@graphql-codegen/typescript': 3.0.4(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 3.0.2(graphql@16.6.0) + auto-bind: 4.0.0 + graphql: 16.6.0 + tslib: 2.5.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@graphql-codegen/typescript@3.0.4(graphql@16.6.0): + resolution: {integrity: sha512-x4O47447DZrWNtE/l5CU9QzzW4m1RbmCEdijlA3s2flG/y1Ckqdemob4CWfilSm5/tZ3w1junVDY616RDTSvZw==} + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 4.2.0(graphql@16.6.0) + '@graphql-codegen/schema-ast': 3.0.1(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 3.1.1(graphql@16.6.0) + auto-bind: 4.0.0 + graphql: 16.6.0 + tslib: 2.5.0 + transitivePeerDependencies: + - encoding + - supports-color + + /@graphql-codegen/visitor-plugin-common@3.0.2(graphql@16.6.0): + resolution: {integrity: sha512-dKblRFrB0Fdl3+nPlzlLBka+TN/EGwr/q09mwry0H58z3j6gXkMbsdPr+dc8MhgOV7w/8egRvSPIvd7m6eFCnw==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 4.2.0(graphql@16.6.0) + '@graphql-tools/optimize': 1.4.0(graphql@16.6.0) + '@graphql-tools/relay-operation-optimizer': 6.5.18(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + auto-bind: 4.0.0 + change-case-all: 1.0.15 + dependency-graph: 0.11.0 + graphql: 16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) + parse-filepath: 1.0.2 + tslib: 2.5.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@graphql-codegen/visitor-plugin-common@3.1.1(graphql@16.6.0): + resolution: {integrity: sha512-uAfp+zu/009R3HUAuTK2AamR1bxIltM6rrYYI6EXSmkM3rFtFsLTuJhjUDj98HcUCszJZrADppz8KKLGRUVlNg==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 4.2.0(graphql@16.6.0) + '@graphql-tools/optimize': 1.4.0(graphql@16.6.0) + '@graphql-tools/relay-operation-optimizer': 6.5.18(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + auto-bind: 4.0.0 + change-case-all: 1.0.15 + dependency-graph: 0.11.0 + graphql: 16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) + parse-filepath: 1.0.2 + tslib: 2.5.0 + transitivePeerDependencies: + - encoding + - supports-color + + /@graphql-codegen/visitor-plugin-common@4.0.1(graphql@16.6.0): + resolution: {integrity: sha512-Bi/1z0nHg4QMsAqAJhds+ForyLtk7A3HQOlkrZNm3xEkY7lcBzPtiOTLBtvziwopBsXUxqeSwVjOOFPLS5Yw1Q==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.6.0) + '@graphql-tools/optimize': 2.0.0(graphql@16.6.0) + '@graphql-tools/relay-operation-optimizer': 7.0.0(graphql@16.6.0) + '@graphql-tools/utils': 10.0.7(graphql@16.6.0) + auto-bind: 4.0.0 + change-case-all: 1.0.15 + dependency-graph: 0.11.0 + graphql: 16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) + parse-filepath: 1.0.2 + tslib: 2.5.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-tools/apollo-engine-loader@7.3.26(graphql@16.6.0): + resolution: {integrity: sha512-h1vfhdJFjnCYn9b5EY1Z91JTF0KB3hHVJNQIsiUV2mpQXZdeOXQoaWeYEKaiI5R6kwBw5PP9B0fv3jfUIG8LyQ==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@whatwg-node/fetch': 0.8.8 + graphql: 16.6.0 + tslib: 2.6.2 + transitivePeerDependencies: + - encoding + dev: true + + /@graphql-tools/batch-execute@8.5.22(graphql@16.6.0): + resolution: {integrity: sha512-hcV1JaY6NJQFQEwCKrYhpfLK8frSXDbtNMoTur98u10Cmecy1zrqNKSqhEyGetpgHxaJRqszGzKeI3RuroDN6A==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + dataloader: 2.2.2 + graphql: 16.6.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/code-file-loader@7.3.23(graphql@16.6.0): + resolution: {integrity: sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/graphql-tag-pluck': 7.5.2(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + globby: 11.1.0 + graphql: 16.6.0 + tslib: 2.6.2 + unixify: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@graphql-tools/delegate@9.0.35(graphql@16.6.0): + resolution: {integrity: sha512-jwPu8NJbzRRMqi4Vp/5QX1vIUeUPpWmlQpOkXQD2r1X45YsVceyUUBnktCrlJlDB4jPRVy7JQGwmYo3KFiOBMA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/batch-execute': 8.5.22(graphql@16.6.0) + '@graphql-tools/executor': 0.0.20(graphql@16.6.0) + '@graphql-tools/schema': 9.0.19(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + dataloader: 2.2.2 + graphql: 16.6.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/executor-graphql-ws@0.0.14(graphql@16.6.0): + resolution: {integrity: sha512-P2nlkAsPZKLIXImFhj0YTtny5NQVGSsKnhi7PzXiaHSXc6KkzqbWZHKvikD4PObanqg+7IO58rKFpGXP7eeO+w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@repeaterjs/repeater': 3.0.4 + '@types/ws': 8.5.5 + graphql: 16.6.0 + graphql-ws: 5.12.1(graphql@16.6.0) + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.6.2 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@graphql-tools/executor-http@0.1.10(@types/node@18.15.11)(graphql@16.6.0): + resolution: {integrity: sha512-hnAfbKv0/lb9s31LhWzawQ5hghBfHS+gYWtqxME6Rl0Aufq9GltiiLBcl7OVVOnkLF0KhwgbYP1mB5VKmgTGpg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@repeaterjs/repeater': 3.0.4 + '@whatwg-node/fetch': 0.8.8 + dset: 3.1.3 + extract-files: 11.0.0 + graphql: 16.6.0 + meros: 1.3.0(@types/node@18.15.11) + tslib: 2.6.2 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@graphql-tools/executor-legacy-ws@0.0.11(graphql@16.6.0): + resolution: {integrity: sha512-4ai+NnxlNfvIQ4c70hWFvOZlSUN8lt7yc+ZsrwtNFbFPH/EroIzFMapAxM9zwyv9bH38AdO3TQxZ5zNxgBdvUw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@types/ws': 8.5.5 + graphql: 16.6.0 + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.6.2 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@graphql-tools/executor@0.0.20(graphql@16.6.0): + resolution: {integrity: sha512-GdvNc4vszmfeGvUqlcaH1FjBoguvMYzxAfT6tDd4/LgwymepHhinqLNA5otqwVLW+JETcDaK7xGENzFomuE6TA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) + '@repeaterjs/repeater': 3.0.4 + graphql: 16.6.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/git-loader@7.3.0(graphql@16.6.0): + resolution: {integrity: sha512-gcGAK+u16eHkwsMYqqghZbmDquh8QaO24Scsxq+cVR+vx1ekRlsEiXvu+yXVDbZdcJ6PBIbeLcQbEu+xhDLmvQ==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/graphql-tag-pluck': 7.5.2(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + is-glob: 4.0.3 + micromatch: 4.0.5 + tslib: 2.6.2 + unixify: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@graphql-tools/github-loader@7.3.28(@types/node@18.15.11)(graphql@16.6.0): + resolution: {integrity: sha512-OK92Lf9pmxPQvjUNv05b3tnVhw0JRfPqOf15jZjyQ8BfdEUrJoP32b4dRQQem/wyRL24KY4wOfArJNqzpsbwCA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/executor-http': 0.1.10(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-tools/graphql-tag-pluck': 7.5.2(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@whatwg-node/fetch': 0.8.8 + graphql: 16.6.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - encoding + - supports-color + dev: true + + /@graphql-tools/graphql-file-loader@7.5.17(graphql@16.6.0): + resolution: {integrity: sha512-hVwwxPf41zOYgm4gdaZILCYnKB9Zap7Ys9OhY1hbwuAuC4MMNY9GpUjoTU3CQc3zUiPoYStyRtUGkHSJZ3HxBw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/import': 6.7.18(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + globby: 11.1.0 + graphql: 16.6.0 + tslib: 2.6.2 + unixify: 1.0.0 + dev: true + + /@graphql-tools/graphql-tag-pluck@7.5.2(graphql@16.6.0): + resolution: {integrity: sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@babel/parser': 7.23.0 + '@babel/plugin-syntax-import-assertions': 7.22.5 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@graphql-tools/import@6.7.18(graphql@16.6.0): + resolution: {integrity: sha512-XQDdyZTp+FYmT7as3xRWH/x8dx0QZA2WZqfMF5EWb36a0PiH7WwlRQYIdyYXj8YCLpiWkeBXgBRHmMnwEYR8iQ==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + resolve-from: 5.0.0 + tslib: 2.6.2 + dev: true + + /@graphql-tools/json-file-loader@7.4.18(graphql@16.6.0): + resolution: {integrity: sha512-AJ1b6Y1wiVgkwsxT5dELXhIVUPs/u3VZ8/0/oOtpcoyO/vAeM5rOvvWegzicOOnQw8G45fgBRMkkRfeuwVt6+w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + globby: 11.1.0 + graphql: 16.6.0 + tslib: 2.6.2 + unixify: 1.0.0 + dev: true + + /@graphql-tools/load@7.8.14(graphql@16.6.0): + resolution: {integrity: sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/schema': 9.0.19(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + p-limit: 3.1.0 + tslib: 2.6.2 + dev: true + + /@graphql-tools/merge@8.4.2(graphql@16.6.0): + resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.6.2 + dev: true + + /@graphql-tools/optimize@1.4.0(graphql@16.6.0): + resolution: {integrity: sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.6.0 + tslib: 2.6.2 + + /@graphql-tools/optimize@2.0.0(graphql@16.6.0): + resolution: {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.6.0 + tslib: 2.6.2 + dev: true + + /@graphql-tools/prisma-loader@7.2.72(@types/node@18.15.11)(graphql@16.6.0): + resolution: {integrity: sha512-0a7uV7Fky6yDqd0tI9+XMuvgIo6GAqiVzzzFV4OSLry4AwiQlI3igYseBV7ZVOGhedOTqj/URxjpiv07hRcwag==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/url-loader': 7.17.18(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@types/js-yaml': 4.0.5 + '@types/json-stable-stringify': 1.0.35 + '@whatwg-node/fetch': 0.8.8 + chalk: 4.1.2 + debug: 4.3.4 + dotenv: 16.0.3 + graphql: 16.6.0 + graphql-request: 6.1.0(graphql@16.6.0) + http-proxy-agent: 6.1.1 + https-proxy-agent: 6.2.1 + jose: 4.15.4 + js-yaml: 4.1.0 + json-stable-stringify: 1.0.2 + lodash: 4.17.21 + scuid: 1.1.0 + tslib: 2.6.2 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /@graphql-tools/relay-operation-optimizer@6.5.18(graphql@16.6.0): + resolution: {integrity: sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.6.2 + transitivePeerDependencies: + - encoding + - supports-color + + /@graphql-tools/relay-operation-optimizer@7.0.0(graphql@16.6.0): + resolution: {integrity: sha512-UNlJi5y3JylhVWU4MBpL0Hun4Q7IoJwv9xYtmAz+CgRa066szzY7dcuPfxrA7cIGgG/Q6TVsKsYaiF4OHPs1Fw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) + '@graphql-tools/utils': 10.0.7(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.6.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-tools/schema@9.0.19(graphql@16.6.0): + resolution: {integrity: sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/merge': 8.4.2(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/url-loader@7.17.18(@types/node@18.15.11)(graphql@16.6.0): + resolution: {integrity: sha512-ear0CiyTj04jCVAxi7TvgbnGDIN2HgqzXzwsfcqiVg9cvjT40NcMlZ2P1lZDgqMkZ9oyLTV8Bw6j+SyG6A+xPw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/delegate': 9.0.35(graphql@16.6.0) + '@graphql-tools/executor-graphql-ws': 0.0.14(graphql@16.6.0) + '@graphql-tools/executor-http': 0.1.10(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-tools/executor-legacy-ws': 0.0.11(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-tools/wrap': 9.4.2(graphql@16.6.0) + '@types/ws': 8.5.5 + '@whatwg-node/fetch': 0.8.8 + graphql: 16.6.0 + isomorphic-ws: 5.0.0(ws@8.14.1) + tslib: 2.6.2 + value-or-promise: 1.0.12 + ws: 8.14.1 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + dev: true + + /@graphql-tools/utils@10.0.7(graphql@16.6.0): + resolution: {integrity: sha512-KOdeMj6Hd/MENDaqPbws3YJl3wVy0DeYnL7PyUms5Skyf7uzI9INynDwPMhLXfSb0/ph6BXTwMd5zBtWbF8tBQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-typed-document-node/core': 3.1.1(graphql@16.6.0) + dset: 3.1.3 + graphql: 16.6.0 + tslib: 2.6.2 + dev: true + + /@graphql-tools/utils@9.2.1(graphql@16.6.0): + resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-typed-document-node/core': 3.1.1(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.6.2 + + /@graphql-tools/wrap@9.4.2(graphql@16.6.0): + resolution: {integrity: sha512-DFcd9r51lmcEKn0JW43CWkkI2D6T9XI1juW/Yo86i04v43O9w2/k4/nx2XTJv4Yv+iXwUw7Ok81PGltwGJSDSA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/delegate': 9.0.35(graphql@16.6.0) + '@graphql-tools/schema': 9.0.19(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + /@graphql-typed-document-node/core@3.1.1(graphql@15.8.0): resolution: {integrity: sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==} peerDependencies: @@ -16956,6 +17661,21 @@ packages: dependencies: graphql: 15.8.0 + /@graphql-typed-document-node/core@3.1.1(graphql@16.6.0): + resolution: {integrity: sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + graphql: 16.6.0 + + /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.6.0 + dev: true + /@grpc/grpc-js@1.6.7: resolution: {integrity: sha512-eBM03pu9hd3VqDQG+kHahiG1x80RGkkqqRb1Pchcwqej/KkAH95gAvKs6laqaHCycYaPK+TKuNQnOz9UXYA8qw==} engines: {node: ^8.13.0 || >=10.10.0} @@ -19492,6 +20212,163 @@ packages: engines: {node: '>=8.0.0'} dev: true + /@parcel/watcher-android-arm64@2.3.0: + resolution: {integrity: sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-darwin-arm64@2.3.0: + resolution: {integrity: sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-darwin-x64@2.3.0: + resolution: {integrity: sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-freebsd-x64@2.3.0: + resolution: {integrity: sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-arm-glibc@2.3.0: + resolution: {integrity: sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-arm64-glibc@2.3.0: + resolution: {integrity: sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-arm64-musl@2.3.0: + resolution: {integrity: sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-x64-glibc@2.3.0: + resolution: {integrity: sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-x64-musl@2.3.0: + resolution: {integrity: sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-win32-arm64@2.3.0: + resolution: {integrity: sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-win32-ia32@2.3.0: + resolution: {integrity: sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-win32-x64@2.3.0: + resolution: {integrity: sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher@2.3.0: + resolution: {integrity: sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==} + engines: {node: '>= 10.0.0'} + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.5 + node-addon-api: 7.0.0 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.3.0 + '@parcel/watcher-darwin-arm64': 2.3.0 + '@parcel/watcher-darwin-x64': 2.3.0 + '@parcel/watcher-freebsd-x64': 2.3.0 + '@parcel/watcher-linux-arm-glibc': 2.3.0 + '@parcel/watcher-linux-arm64-glibc': 2.3.0 + '@parcel/watcher-linux-arm64-musl': 2.3.0 + '@parcel/watcher-linux-x64-glibc': 2.3.0 + '@parcel/watcher-linux-x64-musl': 2.3.0 + '@parcel/watcher-win32-arm64': 2.3.0 + '@parcel/watcher-win32-ia32': 2.3.0 + '@parcel/watcher-win32-x64': 2.3.0 + dev: true + + /@peculiar/asn1-schema@2.3.8: + resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} + dependencies: + asn1js: 3.0.5 + pvtsutils: 1.3.5 + tslib: 2.6.2 + dev: true + + /@peculiar/json-schema@1.1.12: + resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} + engines: {node: '>=8.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@peculiar/webcrypto@1.4.3: + resolution: {integrity: sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A==} + engines: {node: '>=10.12.0'} + dependencies: + '@peculiar/asn1-schema': 2.3.8 + '@peculiar/json-schema': 1.1.12 + pvtsutils: 1.3.5 + tslib: 2.6.2 + webcrypto-core: 1.7.7 + dev: true + /@pkgr/utils@2.3.1: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -21039,6 +21916,10 @@ packages: warn-once: 0.1.0 dev: false + /@repeaterjs/repeater@3.0.4: + resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} + dev: true + /@rnx-kit/babel-preset-metro-react-native@1.1.0: resolution: {integrity: sha512-HJYNodzUIlFZF6CuDgouK4v6w3mPmhHqAPx0IBG90z2j1XVnLLFj5g5I4B3oKUFDS1uxquDVwYCA6NFdyNAn4Q==} peerDependencies: @@ -21622,7 +22503,6 @@ packages: /@sindresorhus/is@4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - dev: true /@sinonjs/commons@1.8.3: resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} @@ -25831,7 +26711,6 @@ packages: engines: {node: '>=10'} dependencies: defer-to-connect: 2.0.1 - dev: true /@taquito/http-utils@13.0.1: resolution: {integrity: sha512-eHzd0HSL3qX6bOOSaQClm+0XmpbSNcJP69uzaBJwfXo7ntQR1bUfGLn6+1Hgsk/lJ0JxakD2PDA4aaeajHvyPw==} @@ -26281,7 +27160,6 @@ packages: '@types/keyv': 3.1.4 '@types/node': 18.16.19 '@types/responselike': 1.0.0 - dev: true /@types/cbor@6.0.0: resolution: {integrity: sha512-mGQ1lbYOwVti5Xlarn1bTeBZqgY0kstsdjnkoEovgohYKdBjGejHyNGXHdMBeqyQazIv32Jjp33+5pBEaSRy2w==} @@ -26522,7 +27400,6 @@ packages: /@types/http-cache-semantics@4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} - dev: true /@types/http-proxy@1.17.9: resolution: {integrity: sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==} @@ -26630,7 +27507,6 @@ packages: /@types/js-yaml@4.0.5: resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} - dev: false /@types/jsdom@16.2.15: resolution: {integrity: sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==} @@ -26654,6 +27530,10 @@ packages: /@types/json-schema@7.0.14: resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} + /@types/json-stable-stringify@1.0.35: + resolution: {integrity: sha512-zlCWqsRBI0+ANN7dzGeDFJ4CHaVFTLqBNRS11GjR2mHCW6XxNtnMxhQzBKMzfsnjI8oI+kWq2vBwinyQpZVSsg==} + dev: true + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -28704,6 +29584,51 @@ packages: webpack-cli: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.88.2) webpack-dev-server: 4.15.1(webpack-cli@4.10.0)(webpack@5.88.2) + /@whatwg-node/events@0.0.3: + resolution: {integrity: sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==} + dev: true + + /@whatwg-node/fetch@0.8.8: + resolution: {integrity: sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==} + dependencies: + '@peculiar/webcrypto': 1.4.3 + '@whatwg-node/node-fetch': 0.3.6 + busboy: 1.6.0 + urlpattern-polyfill: 8.0.2 + web-streams-polyfill: 3.2.1 + dev: true + + /@whatwg-node/node-fetch@0.3.6: + resolution: {integrity: sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==} + dependencies: + '@whatwg-node/events': 0.0.3 + busboy: 1.6.0 + fast-querystring: 1.1.2 + fast-url-parser: 1.1.3 + tslib: 2.6.2 + dev: true + + /@wry/context@0.7.4: + resolution: {integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + + /@wry/equality@0.5.7: + resolution: {integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + + /@wry/trie@0.4.3: + resolution: {integrity: sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + /@xmldom/xmldom@0.7.9: resolution: {integrity: sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==} engines: {node: '>=10.0.0'} @@ -29060,6 +29985,15 @@ packages: transitivePeerDependencies: - supports-color + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /agentkeepalive@4.3.0: resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} @@ -29443,13 +30377,14 @@ packages: /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - /aptos@1.3.16: - resolution: {integrity: sha512-LxI4XctQ5VeL+HokjwuGPwsb1fcydLIn4agFXyhn7hSYosTLNRxQ3UIixyP4Fmv6qPBjQVu8hELVSlThQk/EjA==} + /aptos@1.20.0: + resolution: {integrity: sha512-driZt7qEr4ndKqqVHMyuFsQAHy4gJ4HPQttgVIpeDfnOIEnIV7A2jyJ9EYO2A+MayuyxXB+7yCNXT4HyBFJdpA==} engines: {node: '>=11.0.0'} dependencies: + '@aptos-labs/aptos-client': 0.0.2 '@noble/hashes': 1.1.3 '@scure/bip39': 1.1.0 - axios: 0.27.2 + eventemitter3: 5.0.1 form-data: 4.0.0 tweetnacl: 1.0.3 dev: false @@ -29756,6 +30691,15 @@ packages: safer-buffer: 2.1.2 dev: false + /asn1js@3.0.5: + resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} + engines: {node: '>=12.0.0'} + dependencies: + pvtsutils: 1.3.5 + pvutils: 1.1.3 + tslib: 2.6.2 + dev: true + /assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} @@ -29890,6 +30834,10 @@ packages: engines: {node: '>=4'} dev: false + /auto-bind@4.0.0: + resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} + engines: {node: '>=8'} + /autoprefixer@10.4.16(postcss@8.4.31): resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} @@ -32044,7 +32992,6 @@ packages: /cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} - dev: true /cacheable-request@6.1.0: resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} @@ -32070,7 +33017,6 @@ packages: lowercase-keys: 2.0.0 normalize-url: 6.1.0 responselike: 2.0.1 - dev: true /cached-path-relative@1.1.0: resolution: {integrity: sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==} @@ -32201,6 +33147,13 @@ packages: resolution: {integrity: sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg==} dev: false + /capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case-first: 2.0.2 + /capture-exit@2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} engines: {node: 6.* || 8.* || >= 10.*} @@ -32313,6 +33266,36 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true + /change-case-all@1.0.15: + resolution: {integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==} + dependencies: + change-case: 4.1.2 + is-lower-case: 2.0.2 + is-upper-case: 2.0.2 + lower-case: 2.0.2 + lower-case-first: 2.0.2 + sponge-case: 1.0.1 + swap-case: 2.0.2 + title-case: 3.0.3 + upper-case: 2.0.2 + upper-case-first: 2.0.2 + + /change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.6.2 + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -32622,6 +33605,11 @@ packages: resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} dev: true + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -32935,7 +33923,6 @@ packages: /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} - dev: false /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -33269,6 +34256,13 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case: 2.0.2 + /constants-browserify@1.0.0: resolution: {integrity: sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=} @@ -34883,6 +35877,10 @@ packages: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true + /dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + dev: true + /date-fns@1.30.1: resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==} dev: true @@ -34924,6 +35922,10 @@ packages: mimic-fn: 3.1.0 dev: false + /debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + dev: true + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -35144,7 +36146,6 @@ packages: /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} - dev: true /deferred-leveldown@0.2.0: resolution: {integrity: sha1-LO8fER4cV4cNi7uK8mUOWHzS9bQ=} @@ -35281,6 +36282,10 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + /dependency-graph@0.11.0: + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + engines: {node: '>= 0.6.0'} + /deprecated-react-native-prop-types@4.1.0: resolution: {integrity: sha512-WfepZHmRbbdTvhcolb8aOKEvQdcmTMn5tKLbqbXmkBvjFjRVWAYqsXk/DBsV8TZxws8SdGHLuHaJrHSQUPRdfw==} dependencies: @@ -35812,6 +36817,11 @@ packages: tslib: 2.6.2 dev: true + /dset@3.1.3: + resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} + engines: {node: '>=4'} + dev: true + /dtrace-provider@0.8.8: resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==} engines: {node: '>=0.10'} @@ -37760,7 +38770,6 @@ packages: /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: true /events@1.1.1: resolution: {integrity: sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=} @@ -38642,6 +39651,11 @@ packages: - supports-color dev: true + /extract-files@11.0.0: + resolution: {integrity: sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==} + engines: {node: ^12.20 || >= 14.13} + dev: true + /extract-zip@2.0.1: resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -38682,6 +39696,10 @@ packages: pure-rand: 6.0.2 dev: true + /fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + dev: true + /fast-deep-equal@2.0.1: resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} dev: true @@ -38752,6 +39770,12 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + /fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + dependencies: + fast-decode-uri-component: 1.0.1 + dev: true + /fast-redact@3.1.1: resolution: {integrity: sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A==} engines: {node: '>=6'} @@ -38812,7 +39836,6 @@ packages: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 - dev: false /fbemitter@3.0.0: resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} @@ -40284,7 +41307,6 @@ packages: lowercase-keys: 2.0.0 p-cancelable: 2.1.1 responselike: 2.0.1 - dev: true /got@7.1.0: resolution: {integrity: sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==} @@ -40341,6 +41363,47 @@ packages: /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + /graphql-config@4.5.0(@types/node@18.15.11)(graphql@16.6.0): + resolution: {integrity: sha512-x6D0/cftpLUJ0Ch1e5sj1TZn6Wcxx4oMfmhaG9shM0DKajA9iR+j1z86GSTQ19fShbGvrSSvbIQsHku6aQ6BBw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + dependencies: + '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.6.0) + '@graphql-tools/json-file-loader': 7.4.18(graphql@16.6.0) + '@graphql-tools/load': 7.8.14(graphql@16.6.0) + '@graphql-tools/merge': 8.4.2(graphql@16.6.0) + '@graphql-tools/url-loader': 7.17.18(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + cosmiconfig: 8.0.0 + graphql: 16.6.0 + jiti: 1.17.1 + minimatch: 4.2.3 + string-env-interpolation: 1.0.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + dev: true + + /graphql-request@6.1.0(graphql@16.6.0): + resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + peerDependencies: + graphql: 14 - 16 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) + cross-fetch: 3.1.5 + graphql: 16.6.0 + transitivePeerDependencies: + - encoding + dev: true + /graphql-tag@2.12.6(graphql@15.8.0): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -40350,10 +41413,32 @@ packages: graphql: 15.8.0 tslib: 2.6.2 + /graphql-tag@2.12.6(graphql@16.6.0): + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + graphql: 16.6.0 + tslib: 2.6.2 + + /graphql-ws@5.12.1(graphql@16.6.0): + resolution: {integrity: sha512-umt4f5NnMK46ChM2coO36PTFhHouBrK9stWWBczERguwYrGnPNxJ9dimU6IyOBfOkC6Izhkg4H8+F51W/8CYDg==} + engines: {node: '>=10'} + peerDependencies: + graphql: '>=0.11 <=16' + dependencies: + graphql: 16.6.0 + dev: true + /graphql@15.8.0: resolution: {integrity: sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==} engines: {node: '>= 10.x'} + /graphql@16.6.0: + resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + /gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} @@ -40758,6 +41843,12 @@ packages: hasBin: true requiresBuild: true + /header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + dependencies: + capital-case: 1.0.4 + tslib: 2.6.2 + /heap@0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} dev: false @@ -41090,6 +42181,16 @@ packages: - supports-color dev: true + /http-proxy-agent@6.1.1: + resolution: {integrity: sha512-JRCz+4Whs6yrrIoIlrH+ZTmhrRwtMnmOHsHn8GFEn9O2sVfSE+DAZ3oyyGIKF8tjJEeSJmP89j7aTjVsSqsU0g==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /http-proxy-middleware@2.0.6(@types/express@4.17.13): resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} engines: {node: '>=12.0.0'} @@ -41151,7 +42252,6 @@ packages: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - dev: true /https-browserify@1.0.0: resolution: {integrity: sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=} @@ -41165,6 +42265,16 @@ packages: transitivePeerDependencies: - supports-color + /https-proxy-agent@6.2.1: + resolution: {integrity: sha512-ONsE3+yfZF2caH5+bJlcddtWqNI3Gvs5A38+ngvljxaBiRXRswym2c7yf8UAeFpRFKjFNHIFEHqR/OLAWJzyiA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true @@ -41310,6 +42420,10 @@ packages: resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} dev: false + /immutable@3.7.6: + resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} + engines: {node: '>=0.8.0'} + /import-fresh@2.0.0: resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} engines: {node: '>=4'} @@ -41324,6 +42438,10 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 + /import-from@4.0.0: + resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==} + engines: {node: '>=12.2'} + /import-lazy@2.1.0: resolution: {integrity: sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=} engines: {node: '>=4'} @@ -41431,6 +42549,27 @@ packages: through: 2.3.8 dev: true + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: true + /int64-buffer@1.0.1: resolution: {integrity: sha512-+3azY4pXrjAupJHU1V9uGERWlhoqNswJNji6aD/02xac7oxol508AsMC5lxKhEqyZeDFy3enq5OGWXF4u75hiw==} engines: {node: '>= 4.5.0'} @@ -41534,7 +42673,6 @@ packages: dependencies: is-relative: 1.0.0 is-windows: 1.0.2 - dev: true /is-accessor-descriptor@0.1.6: resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} @@ -41853,6 +42991,11 @@ packages: dependencies: is-glob: 2.0.1 + /is-lower-case@2.0.2: + resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} + dependencies: + tslib: 2.6.2 + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} @@ -42007,7 +43150,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-unc-path: 1.0.0 - dev: true /is-retry-allowed@1.2.0: resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} @@ -42107,12 +43249,16 @@ packages: engines: {node: '>=0.10.0'} dependencies: unc-path-regex: 0.1.2 - dev: true /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + /is-upper-case@2.0.2: + resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} + dependencies: + tslib: 2.6.2 + /is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: true @@ -42151,7 +43297,6 @@ packages: /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - dev: true /is-word-character@1.0.4: resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} @@ -42245,6 +43390,22 @@ packages: ws: 7.5.9 dev: false + /isomorphic-ws@5.0.0(ws@8.13.0): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.13.0 + dev: true + + /isomorphic-ws@5.0.0(ws@8.14.1): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.14.1 + dev: true + /isotope-horizontal@2.0.1: resolution: {integrity: sha512-rTm8K3d3Xt/pQBOdZj06IJpNkAjL+my4SWQLxJhjnxWTdDEX+r5qBsdstOou9kIvJFkgLYaR+YOog+7en6kHXw==} dependencies: @@ -45281,10 +46442,14 @@ packages: /jimp-compact@0.16.1: resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} + /jiti@1.17.1: + resolution: {integrity: sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw==} + hasBin: true + dev: true + /jiti@1.20.0: resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} hasBin: true - dev: false /jmespath@0.15.0: resolution: {integrity: sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=} @@ -45303,6 +46468,10 @@ packages: /join-component@1.1.0: resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} + /jose@4.15.4: + resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} + dev: true + /jotai@2.0.3(react@18.2.0): resolution: {integrity: sha512-MMjhSPAL3RoeZD9WbObufRT2quThEAEknHHridf2ma8Ml7ZVQmUiHk0ssdbR3F0h3kcwhYqSGJ59OjhPge7RRg==} engines: {node: '>=12.20.0'} @@ -45687,7 +46856,6 @@ packages: /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true /json-cycle@1.3.0: resolution: {integrity: sha512-FD/SedD78LCdSvJaOUQAXseT8oQBb5z6IVYaQaCrVUlu9zOAr1BDdKyVYQaSD/GDsAMrXpKcOyBD4LIl8nfjHw==} @@ -45745,6 +46913,12 @@ packages: /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + /json-stable-stringify@1.0.2: + resolution: {integrity: sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==} + dependencies: + jsonify: 0.0.1 + dev: true + /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} requiresBuild: true @@ -45755,6 +46929,14 @@ packages: delimit-stream: 0.1.0 dev: false + /json-to-pretty-yaml@1.2.2: + resolution: {integrity: sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==} + engines: {node: '>= 0.2.0'} + dependencies: + remedial: 1.0.8 + remove-trailing-spaces: 1.0.8 + dev: true + /json5@0.5.1: resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} hasBin: true @@ -45813,6 +46995,10 @@ packages: resolution: {integrity: sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==} dev: true + /jsonify@0.0.1: + resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} + dev: true + /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} @@ -45950,7 +47136,6 @@ packages: resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} dependencies: json-buffer: 3.0.1 - dev: true /khroma@2.0.0: resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} @@ -46497,6 +47682,25 @@ packages: figures: 2.0.0 dev: true + /listr2@4.0.5: + resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} + engines: {node: '>=12'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + /listr2@6.6.1: resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} engines: {node: '>=16.0.0'} @@ -46903,6 +48107,16 @@ packages: cli-cursor: 2.1.0 wrap-ansi: 3.0.1 + /log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + /log-update@5.0.1: resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -46991,6 +48205,11 @@ packages: get-func-name: 2.0.0 dev: false + /lower-case-first@2.0.2: + resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} + dependencies: + tslib: 2.6.2 + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: @@ -47262,7 +48481,6 @@ packages: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} requiresBuild: true - dev: true /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} @@ -47895,6 +49113,18 @@ packages: - supports-color dev: false + /meros@1.3.0(@types/node@18.15.11): + resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} + engines: {node: '>=13'} + peerDependencies: + '@types/node': '>=13' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 18.15.11 + dev: true + /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} @@ -48314,6 +49544,7 @@ packages: peerDependencies: '@babel/core': '*' dependencies: + '@babel/core': 7.23.2 '@babel/plugin-proposal-async-generator-functions': 7.20.7 '@babel/plugin-proposal-class-properties': 7.18.6 '@babel/plugin-proposal-export-default-from': 7.16.7 @@ -48506,6 +49737,7 @@ packages: peerDependencies: '@babel/core': '*' dependencies: + '@babel/core': 7.23.2 babel-preset-fbjs: 3.4.0 hermes-parser: 0.12.0 metro-react-native-babel-preset: 0.76.8 @@ -49545,6 +50777,13 @@ packages: dependencies: brace-expansion: 1.1.11 + /minimatch@4.2.3: + resolution: {integrity: sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 1.1.11 + dev: true + /minimatch@5.1.0: resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} engines: {node: '>=10'} @@ -49891,6 +51130,10 @@ packages: resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} dev: true + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + /mv@2.1.1: resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} engines: {node: '>=0.8.0'} @@ -50321,6 +51564,10 @@ packages: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} dev: false + /node-addon-api@7.0.0: + resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} + dev: true + /node-dir@0.1.17: resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} engines: {node: '>= 0.10.5'} @@ -50997,6 +52244,14 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true + /optimism@0.17.5: + resolution: {integrity: sha512-TEcp8ZwK1RczmvMnvktxHSF2tKgMWjJ71xEFGX5ApLh67VsMSTy1ZUlipJw8W+KaqgOmQ+4pqwkeivY89j+4Vw==} + dependencies: + '@wry/context': 0.7.4 + '@wry/trie': 0.4.3 + tslib: 2.6.2 + dev: false + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -51115,7 +52370,6 @@ packages: /p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} - dev: true /p-defer@1.0.0: resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} @@ -51319,7 +52573,6 @@ packages: is-absolute: 1.0.0 map-cache: 0.2.2 path-root: 0.1.1 - dev: true /parse-headers@2.0.5: resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} @@ -51441,6 +52694,12 @@ packages: /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + /path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + /path-dirname@1.0.2: resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} requiresBuild: true @@ -51489,14 +52748,12 @@ packages: /path-root-regex@0.1.2: resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} engines: {node: '>=0.10.0'} - dev: true /path-root@0.1.1: resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} dependencies: path-root-regex: 0.1.2 - dev: true /path-scurry@1.7.0: resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==} @@ -53708,6 +54965,17 @@ packages: bitcoin-ops: 1.4.1 dev: false + /pvtsutils@1.3.5: + resolution: {integrity: sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==} + dependencies: + tslib: 2.6.2 + dev: true + + /pvutils@1.1.3: + resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} + engines: {node: '>=6.0.0'} + dev: true + /q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} @@ -53833,7 +55101,6 @@ packages: /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - dev: true /raf@3.4.1: resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} @@ -55957,6 +57224,15 @@ packages: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} + /relay-runtime@12.0.0: + resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} + dependencies: + '@babel/runtime': 7.23.2 + fbjs: 3.0.4 + invariant: 2.2.4 + transitivePeerDependencies: + - encoding + /remark-external-links@8.0.0: resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} dependencies: @@ -56152,6 +57428,10 @@ packages: - supports-color dev: true + /remedial@1.0.8: + resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} + dev: true + /remove-accents@0.4.2: resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} dev: false @@ -56181,6 +57461,10 @@ packages: /remove-trailing-slash@0.1.1: resolution: {integrity: sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==} + /remove-trailing-spaces@1.0.8: + resolution: {integrity: sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==} + dev: true + /renderkid@2.0.7: resolution: {integrity: sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==} dependencies: @@ -56295,7 +57579,6 @@ packages: /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - dev: true /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} @@ -56425,6 +57708,11 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /response-iterator@0.2.6: + resolution: {integrity: sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==} + engines: {node: '>=0.8'} + dev: false + /responselike@1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} dependencies: @@ -56435,7 +57723,6 @@ packages: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} dependencies: lowercase-keys: 2.0.0 - dev: true /restore-cursor@2.0.0: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} @@ -56915,6 +58202,10 @@ packages: /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + /scuid@1.1.0: + resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} + dev: true + /secp256k1@4.0.2: resolution: {integrity: sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==} engines: {node: '>=10.0.0'} @@ -57082,6 +58373,13 @@ packages: transitivePeerDependencies: - supports-color + /sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + upper-case-first: 2.0.2 + /serialize-error@2.1.0: resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} engines: {node: '>=0.10.0'} @@ -57341,6 +58639,9 @@ packages: engines: {node: '>=14'} dev: true + /signedsource@1.0.0: + resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} + /simple-cbor@0.4.1: resolution: {integrity: sha512-rijcxtwx2b4Bje3sqeIqw5EeW7UlOIC4YfOdwqIKacpvRQ/D78bWg/4/0m5e0U91oKvlGh7LlJuZCu07ISCC7w==} dev: false @@ -57504,6 +58805,12 @@ packages: - supports-color dev: true + /snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + /snakecase-keys@3.2.1: resolution: {integrity: sha512-CjU5pyRfwOtaOITYv5C8DzpZ8XA/ieRsDpr93HI2r6e3YInC6moZpSQbmUtg8cTk58tq2x3jcG2gv+p1IZGmMA==} engines: {node: '>=8'} @@ -57796,6 +59103,11 @@ packages: dependencies: through: 2.3.8 + /sponge-case@1.0.1: + resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} + dependencies: + tslib: 2.6.2 + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -58122,6 +59434,10 @@ packages: engines: {node: '>=0.6.19'} dev: true + /string-env-interpolation@1.0.1: + resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} + dev: true + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -58910,6 +60226,11 @@ packages: picocolors: 1.0.0 stable: 0.1.8 + /swap-case@2.0.2: + resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} + dependencies: + tslib: 2.6.2 + /swarm-js@0.1.40: resolution: {integrity: sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==} dependencies: @@ -58949,6 +60270,11 @@ packages: engines: {node: '>=0.10'} dev: false + /symbol-observable@4.0.0: + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} + dev: false + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -59634,6 +60960,11 @@ packages: '@popperjs/core': 2.11.5 dev: false + /title-case@3.0.3: + resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} + dependencies: + tslib: 2.6.2 + /title@3.5.3: resolution: {integrity: sha512-20JyowYglSEeCvZv3EZ0nZ046vLarO37prvV0mbtQV7C8DJPGgN967r8SJkqd3XK3K3lD3/Iyfp3avjfil8Q2Q==} hasBin: true @@ -59947,6 +61278,13 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + /ts-invariant@0.10.3: + resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + /ts-jest@28.0.7(jest@28.1.0)(typescript@5.1.3): resolution: {integrity: sha512-wWXCSmTwBVmdvWrOpYhal79bDpioDy4rTT+0vyUnE3ZzM7LOAAGG9NXwzkEL/a516rQEgnMmS/WKP9jBPCVJyA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -60162,6 +61500,10 @@ packages: webpack: 5.88.2 dev: false + /ts-log@2.2.5: + resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} + dev: true + /ts-node@10.7.0(@types/node@18.15.11)(source-map-support@0.5.21)(typescript@5.1.3): resolution: {integrity: sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==} hasBin: true @@ -60863,7 +62205,6 @@ packages: /unc-path-regex@0.1.2: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} - dev: true /uncontrollable@7.2.1(@types/react@18.2.28)(react@18.2.0): resolution: {integrity: sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==} @@ -61223,6 +62564,13 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + /unixify@1.0.0: + resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} + engines: {node: '>=0.10.0'} + dependencies: + normalize-path: 2.1.1 + dev: true + /unorm@1.6.0: resolution: {integrity: sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==} engines: {node: '>= 0.4.0'} @@ -61364,6 +62712,16 @@ packages: xdg-basedir: 4.0.0 dev: false + /upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + dependencies: + tslib: 2.6.2 + + /upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + dependencies: + tslib: 2.6.2 + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -61438,6 +62796,10 @@ packages: punycode: 1.3.2 querystring: 0.2.0 + /urlpattern-polyfill@8.0.2: + resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + dev: true + /usb@1.9.2: resolution: {integrity: sha512-dryNz030LWBPAf6gj8vyq0Iev3vPbCLHCT8dBw3gQRXRzVNsIdeuU+VjPp3ksmSPkeMAl1k+kQ14Ij0QHyeiAg==} engines: {node: '>=10.16.0'} @@ -61696,6 +63058,11 @@ packages: engines: {node: '>= 0.10'} dev: true + /value-or-promise@1.0.12: + resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} + engines: {node: '>=12'} + dev: true + /varint@5.0.2: resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} dev: false @@ -63098,6 +64465,16 @@ packages: - utf-8-validate dev: false + /webcrypto-core@1.7.7: + resolution: {integrity: sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g==} + dependencies: + '@peculiar/asn1-schema': 2.3.8 + '@peculiar/json-schema': 1.1.12 + asn1js: 3.0.5 + pvtsutils: 1.3.5 + tslib: 2.6.2 + dev: true + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} requiresBuild: true @@ -64672,6 +66049,10 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} requiresBuild: true + /yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + dev: true + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -64797,6 +66178,16 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + /zen-observable-ts@1.2.5: + resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==} + dependencies: + zen-observable: 0.8.15 + dev: false + + /zen-observable@0.8.15: + resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} + dev: false + /zod@3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false From 0f815c09741683b9f9495baf3935f875cb3a2640 Mon Sep 17 00:00:00 2001 From: Vladyslav Belyokhin Date: Sat, 18 Nov 2023 18:23:03 +0200 Subject: [PATCH 08/85] Fix dependencies --- libs/ledger-live-common/package.json | 3 + pnpm-lock.yaml | 204 +++++++++++++++++++++------ 2 files changed, 164 insertions(+), 43 deletions(-) diff --git a/libs/ledger-live-common/package.json b/libs/ledger-live-common/package.json index 78f9c2405eb4..7019e8681ad2 100644 --- a/libs/ledger-live-common/package.json +++ b/libs/ledger-live-common/package.json @@ -111,6 +111,7 @@ "https": false }, "dependencies": { + "@apollo/client": "^3.8.7", "@cardano-foundation/ledgerjs-hw-app-cardano": "^5.1.0", "@celo/connect": "^3.0.1", "@celo/contractkit": "^3.0.1", @@ -213,6 +214,8 @@ "eip55": "^2.1.1", "expect": "^27.4.6", "fuse.js": "^6.6.2", + "graphql": "^16.8.1", + "graphql-tag": "^2.12.6", "invariant": "^2.2.2", "isomorphic-ws": "^4.0.1", "json-rpc-2.0": "^0.2.19", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c783d24e467d..237e22eeefeb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1932,6 +1932,9 @@ importers: libs/ledger-live-common: dependencies: + '@apollo/client': + specifier: ^3.8.7 + version: 3.8.7(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0) '@cardano-foundation/ledgerjs-hw-app-cardano': specifier: ^5.1.0 version: 5.1.0 @@ -2088,6 +2091,9 @@ importers: '@ledgerhq/wallet-api-server': specifier: ^1.3.1 version: 1.3.1(react@18.2.0)(rxjs@7.8.1) + '@noble/hashes': + specifier: ^1.1.7 + version: 1.3.2 '@solana/spl-token': specifier: ^0.3.7 version: 0.3.8(@solana/web3.js@1.77.3) @@ -2154,6 +2160,9 @@ importers: '@zondax/ledger-stacks': specifier: ^1.0.2 version: 1.0.2 + aptos: + specifier: 1.3.16 + version: 1.3.16 async: specifier: ^3.2.3 version: 3.2.3 @@ -2232,6 +2241,12 @@ importers: fuse.js: specifier: ^6.6.2 version: 6.6.2 + graphql: + specifier: ^16.8.1 + version: 16.8.1 + graphql-tag: + specifier: ^2.12.6 + version: 2.12.6(graphql@16.8.1) invariant: specifier: ^2.2.2 version: 2.2.4 @@ -5442,6 +5457,42 @@ packages: leven: 3.1.0 dev: false + /@apollo/client@3.8.7(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-DnQtFkQrCyxHTSa9gR84YRLmU/al6HeXcLZazVe+VxKBmx/Hj4rV8xWtzfWYX5ijartsqDR7SJgV037MATEecA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-ws: ^5.5.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + subscriptions-transport-ws: ^0.9.0 || ^0.11.0 + peerDependenciesMeta: + graphql-ws: + optional: true + react: + optional: true + react-dom: + optional: true + subscriptions-transport-ws: + optional: true + dependencies: + '@graphql-typed-document-node/core': 3.1.1(graphql@16.8.1) + '@wry/context': 0.7.4 + '@wry/equality': 0.5.7 + '@wry/trie': 0.4.3 + graphql: 16.8.1 + graphql-tag: 2.12.6(graphql@16.8.1) + hoist-non-react-statics: 3.3.2 + optimism: 0.17.5 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + response-iterator: 0.2.6 + symbol-observable: 4.0.0 + ts-invariant: 0.10.3 + tslib: 2.6.2 + zen-observable-ts: 1.2.5 + dev: false + /@aws-crypto/crc32@3.0.0: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: @@ -11018,7 +11069,7 @@ packages: '@cosmjs/encoding': 0.31.1 '@cosmjs/math': 0.31.1 '@cosmjs/utils': 0.31.1 - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.2 bn.js: 5.2.1 elliptic: 6.5.4 libsodium-wrappers-sumo: 0.7.13 @@ -11030,7 +11081,7 @@ packages: '@cosmjs/encoding': 0.31.1 '@cosmjs/math': 0.31.1 '@cosmjs/utils': 0.31.1 - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.2 bn.js: 5.2.1 elliptic: 6.5.4 libsodium-wrappers-sumo: 0.7.13 @@ -14457,6 +14508,14 @@ packages: dependencies: graphql: 15.8.0 + /@graphql-typed-document-node/core@3.1.1(graphql@16.8.1): + resolution: {integrity: sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + graphql: 16.8.1 + dev: false + /@grpc/grpc-js@1.6.7: resolution: {integrity: sha512-eBM03pu9hd3VqDQG+kHahiG1x80RGkkqqRb1Pchcwqej/KkAH95gAvKs6laqaHCycYaPK+TKuNQnOz9UXYA8qw==} engines: {node: ^8.13.0 || >=10.10.0} @@ -16554,6 +16613,10 @@ packages: resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} dev: false + /@noble/hashes@1.1.3: + resolution: {integrity: sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==} + dev: false + /@noble/hashes@1.1.5: resolution: {integrity: sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==} dev: false @@ -18660,11 +18723,18 @@ packages: '@scure/base': 1.1.3 dev: false + /@scure/bip39@1.1.0: + resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} + dependencies: + '@noble/hashes': 1.1.5 + '@scure/base': 1.1.3 + dev: false + /@scure/bip39@1.2.1: resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: '@noble/hashes': 1.3.2 - '@scure/base': 1.1.1 + '@scure/base': 1.1.3 dev: false /@segment/analytics-react-native@2.9.1(react-native@0.72.6)(react@18.2.0): @@ -19577,7 +19647,7 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.2 '@solana/buffer-layout': 4.0.0 agentkeepalive: 4.3.0 bigint-buffer: 1.1.5 @@ -19705,7 +19775,7 @@ packages: /@stacks/transactions@4.3.8: resolution: {integrity: sha512-5xYYv2TdXXM9PVixB79Pr99symQ8fhbVATjempGUxtL23/XUiRiLvJZohDxIE4VQ2EzbB4g4j8Y7oqPjj0h09Q==} dependencies: - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.2 '@noble/secp256k1': 1.7.1 '@stacks/common': 4.3.5 '@stacks/network': 4.3.5 @@ -26379,6 +26449,27 @@ packages: webpack-cli: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.88.2) webpack-dev-server: 4.15.1(webpack-cli@4.10.0)(webpack@5.88.2) + /@wry/context@0.7.4: + resolution: {integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + + /@wry/equality@0.5.7: + resolution: {integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + + /@wry/trie@0.4.3: + resolution: {integrity: sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + /@xmldom/xmldom@0.7.9: resolution: {integrity: sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==} engines: {node: '>=10.0.0'} @@ -27102,6 +27193,17 @@ packages: /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + /aptos@1.3.16: + resolution: {integrity: sha512-LxI4XctQ5VeL+HokjwuGPwsb1fcydLIn4agFXyhn7hSYosTLNRxQ3UIixyP4Fmv6qPBjQVu8hELVSlThQk/EjA==} + engines: {node: '>=11.0.0'} + dependencies: + '@noble/hashes': 1.1.3 + '@scure/bip39': 1.1.0 + axios: 0.27.2 + form-data: 4.0.0 + tweetnacl: 1.0.3 + dev: false + /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: false @@ -28212,7 +28314,7 @@ packages: babel-plugin-syntax-jsx: 6.18.0 lodash: 4.17.21 picomatch: 2.3.1 - styled-components: 5.3.5(react-is@18.1.0)(react@18.2.0) + styled-components: 5.3.5(react-dom@18.2.0)(react-is@17.0.2)(react@18.2.0) /babel-plugin-syntax-jsx@6.18.0: resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} @@ -35336,40 +35438,6 @@ packages: url-parse: 1.5.10 transitivePeerDependencies: - expo - dev: true - - /expo-asset@8.10.1(expo-file-system@15.4.4)(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0): - resolution: {integrity: sha512-5VMTESxgY9GBsspO/esY25SKEa7RyascVkLe/OcL1WgblNFm7xCCEEUIW8VWS1nHJQGYxpMZPr3bEfjMpdWdyA==} - peerDependencies: - expo-file-system: '*' - expo-modules-core: '*' - react: '*' - react-native: '*' - peerDependenciesMeta: - expo-constants: - optional: true - expo-file-system: - optional: true - expo-modules-core: - optional: true - react: - optional: true - react-native: - optional: true - dependencies: - blueimp-md5: 2.19.0 - expo-constants: 14.4.2(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) - expo-file-system: 15.4.4(expo-constants@14.4.2)(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) - expo-modules-core: 1.5.11(react-native@0.72.6)(react@18.2.0) - invariant: 2.2.4 - md5-file: 3.2.3 - path-browserify: 1.0.1 - react: 18.2.0 - react-native: 0.72.6(@babel/core@7.23.2)(react@18.2.0) - url-parse: 1.5.10 - transitivePeerDependencies: - - expo - - supports-color /expo-barcode-scanner@12.5.3(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0): resolution: {integrity: sha512-aIeTiOUzPdngTIhZHhM1mOMx9CPtmYEtEkK8pAgyua3NiAKgsUN8z8bpiQWuZTrxSaqkU8fG1zGOk9E4VnNwyA==} @@ -35543,7 +35611,7 @@ packages: optional: true dependencies: expo: 49.0.13(@babel/core@7.23.2)(expo-modules-autolinking@1.5.1)(expo-modules-core@1.5.11)(react-native@0.72.6)(react@18.2.0) - expo-asset: 8.10.1(expo-file-system@15.4.4)(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) + expo-asset: 8.10.1(expo-constants@14.4.2)(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) expo-constants: 14.4.2(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) expo-modules-core: 1.5.11(react-native@0.72.6)(react@18.2.0) fontfaceobserver: 2.1.0 @@ -35706,7 +35774,6 @@ packages: invariant: 2.2.4 react: 18.2.0 react-native: 0.72.6(@babel/core@7.23.2)(@babel/preset-env@7.17.10)(metro-resolver@0.80.0)(metro-transform-worker@0.80.0)(react@18.2.0) - dev: true /expo-modules-core@1.5.11(react-native@0.72.6)(react@18.2.0): resolution: {integrity: sha512-1Dj2t74nVjxq6xEQf2b9WFfAMhPzVnR0thY0PfRFgob4STyj3sq1U4PIHVWvKQBtDKIa227DrNRb+Hu+LqKWQg==} @@ -35813,7 +35880,7 @@ packages: '@expo/vector-icons': 13.0.0 babel-preset-expo: 9.5.2(@babel/core@7.23.2) expo-application: 5.3.1(expo-constants@14.4.2)(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) - expo-asset: 8.10.1(expo-file-system@15.4.4)(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) + expo-asset: 8.10.1(expo-constants@14.4.2)(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) expo-constants: 14.4.2(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) expo-file-system: 15.4.4(expo-constants@14.4.2)(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) expo-font: 11.4.0(expo-asset@8.10.1)(expo-constants@14.4.2)(expo-modules-core@1.5.11)(expo@49.0.13)(react-native@0.72.6)(react@18.2.0) @@ -37713,10 +37780,25 @@ packages: graphql: 15.8.0 tslib: 2.6.2 + /graphql-tag@2.12.6(graphql@16.8.1): + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + graphql: 16.8.1 + tslib: 2.6.2 + dev: false + /graphql@15.8.0: resolution: {integrity: sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==} engines: {node: '>= 10.x'} + /graphql@16.8.1: + resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + dev: false + /gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} @@ -47377,6 +47459,14 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true + /optimism@0.17.5: + resolution: {integrity: sha512-TEcp8ZwK1RczmvMnvktxHSF2tKgMWjJ71xEFGX5ApLh67VsMSTy1ZUlipJw8W+KaqgOmQ+4pqwkeivY89j+4Vw==} + dependencies: + '@wry/context': 0.7.4 + '@wry/trie': 0.4.3 + tslib: 2.6.2 + dev: false + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -52742,6 +52832,11 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /response-iterator@0.2.6: + resolution: {integrity: sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==} + engines: {node: '>=0.8'} + dev: false + /responselike@1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} dependencies: @@ -54839,6 +54934,7 @@ packages: react-is: 18.1.0 shallowequal: 1.1.0 supports-color: 5.5.0 + dev: false /styled-components@6.0.7(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xIwWuiRMYR43mskVsW9MGTRjSo7ol4bcVjT595fGUp3OLBJOlOgaiKaxsHdC4a2HqWKqKnh0CmcRbk5ogyDjTg==} @@ -55245,6 +55341,11 @@ packages: engines: {node: '>=0.10'} dev: false + /symbol-observable@4.0.0: + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} + dev: false + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -56235,6 +56336,13 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + /ts-invariant@0.10.3: + resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} + engines: {node: '>=8'} + dependencies: + tslib: 2.6.2 + dev: false + /ts-jest@28.0.7(jest@28.1.0)(typescript@5.1.3): resolution: {integrity: sha512-wWXCSmTwBVmdvWrOpYhal79bDpioDy4rTT+0vyUnE3ZzM7LOAAGG9NXwzkEL/a516rQEgnMmS/WKP9jBPCVJyA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -61114,6 +61222,16 @@ packages: engines: {node: '>=12.20'} dev: true + /zen-observable-ts@1.2.5: + resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==} + dependencies: + zen-observable: 0.8.15 + dev: false + + /zen-observable@0.8.15: + resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} + dev: false + /zod@3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false From c0476cd14d8ab67aa9b3f323ec2c355d7883fe1f Mon Sep 17 00:00:00 2001 From: Vladyslav Belyokhin Date: Tue, 5 Dec 2023 14:00:02 +0200 Subject: [PATCH 09/85] LLD small fixes --- .../families/aptos/ExpirationTimestampField.tsx | 2 +- .../src/renderer/families/aptos/GasPriceField.tsx | 4 ++-- .../renderer/families/aptos/MaxGasAmountField.tsx | 4 ++-- .../src/renderer/families/aptos/SendAmountFields.tsx | 12 ++++++------ apps/ledger-live-desktop/static/i18n/ar/app.json | 3 ++- apps/ledger-live-desktop/static/i18n/de/app.json | 3 ++- apps/ledger-live-desktop/static/i18n/en/app.json | 2 +- apps/ledger-live-desktop/static/i18n/es/app.json | 3 ++- apps/ledger-live-desktop/static/i18n/fr/app.json | 3 ++- apps/ledger-live-desktop/static/i18n/ja/app.json | 3 ++- apps/ledger-live-desktop/static/i18n/ko/app.json | 3 ++- apps/ledger-live-desktop/static/i18n/pt-BR/app.json | 3 ++- apps/ledger-live-desktop/static/i18n/pt/app.json | 3 ++- apps/ledger-live-desktop/static/i18n/ru/app.json | 3 ++- apps/ledger-live-desktop/static/i18n/tr/app.json | 3 ++- apps/ledger-live-desktop/static/i18n/zh/app.json | 3 ++- 16 files changed, 34 insertions(+), 23 deletions(-) diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx index 25b3d5b31a7e..f94bfe4c4829 100644 --- a/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/ExpirationTimestampField.tsx @@ -10,7 +10,7 @@ import Label from "~/renderer/components/Label"; import { Account } from "@ledgerhq/types-live"; import { Transaction, TransactionStatus } from "@ledgerhq/live-common/generated/types"; -import { Result } from "@ledgerhq/live-common/lib/bridge/useBridgeTransaction"; +import { Result } from "@ledgerhq/live-common/bridge/useBridgeTransaction"; type AptosTransaction = Extract; type Props = { diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx index 31c8475ba8de..4d036858229a 100644 --- a/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/GasPriceField.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useState, forwardRef, useImperativeHandle } from "react"; import { BigNumber } from "bignumber.js"; -import { Result } from "@ledgerhq/live-common/lib/bridge/useBridgeTransaction"; +import { Result } from "@ledgerhq/live-common/bridge/useBridgeTransaction"; import invariant from "invariant"; import { Account } from "@ledgerhq/types-live"; import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; @@ -74,7 +74,7 @@ const FeesField = forwardRef(function FeesFieldComponent( error={gasPriceError} value={gasUnitPrice.toString()} onChange={onGasPriceChange} - placeholder={DEFAULT_GAS_PRICE.toString()} + placeholder={(transaction.estimate.gasUnitPrice || DEFAULT_GAS_PRICE).toString()} loading={!transaction.estimate.gasUnitPrice} /> diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx index 3552c02c077e..fde4f68e9bcc 100644 --- a/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/MaxGasAmountField.tsx @@ -1,6 +1,6 @@ import React, { forwardRef, useCallback, useState, useImperativeHandle } from "react"; import { Transaction, TransactionStatus } from "@ledgerhq/live-common/generated/types"; -import { Result } from "@ledgerhq/live-common/lib/bridge/useBridgeTransaction"; +import { Result } from "@ledgerhq/live-common/bridge/useBridgeTransaction"; import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; import { getMainAccount } from "@ledgerhq/live-common/account/index"; import { Account, AccountLike } from "@ledgerhq/types-live"; @@ -76,7 +76,7 @@ const MaxGasAmountField = forwardRef(function MaxGasAmountFieldComponent( error={maxGasAmountError} value={maxGasAmount} onChange={onMaxGasAmountChange} - placeholder={DEFAULT_GAS.toString()} + placeholder={(transaction.estimate.maxGasAmount || DEFAULT_GAS).toString()} loading={!transaction.estimate.maxGasAmount} /> diff --git a/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx b/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx index 1f4f2b96cd6e..9de239e08398 100644 --- a/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/aptos/SendAmountFields.tsx @@ -95,18 +95,18 @@ const Fields = ({ account, parentAccount, transaction, updateTransaction, status - - Date: Tue, 5 Dec 2023 14:12:53 +0200 Subject: [PATCH 10/85] Implement Aptos in LLM --- .../RootNavigator/types/SendFundsNavigator.ts | 16 ++ .../types/SignTransactionNavigator.ts | 14 + .../RootNavigator/types/SwapNavigator.ts | 14 + .../src/const/navigation.ts | 2 + .../src/families/aptos/SendRowsFee.tsx | 93 ++++++ .../families/aptos/fees/AptosCustomFees.tsx | 264 ++++++++++++++++++ .../aptos/fees/ExpirationTimestampField.tsx | 89 ++++++ .../src/families/aptos/fees/GasPriceField.tsx | 92 ++++++ .../families/aptos/fees/MaxGasAmountField.tsx | 95 +++++++ .../aptos/fees/SequenceNumberField.tsx | 91 ++++++ .../src/families/aptos/fees/styles.ts | 23 ++ .../src/families/aptos/index.ts | 3 + .../src/families/aptos/types.ts | 8 + apps/ledger-live-mobile/src/families/index.ts | 1 + apps/ledger-live-mobile/src/icons/Edit.tsx | 24 ++ .../src/live-common-setup.ts | 2 + .../src/locales/ar/common.json | 26 +- .../src/locales/de/common.json | 25 +- .../src/locales/en/common.json | 26 +- .../src/locales/es/common.json | 25 +- .../src/locales/fr/common.json | 25 +- .../src/locales/ja/common.json | 25 +- .../src/locales/ko/common.json | 25 +- .../src/locales/pt-BR/common.json | 26 +- .../src/locales/pt/common.json | 26 +- .../src/locales/ru/common.json | 26 +- .../src/locales/tr/common.json | 26 +- .../src/locales/zh/common.json | 26 +- .../src/families/aptos/LedgerAccount.ts | 22 +- .../src/families/aptos/hw-getAddress.ts | 3 +- .../src/families/aptos/js-buildTransaction.ts | 18 +- .../aptos/js-getFeesForTransaction.ts | 77 +++-- .../families/aptos/js-getTransactionStatus.ts | 17 +- .../src/families/aptos/js-synchronisation.ts | 109 ++------ .../src/families/aptos/logic.ts | 85 +++++- .../src/families/aptos/types.ts | 10 +- libs/ui/packages/crypto-icons/src/svg/APT.svg | 3 +- pnpm-lock.yaml | 184 +++++++++++- 38 files changed, 1456 insertions(+), 210 deletions(-) create mode 100644 apps/ledger-live-mobile/src/families/aptos/SendRowsFee.tsx create mode 100644 apps/ledger-live-mobile/src/families/aptos/fees/AptosCustomFees.tsx create mode 100644 apps/ledger-live-mobile/src/families/aptos/fees/ExpirationTimestampField.tsx create mode 100644 apps/ledger-live-mobile/src/families/aptos/fees/GasPriceField.tsx create mode 100644 apps/ledger-live-mobile/src/families/aptos/fees/MaxGasAmountField.tsx create mode 100644 apps/ledger-live-mobile/src/families/aptos/fees/SequenceNumberField.tsx create mode 100644 apps/ledger-live-mobile/src/families/aptos/fees/styles.ts create mode 100644 apps/ledger-live-mobile/src/families/aptos/index.ts create mode 100644 apps/ledger-live-mobile/src/families/aptos/types.ts create mode 100644 apps/ledger-live-mobile/src/icons/Edit.tsx diff --git a/apps/ledger-live-mobile/src/components/RootNavigator/types/SendFundsNavigator.ts b/apps/ledger-live-mobile/src/components/RootNavigator/types/SendFundsNavigator.ts index 8174a74f90ee..eced78a54a52 100644 --- a/apps/ledger-live-mobile/src/components/RootNavigator/types/SendFundsNavigator.ts +++ b/apps/ledger-live-mobile/src/components/RootNavigator/types/SendFundsNavigator.ts @@ -4,6 +4,7 @@ import type { Device } from "@ledgerhq/live-common/hw/actions/types"; import type { Operation } from "@ledgerhq/types-live"; import type { Transaction, TransactionStatus } from "@ledgerhq/live-common/generated/types"; import type { Transaction as EvmTransaction, GasOptions } from "@ledgerhq/coin-evm/types/index"; +import type { Transaction as AptosTransaction } from "@ledgerhq/live-common/families/aptos/types"; import type { CardanoAccount, Transaction as CardanoTransaction, @@ -166,6 +167,21 @@ export type SendFundsNavigatorStackParamList = { | ScreenName.SendSelectDevice | ScreenName.SwapForm; }; + [ScreenName.AptosCustomFees]: { + accountId: string; + parentId?: string; + transaction: AptosTransaction; + setCustomFees: (transaction: Partial) => void; + setTransaction: Result["setTransaction"]; + currentNavigation: + | ScreenName.SignTransactionSummary + | ScreenName.SendSummary + | ScreenName.SwapForm; + nextNavigation: + | ScreenName.SignTransactionSelectDevice + | ScreenName.SendSelectDevice + | ScreenName.SwapForm; + }; [ScreenName.EvmCustomFees]: { accountId: string; parentId?: string; diff --git a/apps/ledger-live-mobile/src/components/RootNavigator/types/SignTransactionNavigator.ts b/apps/ledger-live-mobile/src/components/RootNavigator/types/SignTransactionNavigator.ts index 2b7e26c96d39..8b5e2cc6fb25 100644 --- a/apps/ledger-live-mobile/src/components/RootNavigator/types/SignTransactionNavigator.ts +++ b/apps/ledger-live-mobile/src/components/RootNavigator/types/SignTransactionNavigator.ts @@ -1,5 +1,6 @@ import { Transaction, TransactionStatus } from "@ledgerhq/live-common/generated/types"; import type { Transaction as EvmTransaction, GasOptions } from "@ledgerhq/coin-evm/types/index"; +import type { Transaction as AptosTransaction } from "@ledgerhq/live-common/families/aptos/types"; import type { CardanoAccount, Transaction as CardanoTransaction, @@ -125,6 +126,19 @@ export type SignTransactionNavigatorParamList = { | ScreenName.SendSelectDevice | ScreenName.SwapForm; }; + [ScreenName.AptosCustomFees]: { + accountId: string; + parentId?: string; + transaction: AptosTransaction; + currentNavigation: + | ScreenName.SignTransactionSummary + | ScreenName.SendSummary + | ScreenName.SwapForm; + nextNavigation: + | ScreenName.SignTransactionSelectDevice + | ScreenName.SendSelectDevice + | ScreenName.SwapForm; + }; [ScreenName.EvmCustomFees]: { accountId: string; parentId?: string; diff --git a/apps/ledger-live-mobile/src/components/RootNavigator/types/SwapNavigator.ts b/apps/ledger-live-mobile/src/components/RootNavigator/types/SwapNavigator.ts index 072483742879..e58670ab0e40 100644 --- a/apps/ledger-live-mobile/src/components/RootNavigator/types/SwapNavigator.ts +++ b/apps/ledger-live-mobile/src/components/RootNavigator/types/SwapNavigator.ts @@ -10,6 +10,7 @@ import type { SwapPendingOperation, SwapOperation, } from "../../../screens/Swap/types"; +import type { Transaction as AptosTransaction } from "@ledgerhq/live-common/families/aptos/types"; import type { CardanoAccount, Transaction as CardanoTransaction, @@ -135,6 +136,19 @@ export type SwapNavigatorParamList = { | ScreenName.SendSelectDevice | ScreenName.SwapForm; }; + [ScreenName.AptosCustomFees]: { + accountId: string; + parentId?: string; + transaction: AptosTransaction; + currentNavigation: + | ScreenName.SignTransactionSummary + | ScreenName.SendSummary + | ScreenName.SwapForm; + nextNavigation: + | ScreenName.SignTransactionSelectDevice + | ScreenName.SendSelectDevice + | ScreenName.SwapForm; + }; [ScreenName.EvmCustomFees]: { accountId: string; parentId?: string; diff --git a/apps/ledger-live-mobile/src/const/navigation.ts b/apps/ledger-live-mobile/src/const/navigation.ts index 50b7a8c891d8..8cdde30318d3 100644 --- a/apps/ledger-live-mobile/src/const/navigation.ts +++ b/apps/ledger-live-mobile/src/const/navigation.ts @@ -330,6 +330,8 @@ export enum ScreenName { AlgorandOptInValidationError = "AlgorandOptInValidationError", AlgorandOptInValidationSuccess = "AlgorandOptInValidationSuccess", + AptosCustomFees = "AptosCustomFees", + // Evm EvmEditGasLimit = "EvmEditGasLimit", EvmCustomFees = "EvmCustomFees", diff --git a/apps/ledger-live-mobile/src/families/aptos/SendRowsFee.tsx b/apps/ledger-live-mobile/src/families/aptos/SendRowsFee.tsx new file mode 100644 index 000000000000..26038f31d53f --- /dev/null +++ b/apps/ledger-live-mobile/src/families/aptos/SendRowsFee.tsx @@ -0,0 +1,93 @@ +import React, { useCallback } from "react"; +import { View, StyleSheet, TouchableOpacity } from "react-native"; +import { Trans } from "react-i18next"; +import BigNumber from "bignumber.js"; +import { useTheme } from "@react-navigation/native"; +import { getAccountUnit, getAccountCurrency } from "@ledgerhq/live-common/account/helpers"; +import SummaryRow from "../../screens/SendFunds/SummaryRow"; +import LText from "../../components/LText"; +import CurrencyUnitValue from "../../components/CurrencyUnitValue"; +import CounterValue from "../../components/CounterValue"; +import { ScreenName } from "../../const"; +import Edit from "../../icons/Edit"; + +import type { Transaction } from "@ledgerhq/live-common/families/aptos/types"; +import { Account } from "@ledgerhq/types-live"; +import { Navigation, RouteProps } from "./types"; +import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; + +type Props = { + transaction: Transaction; + account: Account; + navigation: Navigation; + route: RouteProps; + setTransaction: (_: Transaction) => void; +}; + +export default function SendRowsFee({ + transaction, + account, + navigation, + route, + setTransaction, +}: Props) { + const unit = getAccountUnit(account); + const currency = getAccountCurrency(account); + const { fees } = transaction; + const { colors } = useTheme(); + + const setCustomFees = useCallback( + (txPatch: Partial) => { + const bridge = getAccountBridge(account); + const updatedTx = bridge.updateTransaction(transaction, { ...txPatch, skipEmulation: true }); + setTransaction(updatedTx); + }, + [account, transaction, setTransaction], + ); + + const openFeesSettings = useCallback(() => { + navigation.navigate(ScreenName.AptosCustomFees, { + ...route.params, + accountId: account.id, + transaction, + setCustomFees, + }); + }, [navigation, route.params, transaction, account.id, setCustomFees]); + + return ( + + } + additionalInfo={} + > + + <> + + + + + + + + + + + ); +} + +const styles = StyleSheet.create({ + amountContainer: { + flexDirection: "column", + alignItems: "flex-end", + }, + valueText: { + fontSize: 16, + }, + counterValueText: { + fontSize: 12, + }, +}); diff --git a/apps/ledger-live-mobile/src/families/aptos/fees/AptosCustomFees.tsx b/apps/ledger-live-mobile/src/families/aptos/fees/AptosCustomFees.tsx new file mode 100644 index 000000000000..0f9f06b5cd17 --- /dev/null +++ b/apps/ledger-live-mobile/src/families/aptos/fees/AptosCustomFees.tsx @@ -0,0 +1,264 @@ +import invariant from "invariant"; +import React, { useCallback, useRef, useMemo } from "react"; +import { StyleSheet, View, ActivityIndicator } from "react-native"; +import { useTranslation, Trans } from "react-i18next"; +import { useTheme } from "@react-navigation/native"; +import { useTheme as useThemeStyled } from "styled-components/native"; +import { Transaction } from "@ledgerhq/live-common/generated/types"; +import BigNumber from "bignumber.js"; + +import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; +import { useSelector } from "react-redux"; +import useBridgeTransaction from "@ledgerhq/live-common/bridge/useBridgeTransaction"; +import { SafeAreaView } from "react-native-safe-area-context"; +import { getAccountUnit, getAccountCurrency } from "@ledgerhq/live-common/account/helpers"; + +import KeyboardView from "../../../components/KeyboardView"; +import NavigationScrollView from "../../../components/NavigationScrollView"; +import SummaryRow from "../../../screens/SendFunds/SummaryRow"; +import LText from "../../../components/LText"; +import CurrencyUnitValue from "../../../components/CurrencyUnitValue"; +import CounterValue from "../../../components/CounterValue"; +import Button from "../../../components/Button"; +import GasPriceField from "./GasPriceField"; +import MaxGasAmountField from "./MaxGasAmountField"; +import SequenceNumberField from "./SequenceNumberField"; +import ExpirationTimestampField from "./ExpirationTimestampField"; + +import { accountScreenSelector } from "../../../reducers/accounts"; +import { + BaseComposite, + StackNavigatorProps, +} from "../../../components/RootNavigator/types/helpers"; +import { SendFundsNavigatorStackParamList } from "../../../components/RootNavigator/types/SendFundsNavigator"; +import { ScreenName } from "../../../const"; + +type AptosTransaction = Extract; + +const options = { + title: , + headerLeft: null, +}; + +type NavigationProps = BaseComposite< + StackNavigatorProps +>; + +const AptosCustomFees = ({ navigation, route }: NavigationProps) => { + const { account, parentAccount } = useSelector(accountScreenSelector(route)); + const { transaction, updateTransaction, setTransaction, status, bridgePending, bridgeError } = + useBridgeTransaction(() => ({ + transaction: route.params.transaction, + account, + parentAccount, + })); + + invariant(transaction?.family === "aptos", "AptosCustomFees: aptos family expected"); + invariant(account, "Account required"); + const { theme } = useThemeStyled(); + const { colors } = useTheme(); + const { t } = useTranslation(); + const unit = getAccountUnit(account); + const currency = getAccountCurrency(account); + + const gasPriceFieldElement = useRef<{ resetData: () => void }>(); + const gasLimitElement = useRef<{ resetData: () => void }>(); + const sequenceNumberElement = useRef<{ resetData: () => void }>(); + const expirationTimestampElement = useRef<{ resetData: () => void }>(); + + const setOptimalGas = useCallback(() => { + gasPriceFieldElement.current?.resetData(); + gasLimitElement.current?.resetData(); + + const bridge = getAccountBridge(account); + updateTransaction((transaction: AptosTransaction) => + bridge.updateTransaction(transaction, { + options: { + ...transaction.options, + maxGasAmount: transaction.estimate.maxGasAmount, + gasUnitPrice: transaction.estimate.gasUnitPrice, + }, + skipEmulation: true, + }), + ); + }, [account, updateTransaction]); + + const resetSettings = useCallback(() => { + sequenceNumberElement.current?.resetData(); + expirationTimestampElement.current?.resetData(); + + const bridge = getAccountBridge(account); + updateTransaction((transaction: AptosTransaction) => + bridge.updateTransaction(transaction, { + options: { + ...transaction.options, + sequenceNumber: "", + expirationTimestampSecs: "", + }, + errors: Object.assign({}, transaction.errors, { + sequenceNumber: "", + expirationTimestampSecs: "", + }), + }), + ); + }, [account, updateTransaction]); + + const applyChanges = useCallback(() => { + route.params.setCustomFees({ options: transaction.options, fees: transaction.fees }); + navigation.goBack(); + }, [navigation, route, transaction]); + + const applyDisabled = useMemo( + () => Boolean(Object.keys(status.errors).length || bridgePending || bridgeError), + [status.errors, bridgePending, bridgeError], + ); + + return ( + + + + + + }> + + + + + + + + + + {bridgePending && ( + + + + )} + + + + + + + - - - - - - - +