diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 0860fc0271..a8ff73a499 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -6,3 +6,5 @@ 4851e7989a3473c64b03adb4fbef16b3957ac2ab # Shift to @thesis-co/eslint-config. fd45e9ffe8405e00ed34ca500bbf8f88d06de20f +# Bump to @thesis-co/eslint-config@0.6.0 with prettier 3.x. +9c4488cebd14d578dcd2cf9d3d3b26934b5262df diff --git a/.github/workflows/builds/detect-env-block.js b/.github/workflows/builds/detect-env-block.js index 122745009d..f900921e2a 100644 --- a/.github/workflows/builds/detect-env-block.js +++ b/.github/workflows/builds/detect-env-block.js @@ -29,7 +29,7 @@ module.exports = async function detectEnvBlock({ github, context }) { context.issue?.number, "; status code was ", status, - ". " + ". ", ) return "" } @@ -46,7 +46,7 @@ module.exports = async function detectEnvBlock({ github, context }) { varName.startsWith("ENABLE_") || varName.startsWith("USE_") || varName.startsWith("SHOW_") || - varName.startsWith("SUPPORT_") + varName.startsWith("SUPPORT_"), ) .map((varPair) => varPair.join("=")) @@ -54,7 +54,9 @@ module.exports = async function detectEnvBlock({ github, context }) { if (envLines.length !== validEnvLines.length) { console.warn( - `Filtered ${validEnvLines.length - envLines.length} disallowed env lines.` + `Filtered ${ + validEnvLines.length - envLines.length + } disallowed env lines.`, ) } console.log("Detected env block", validEnvBlock) diff --git a/.github/workflows/builds/post-build-link.js b/.github/workflows/builds/post-build-link.js index 78a628c4d6..e2f15aec81 100644 --- a/.github/workflows/builds/post-build-link.js +++ b/.github/workflows/builds/post-build-link.js @@ -13,7 +13,7 @@ module.exports = async function postBuildLink({ github, context }) { const manualWorkFlowId = context?.inputs?.workflow_run_id const workflowRunId = Number( - context.payload?.workflow_run?.id ?? manualWorkFlowId + context.payload?.workflow_run?.id ?? manualWorkFlowId, ) if (Number.isNaN(workflowRunId)) { @@ -31,7 +31,7 @@ module.exports = async function postBuildLink({ github, context }) { if (workflowLookupStatus !== 200) { throw new Error( - `Failed to fetch workflow :( Status ${workflowLookupStatus}.` + `Failed to fetch workflow :( Status ${workflowLookupStatus}.`, ) } @@ -46,19 +46,19 @@ module.exports = async function postBuildLink({ github, context }) { if (artifactLookupStatus !== 200) { throw new Error( - `Failed to fetch workflow artifacts :( Status ${artifactLookupStatus}.` + `Failed to fetch workflow artifacts :( Status ${artifactLookupStatus}.`, ) } const matchArtifact = allArtifacts.filter((artifact) => - artifact.name.startsWith("extension-builds-") + artifact.name.startsWith("extension-builds-"), )[0] if (matchArtifact === undefined || matchArtifact === null) { throw new Error( `Failed to find extension artifact :( Artifacts were ${JSON.stringify( - allArtifacts - )}` + allArtifacts, + )}`, ) } @@ -66,16 +66,16 @@ module.exports = async function postBuildLink({ github, context }) { if (prNumber === undefined) { throw new Error( - `Could not extract PR number from extension artifact filename (${matchArtifact.name}) :(` + `Could not extract PR number from extension artifact filename (${matchArtifact.name}) :(`, ) } else if (prNumber.match(/^[a-f0-9]+$/) && !prNumber.match(/^[0-9]+$/)) { console.log( - "Workflow was for a merge commit rather than a PR, skipping build link." + "Workflow was for a merge commit rather than a PR, skipping build link.", ) return } else if (!prNumber.match(/^[0-9]+$/)) { throw new Error( - `Could not extract PR number from extension artifact filename (${matchArtifact.name}) :(` + `Could not extract PR number from extension artifact filename (${matchArtifact.name}) :(`, ) } @@ -96,14 +96,14 @@ module.exports = async function postBuildLink({ github, context }) { const artifactUrl = `${baseUrl}/suites/${checkSuiteId}/artifacts/${matchArtifact.id}` console.log( - `Detected artifact ${matchArtifact.name} at ${artifactUrl}, posting...` + `Detected artifact ${matchArtifact.name} at ${artifactUrl}, posting...`, ) const updatedBody = `${(body ?? "").replace( /\s+Latest build: [^\n]*/, - "" + "", )}\n\nLatest build: [${matchArtifact.name}](${artifactUrl}) (as of ${new Date( - workflowUpdatedAt + workflowUpdatedAt, ).toUTCString()}).` await github.rest.pulls.update({ diff --git a/.github/workflows/pledge-signer-sync/pledge-sync.js b/.github/workflows/pledge-signer-sync/pledge-sync.js index 741b077585..2e70105b12 100644 --- a/.github/workflows/pledge-signer-sync/pledge-sync.js +++ b/.github/workflows/pledge-signer-sync/pledge-sync.js @@ -43,7 +43,7 @@ const getAddresses = async () => { await signInWithEmailAndPassword( getAuth(app), FIRESTORE_USER, - FIRESTORE_PASSWORD + FIRESTORE_PASSWORD, ) const db = getFirestore(app) @@ -56,7 +56,7 @@ const getAddresses = async () => { dbCollection, orderBy("signedManifesto.timestamp", "desc"), limit(CHUNK_SIZE), - where("signedManifesto.timestamp", ">=", TARGET_DATE) + where("signedManifesto.timestamp", ">=", TARGET_DATE), ) if (offset) { diff --git a/.nvmrc b/.nvmrc index 56bfee434b..9e15be3879 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v16.10.0 +v16.20.0 diff --git a/__mocks__/@ethersproject/web.ts b/__mocks__/@ethersproject/web.ts index 91b2238302..f01495d666 100644 --- a/__mocks__/@ethersproject/web.ts +++ b/__mocks__/@ethersproject/web.ts @@ -4,7 +4,7 @@ import sinon from "sinon" const mock = jest.createMockFromModule( - "@ethersproject/web" + "@ethersproject/web", ) const actual = diff --git a/__mocks__/uuid.ts b/__mocks__/uuid.ts index e493a51ba2..9ccea90ed1 100644 --- a/__mocks__/uuid.ts +++ b/__mocks__/uuid.ts @@ -1,9 +1,9 @@ const uuidMock = jest.createMockFromModule("uuid") -const uuidActual = jest.requireActual("uuid") - -const v4Spy = jest.spyOn(uuidActual, "v4") +const v4Mock = jest + .fn() + .mockImplementation(() => jest.requireActual("uuid").v4()) module.exports = { ...uuidMock, - v4: v4Spy, + v4: v4Mock, } diff --git a/__mocks__/webextension-polyfill.ts b/__mocks__/webextension-polyfill.ts index 3ead628ac3..7312c55410 100644 --- a/__mocks__/webextension-polyfill.ts +++ b/__mocks__/webextension-polyfill.ts @@ -25,7 +25,7 @@ module.exports = { getCurrent: jest.fn(() => // getCurrent can return undefined if there is no tab, and we act accordingly // in the code. - Promise.resolve(undefined as unknown as Tabs.Tab) + Promise.resolve(undefined as unknown as Tabs.Tab), ), }, windows: { diff --git a/background/abilities.ts b/background/abilities.ts index 9256f53a47..49e16e5816 100644 --- a/background/abilities.ts +++ b/background/abilities.ts @@ -39,7 +39,7 @@ export const ABILITY_TYPES = [ "misc", ] as const -export type AbilityType = typeof ABILITY_TYPES[number] +export type AbilityType = (typeof ABILITY_TYPES)[number] export type Ability = { type: AbilityType diff --git a/background/assets.ts b/background/assets.ts index 5cc647a84c..76db4ac20a 100644 --- a/background/assets.ts +++ b/background/assets.ts @@ -220,7 +220,7 @@ export function isFungibleAsset(asset: AnyAsset): asset is FungibleAsset { * Type guard to check if an AnyAsset is actually a SmartContractFungibleAsset. */ export function isSmartContractFungibleAsset( - asset: T + asset: T, ): asset is T & SmartContractFungibleAsset { return "homeNetwork" in asset && isFungibleAsset(asset) } @@ -232,7 +232,7 @@ export function isSmartContractFungibleAsset( * FungibleAsset nature of the internal asset! */ export function isFungibleAssetAmount( - assetAmount: AnyAssetAmount + assetAmount: AnyAssetAmount, ): assetAmount is FungibleAssetAmount { return isFungibleAsset(assetAmount.asset) } @@ -279,7 +279,7 @@ export function flipPricePoint(pricePoint: PricePoint): PricePoint { */ export function convertAssetAmountViaPricePoint( sourceAssetAmount: T, - assetPricePoint: PricePoint | undefined + assetPricePoint: PricePoint | undefined, ): FungibleAssetAmount | undefined { if (typeof assetPricePoint === "undefined") { return undefined @@ -350,7 +350,7 @@ export function convertAssetAmountViaPricePoint( * is undefined. */ export function unitPricePointForPricePoint( - assetPricePoint: PricePoint | undefined + assetPricePoint: PricePoint | undefined, ): UnitPricePoint | undefined { if (typeof assetPricePoint === "undefined") { return undefined @@ -366,7 +366,7 @@ export function unitPricePointForPricePoint( : 1n, asset: sourceAsset, }, - assetPricePoint + assetPricePoint, ) if (typeof unitPrice !== "undefined") { @@ -394,7 +394,7 @@ export function unitPricePointForPricePoint( */ export function assetAmountToDesiredDecimals( assetAmount: FungibleAssetAmount, - desiredDecimals: number + desiredDecimals: number, ): number { const { amount, diff --git a/background/constants/coin-types.ts b/background/constants/coin-types.ts index 0dab19b232..5a32a22901 100644 --- a/background/constants/coin-types.ts +++ b/background/constants/coin-types.ts @@ -16,4 +16,4 @@ export const coinTypesByAssetSymbol = { * All coin types known to the extension. */ export type Slip44CoinType = - typeof coinTypesByAssetSymbol[keyof typeof coinTypesByAssetSymbol] + (typeof coinTypesByAssetSymbol)[keyof typeof coinTypesByAssetSymbol] diff --git a/background/constants/currencies.ts b/background/constants/currencies.ts index 6c0a3053fb..ac28f0e583 100644 --- a/background/constants/currencies.ts +++ b/background/constants/currencies.ts @@ -11,7 +11,7 @@ export const USD: FiatCurrency = { export const FIAT_CURRENCIES = [USD] export const FIAT_CURRENCIES_SYMBOL = FIAT_CURRENCIES.map( - (currency) => currency.symbol + (currency) => currency.symbol, ) export const ETH_DATA = { diff --git a/background/constants/networks.ts b/background/constants/networks.ts index 0fae207948..9d55718bf1 100644 --- a/background/constants/networks.ts +++ b/background/constants/networks.ts @@ -107,12 +107,12 @@ export const DEFAULT_NETWORKS = [ export function isBuiltInNetwork(network: EVMNetwork): boolean { return DEFAULT_NETWORKS.some( - (builtInNetwork) => builtInNetwork.chainID === network.chainID + (builtInNetwork) => builtInNetwork.chainID === network.chainID, ) } export const DEFAULT_NETWORKS_BY_CHAIN_ID = new Set( - DEFAULT_NETWORKS.map((network) => network.chainID) + DEFAULT_NETWORKS.map((network) => network.chainID), ) export const FORK: EVMNetwork = { @@ -124,13 +124,13 @@ export const FORK: EVMNetwork = { } export const EIP_1559_COMPLIANT_CHAIN_IDS = new Set( - [ETHEREUM, POLYGON, GOERLI, AVALANCHE].map((network) => network.chainID) + [ETHEREUM, POLYGON, GOERLI, AVALANCHE].map((network) => network.chainID), ) export const CHAINS_WITH_MEMPOOL = new Set( [ETHEREUM, POLYGON, AVALANCHE, GOERLI, BINANCE_SMART_CHAIN].map( - (network) => network.chainID - ) + (network) => network.chainID, + ), ) export const NETWORK_BY_CHAIN_ID = { @@ -148,7 +148,7 @@ export const NETWORK_BY_CHAIN_ID = { } export const TEST_NETWORK_BY_CHAIN_ID = new Set( - [GOERLI].map((network) => network.chainID) + [GOERLI].map((network) => network.chainID), ) export const NETWORK_FOR_LEDGER_SIGNING = [ETHEREUM, POLYGON] @@ -168,13 +168,13 @@ export const CHAIN_ID_TO_0X_API_BASE: { } export const NETWORKS_SUPPORTING_SWAPS = new Set( - Object.keys(CHAIN_ID_TO_0X_API_BASE) + Object.keys(CHAIN_ID_TO_0X_API_BASE), ) export const ALCHEMY_SUPPORTED_CHAIN_IDS = new Set( [ETHEREUM, POLYGON, ARBITRUM_ONE, OPTIMISM, GOERLI].map( - (network) => network.chainID - ) + (network) => network.chainID, + ), ) export const FLASHBOTS_SUPPORTED_CHAIN_IDS = new Set([ETHEREUM.chainID]) @@ -251,5 +251,7 @@ export const CHAIN_ID_TO_OPENSEA_CHAIN = { } export const NETWORKS_WITH_FEE_SETTINGS = new Set( - [ETHEREUM, POLYGON, ARBITRUM_ONE, AVALANCHE].map((network) => network.chainID) + [ETHEREUM, POLYGON, ARBITRUM_ONE, AVALANCHE].map( + (network) => network.chainID, + ), ) diff --git a/background/features.ts b/background/features.ts index 7bf40f3875..ecf56afa96 100644 --- a/background/features.ts +++ b/background/features.ts @@ -58,7 +58,7 @@ export const FeatureFlags = Object.keys({ */ export function isEnabled( flagName: FeatureFlagType, - checkBrowserStorage: boolean = BuildTimeFlag.SWITCH_RUNTIME_FLAGS + checkBrowserStorage: boolean = BuildTimeFlag.SWITCH_RUNTIME_FLAGS, ): boolean { // Guard to narrow flag type const isBuildTimeFlag = (flag: string): flag is BuildTimeFlagType => @@ -82,7 +82,7 @@ export function isEnabled( */ export function isDisabled( flagName: FeatureFlagType, - checkBrowserStorage: boolean = BuildTimeFlag.SWITCH_RUNTIME_FLAGS + checkBrowserStorage: boolean = BuildTimeFlag.SWITCH_RUNTIME_FLAGS, ): boolean { return !isEnabled(flagName, checkBrowserStorage) } @@ -105,7 +105,7 @@ export function isDisabled( */ export function wrapIfEnabled( flag: FeatureFlagType, - valueToWrap: T + valueToWrap: T, ): [T] | [] { return isEnabled(flag) ? [valueToWrap] : [] } @@ -117,7 +117,7 @@ export function wrapIfEnabled( */ export function wrapIfDisabled( flag: FeatureFlagType, - valueToWrap: T + valueToWrap: T, ): [T] | [] { return isDisabled(flag) ? [valueToWrap] : [] } diff --git a/background/generate-validators.ts b/background/generate-validators.ts index 1a165d4e85..081262f7d9 100644 --- a/background/generate-validators.ts +++ b/background/generate-validators.ts @@ -35,19 +35,19 @@ const ajvJSON = new AjvJSON({ const jtdModuleCode = standaloneCode(ajvJTD).replace( '/*# sourceURL="https://uniswap.org/tokenlist.schema.json" */', - "" + "", ) const jsonModuleCode = standaloneCode(ajvJSON).replace( '/*# sourceURL="https://uniswap.org/tokenlist.schema.json" */', - "" + "", ) writeFileSync( path.join(__dirname, "/lib/validate/jtd-validators.js"), - jtdModuleCode + jtdModuleCode, ) writeFileSync( path.join(__dirname, "/lib/validate/json-validators.js"), - jsonModuleCode + jsonModuleCode, ) diff --git a/background/index.ts b/background/index.ts index 3ef5b4f657..db98c2fa0b 100644 --- a/background/index.ts +++ b/background/index.ts @@ -2,19 +2,52 @@ import browser from "webextension-polyfill" import { Store as ProxyStore } from "webext-redux" import { produce } from "immer" -import { AnyAction } from "@reduxjs/toolkit" +import { Action, AnyAction, ThunkAction, ThunkDispatch } from "@reduxjs/toolkit" import { Delta, patch as patchDeepDiff } from "./differ" import Main from "./main" import { encodeJSON, decodeJSON } from "./lib/utils" import { RootState } from "./redux-slices" +import { BackgroundAsyncThunkAction } from "./redux-slices/utils" export { browser } export type { RootState } -export type BackgroundDispatch = Main["store"]["dispatch"] +type BackgroundAsyncThunkDispatch = { + // BackgroundAsyncThunks, unlike regular AsyncThunks, produce the direct + // result of their action as their return value. Errors are handled higher up + // in the stack in webext-redux, and generally are not expected to be + // communication-based, since background async thunks run in the background + // script, thus only going through a simple browser port that is expected to + // be reliable except in particularly unusual circumstances.. + ( + asyncAction: BackgroundAsyncThunkAction, + ): Promise + (action: T): Promise + (asyncAction: ThunkAction): R +} + +// Take a ThunkDispatch as produced by Redux typing and wrap it in +// BackgroundAsyncThunkDispatch, which takes care of: +// +// - The fact that webext-redux wraps all action results in Promises. +// - The fact that we have a special type, BackgroundAsyncThunk, that +// behaves a little differently from AsyncThunk by producing its result +// directly at the dispatch site, instead of producing a triplet of +// fulfilled/rejected/complete functions. +type BackgroundAsyncThunkDispatchify = T extends ThunkDispatch< + infer S, + infer E, + infer A +> + ? BackgroundAsyncThunkDispatch + : never + +export type BackgroundDispatch = BackgroundAsyncThunkDispatchify< + Main["store"]["dispatch"] +> /** * Creates and returns a new webext-redux proxy store. This is a redux store @@ -37,7 +70,7 @@ export async function newProxyStore(): Promise< } const result = produce(oldObj, (draft) => - patchDeepDiff(draft, patchesWrapper[0]) + patchDeepDiff(draft, patchesWrapper[0]), ) return result diff --git a/background/lib/alchemy.ts b/background/lib/alchemy.ts index 883f2e19df..845d536c53 100644 --- a/background/lib/alchemy.ts +++ b/background/lib/alchemy.ts @@ -44,7 +44,7 @@ export async function getAssetTransfers( fromBlock: number, toBlock?: number, order: "asc" | "desc" = "desc", - maxCount = 25 + maxCount = 25, ): Promise { const { address: account, network } = addressOnNetwork @@ -91,7 +91,7 @@ export async function getAssetTransfers( logger.warn( "Alchemy asset transfer response didn't validate, did the API change?", jsonResponse, - isValidAlchemyAssetTransferResponse.errors + isValidAlchemyAssetTransferResponse.errors, ) return [] }) @@ -150,7 +150,7 @@ export async function getAssetTransfers( */ export async function getTokenBalances( provider: SerialFallbackProvider, - addressOnNetwork: AddressOnNetwork + addressOnNetwork: AddressOnNetwork, ): Promise { const fetchAndValidate = async (address: string, pageKey?: string) => { const json: unknown = await provider.send("alchemy_getTokenBalances", [ @@ -163,7 +163,7 @@ export async function getTokenBalances( logger.warn( "Alchemy token balance response didn't validate, did the API change?", json, - isValidAlchemyTokenBalanceResponse.errors + isValidAlchemyTokenBalanceResponse.errors, ) return null } @@ -200,13 +200,13 @@ export async function getTokenBalances( balances .filter( ( - b + b, ): b is TokenBalance[0] & { tokenBalance: NonNullable } => (b.error === null || !("error" in b)) && "tokenBalance" in b && - b.tokenBalance !== null + b.tokenBalance !== null, ) // A hex value of 0x without any subsequent numbers generally means "no // value" (as opposed to 0) in Ethereum implementations, so filter it out @@ -215,7 +215,7 @@ export async function getTokenBalances( ({ tokenBalance }) => // Do not filter out 0-balances here to account for cases when a users // spends all of their tokens (swap MAX of a token, bridge all tokens, etc..) - tokenBalance !== "0x" + tokenBalance !== "0x", ) .map((tokenBalance) => { let balance = tokenBalance.tokenBalance @@ -246,7 +246,7 @@ export async function getTokenBalances( */ export async function getTokenMetadata( provider: SerialFallbackProvider, - { contractAddress, homeNetwork }: SmartContract + { contractAddress, homeNetwork }: SmartContract, ): Promise { const json: unknown = await provider.send("alchemy_getTokenMetadata", [ contractAddress, @@ -255,7 +255,7 @@ export async function getTokenMetadata( logger.warn( "Alchemy token metadata response didn't validate, did the API change?", json, - isValidAlchemyTokenMetadataResponse.errors + isValidAlchemyTokenMetadataResponse.errors, ) throw new Error("Alchemy token metadata response didn't validate.") } @@ -276,7 +276,7 @@ export async function getTokenMetadata( */ export function transactionFromAlchemyWebsocketTransaction( websocketTx: unknown, - network: EVMNetwork + network: EVMNetwork, ): AnyEVMTransaction { // These are the props we expect here. const tx = websocketTx as { diff --git a/background/lib/asset-similarity.ts b/background/lib/asset-similarity.ts index d236c23a5a..c4cc819b9f 100644 --- a/background/lib/asset-similarity.ts +++ b/background/lib/asset-similarity.ts @@ -47,7 +47,7 @@ export function prioritizedAssetSimilarityKeys(asset: AnyAsset): string[] { if (isSmartContractFungibleAsset(asset)) { const normalizedContractAddressAndNetwork = `${normalizeEVMAddress( - asset.contractAddress + asset.contractAddress, )}-${asset.homeNetwork.chainID}` similarityKeys = [...similarityKeys, normalizedContractAddressAndNetwork] @@ -71,7 +71,7 @@ export function prioritizedAssetSimilarityKeys(asset: AnyAsset): string[] { export function findClosestAssetIndex( assetToFind: AnyAsset, assets: AnyAsset[], - minimumSimilarityScore = 2 + minimumSimilarityScore = 2, ): number | undefined { const [bestScore, index] = assets.reduce( ([runningScore, runningScoreIndex], asset, i) => { @@ -81,7 +81,7 @@ export function findClosestAssetIndex( } return [runningScore, runningScoreIndex] }, - [0, -1] + [0, -1], ) if (bestScore >= minimumSimilarityScore && index >= 0) { @@ -104,7 +104,7 @@ export function mergeAssets(asset1: AnyAsset, asset2: AnyAsset): AnyAsset { ...asset2.metadata, tokenLists: asset1.metadata?.tokenLists?.concat( - asset2.metadata?.tokenLists ?? [] + asset2.metadata?.tokenLists ?? [], ) ?? [], }, } diff --git a/background/lib/daylight.ts b/background/lib/daylight.ts index 80acf8f592..d4dba51554 100644 --- a/background/lib/daylight.ts +++ b/background/lib/daylight.ts @@ -83,11 +83,11 @@ type SpamReportResponse = { export const getDaylightAbilities = async ( address: string, // Amount of times to retry fetching abilities for an address that is not fully synced yet. - retries = DEFAULT_RETRIES + retries = DEFAULT_RETRIES, ): Promise => { // Learn more at https://docs.daylight.xyz/reference/get_v1-wallets-address-abilities const requestURL = new URL( - `${DAYLIGHT_BASE_URL}/wallets/${address}/abilities` + `${DAYLIGHT_BASE_URL}/wallets/${address}/abilities`, ) // The most interesting abilities will be the first requestURL.searchParams.set("sort", "magic") @@ -134,7 +134,7 @@ export const getDaylightAbilities = async ( export const createSpamReport = async ( address: string, abilitySlug: string, - reason: string + reason: string, ): Promise => { try { const options = JSON.stringify({ @@ -145,7 +145,7 @@ export const createSpamReport = async ( const response: SpamReportResponse = await fetchJson( `${DAYLIGHT_BASE_URL}/spam-report`, - options + options, ) return response.success diff --git a/background/lib/erc20.ts b/background/lib/erc20.ts index 055867c8d0..b2999c0ae0 100644 --- a/background/lib/erc20.ts +++ b/background/lib/erc20.ts @@ -21,44 +21,44 @@ import logger from "./logger" export const ERC20_FUNCTIONS = { allowance: FunctionFragment.from( - "allowance(address owner, address spender) view returns (uint256)" + "allowance(address owner, address spender) view returns (uint256)", ), approve: FunctionFragment.from( - "approve(address spender, uint256 value) returns (bool)" + "approve(address spender, uint256 value) returns (bool)", ), balanceOf: FunctionFragment.from( - "balanceOf(address owner) view returns (uint256)" + "balanceOf(address owner) view returns (uint256)", ), decimals: FunctionFragment.from("decimals() view returns (uint8)"), name: FunctionFragment.from("name() view returns (string)"), symbol: FunctionFragment.from("symbol() view returns (string)"), totalSupply: FunctionFragment.from("totalSupply() view returns (uint256)"), transfer: FunctionFragment.from( - "transfer(address to, uint amount) returns (bool)" + "transfer(address to, uint amount) returns (bool)", ), transferFrom: FunctionFragment.from( - "transferFrom(address from, address to, uint amount) returns (bool)" + "transferFrom(address from, address to, uint amount) returns (bool)", ), } const ERC20_EVENTS = { Transfer: EventFragment.from( - "Transfer(address indexed from, address indexed to, uint amount)" + "Transfer(address indexed from, address indexed to, uint amount)", ), Approval: EventFragment.from( - "Approval(address indexed owner, address indexed spender, uint amount)" + "Approval(address indexed owner, address indexed spender, uint amount)", ), } export const ERC20_ABI = Object.values(ERC20_FUNCTIONS).concat( - Object.values(ERC20_EVENTS) + Object.values(ERC20_EVENTS), ) export const ERC20_INTERFACE = new ethers.utils.Interface(ERC20_ABI) export const ERC2612_FUNCTIONS = { permit: FunctionFragment.from( - "permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)" + "permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)", ), nonces: FunctionFragment.from("nonces(address owner) view returns (uint256)"), DOMAIN: FunctionFragment.from("DOMAIN_SEPARATOR() view returns (bytes32)"), @@ -74,8 +74,8 @@ export const ERC2612_INTERFACE = new ethers.utils.Interface(ERC2612_ABI) export async function getBalance( provider: BaseProvider, tokenAddress: string, - account: string -): Promise { + account: string, +): Promise { const token = new ethers.Contract(tokenAddress, ERC20_ABI, provider) return BigInt((await token.balanceOf(account)).toString()) @@ -87,12 +87,12 @@ export async function getBalance( */ export async function getMetadata( provider: BaseProvider, - tokenSmartContract: SmartContract + tokenSmartContract: SmartContract, ): Promise { const token = new ethers.Contract( tokenSmartContract.contractAddress, ERC20_ABI, - provider + provider, ) try { @@ -101,7 +101,7 @@ export async function getMetadata( ERC20_FUNCTIONS.symbol, ERC20_FUNCTIONS.name, ERC20_FUNCTIONS.decimals, - ].map(({ name: functionName }) => token.callStatic[functionName]()) + ].map(({ name: functionName }) => token.callStatic[functionName]()), ) return { @@ -121,7 +121,7 @@ export async function getMetadata( * Returns the parsed data if parsing succeeds, otherwise returns `undefined`. */ export function parseERC20Tx( - input: string + input: string, ): TransactionDescription | undefined { try { return ERC20_INTERFACE.parseTransaction({ @@ -164,7 +164,7 @@ export function parseLogsForERC20Transfers(logs: EVMLog[]): ERC20TransferLog[] { const decoded = ERC20_INTERFACE.decodeEventLog( ERC20_EVENTS.Transfer, data, - topics + topics, ) if ( @@ -191,7 +191,7 @@ export function parseLogsForERC20Transfers(logs: EVMLog[]): ERC20TransferLog[] { export const getTokenBalances = async ( { address, network }: AddressOnNetwork, tokenAddresses: HexString[], - provider: Provider + provider: Provider, ): Promise => { const multicallAddress = CHAIN_SPECIFIC_MULTICALL_CONTRACT_ADDRESSES[network.chainID] || @@ -200,7 +200,7 @@ export const getTokenBalances = async ( const contract = new ethers.Contract( multicallAddress, MULTICALL_ABI, - provider + provider, ) const balanceOfCallData = ERC20_INTERFACE.encodeFunctionData("balanceOf", [ @@ -210,7 +210,7 @@ export const getTokenBalances = async ( const response = (await contract.callStatic.tryBlockAndAggregate( // false === don't require all calls to succeed false, - tokenAddresses.map((tokenAddress) => [tokenAddress, balanceOfCallData]) + tokenAddresses.map((tokenAddress) => [tokenAddress, balanceOfCallData]), )) as AggregateContractResponse return response.returnData.flatMap((data, i) => { diff --git a/background/lib/erc721.ts b/background/lib/erc721.ts index 8e3baad7e4..9038ec5c3c 100644 --- a/background/lib/erc721.ts +++ b/background/lib/erc721.ts @@ -17,7 +17,7 @@ const abi = [ export async function getTokenURI( provider: BaseProvider, tokenAddress: HexString, - tokenID: bigint + tokenID: bigint, ): Promise { const tokenContract = new Contract(tokenAddress, abi).connect(provider) return tokenContract.tokenURI(tokenID) @@ -36,7 +36,7 @@ export interface ERC721Metadata { export async function getTokenMetadata( provider: BaseProvider, tokenAddress: HexString, - tokenID: bigint + tokenID: bigint, ): Promise { const uri = await getTokenURI(provider, tokenAddress, tokenID) if (uri) { @@ -55,7 +55,7 @@ export async function getTokenMetadata( logger.warn( "No token URI was found, perhaps this isn't an ERC-721 metadata-compliant NFT?", tokenAddress, - tokenID + tokenID, ) } return undefined diff --git a/background/lib/fixed-point.ts b/background/lib/fixed-point.ts index 3c2b96f62e..31ea1dceb4 100644 --- a/background/lib/fixed-point.ts +++ b/background/lib/fixed-point.ts @@ -34,7 +34,7 @@ export type FixedPointNumber = { export function convertFixedPoint( fixedPoint: bigint, fixedPointDecimals: number, - targetDecimals: number + targetDecimals: number, ): bigint { if (fixedPointDecimals >= targetDecimals) { return fixedPoint / 10n ** BigInt(fixedPointDecimals - targetDecimals) @@ -49,7 +49,7 @@ export function convertFixedPoint( */ export function convertFixedPointNumber( { amount, decimals }: FixedPointNumber, - targetDecimals: number + targetDecimals: number, ): FixedPointNumber { return { amount: convertFixedPoint(amount, decimals, targetDecimals), @@ -67,7 +67,7 @@ export function convertFixedPointNumber( export function multiplyFixedPointNumbers( { amount: amount1, decimals: decimals1 }: FixedPointNumber, { amount: amount2, decimals: decimals2 }: FixedPointNumber, - desiredResultDecimals?: number + desiredResultDecimals?: number, ): { amount: bigint; decimals: number } { const baseResult = { amount: amount1 * amount2, @@ -87,7 +87,7 @@ export function multiplyFixedPointNumbers( */ export function multiplyByFloat( fixedPointNumber: FixedPointNumber, - floatingPoint: number + floatingPoint: number, ): bigint { const floatingDecimals = (floatingPoint.toString().split(".")[1] ?? "").length @@ -96,7 +96,7 @@ export function multiplyByFloat( amount: BigInt(Math.floor(floatingPoint * 10 ** floatingDecimals)), decimals: floatingDecimals, }), - fixedPointNumber.decimals + fixedPointNumber.decimals, ).amount } @@ -106,14 +106,14 @@ export function multiplyByFloat( */ export function toFixedPoint( floatingPoint: number, - fixedPointDecimals: number + fixedPointDecimals: number, ): bigint { return multiplyByFloat( { amount: 10n ** BigInt(fixedPointDecimals), decimals: fixedPointDecimals, }, - floatingPoint + floatingPoint, ) } @@ -123,7 +123,7 @@ export function toFixedPoint( */ export function toFixedPointNumber( floatingPoint: number, - fixedPointDecimals: number + fixedPointDecimals: number, ): FixedPointNumber { return { amount: toFixedPoint(floatingPoint, fixedPointDecimals), @@ -139,7 +139,7 @@ export function toFixedPointNumber( * floating point string. */ export function parseToFixedPointNumber( - floatingPointString: string + floatingPointString: string, ): FixedPointNumber | undefined { if (!floatingPointString.match(/^[^0-9]*([0-9,]+)(?:\.([0-9]*))?$/)) { return undefined @@ -163,7 +163,7 @@ export function parseToFixedPointNumber( } catch (error) { logger.debug( `Error parsing ${floatingPointString} to fixed-point number:`, - error + error, ) return undefined } @@ -183,7 +183,7 @@ export function parseToFixedPointNumber( */ export function fixedPointNumberToString( { amount, decimals }: FixedPointNumber, - trimTrailingZeros = true + trimTrailingZeros = true, ): string { const undecimaledAmount = amount.toString() const preDecimalLength = undecimaledAmount.length - decimals @@ -226,7 +226,7 @@ export function fixedPointNumberToString( export function fromFixedPoint( fixedPoint: bigint, fixedPointDecimals: number, - desiredDecimals: number + desiredDecimals: number, ): number { const fixedPointDesiredDecimalsAmount = fixedPoint / @@ -249,7 +249,7 @@ export function fromFixedPoint( */ export function fromFixedPointNumber( { amount, decimals }: FixedPointNumber, - desiredDecimals: number + desiredDecimals: number, ): number { return fromFixedPoint(amount, decimals, desiredDecimals) } diff --git a/background/lib/gas.ts b/background/lib/gas.ts index ec3b887d92..99a84a5412 100644 --- a/background/lib/gas.ts +++ b/background/lib/gas.ts @@ -42,7 +42,7 @@ type PolygonGasResponse = { const getPolygonGasPrices = async (price: bigint): Promise => { // @TODO Validate this response using ajv const gasEstimates = (await fetchJson( - "https://gasstation.polygon.technology/v2" + "https://gasstation.polygon.technology/v2", )) as PolygonGasResponse const baseFeePerGas = BigInt(Math.ceil(gasEstimates.estimatedBaseFee * 1e9)) @@ -55,7 +55,7 @@ const getPolygonGasPrices = async (price: bigint): Promise => { { confidence: 99, maxPriorityFeePerGas: gweiToWei( - Math.ceil(gasEstimates.fast.maxPriorityFee) + Math.ceil(gasEstimates.fast.maxPriorityFee), ), maxFeePerGas: gweiToWei(Math.ceil(gasEstimates.fast.maxFee)), price, // this estimate isn't great @@ -63,7 +63,7 @@ const getPolygonGasPrices = async (price: bigint): Promise => { { confidence: 95, maxPriorityFeePerGas: gweiToWei( - Math.ceil(gasEstimates.standard.maxPriorityFee) + Math.ceil(gasEstimates.standard.maxPriorityFee), ), maxFeePerGas: gweiToWei(Math.ceil(gasEstimates.standard.maxFee)), price, @@ -71,7 +71,7 @@ const getPolygonGasPrices = async (price: bigint): Promise => { { confidence: 70, maxPriorityFeePerGas: gweiToWei( - Math.ceil(gasEstimates.safeLow.maxPriorityFee) + Math.ceil(gasEstimates.safeLow.maxPriorityFee), ), maxFeePerGas: gweiToWei(Math.ceil(gasEstimates.safeLow.maxFee)), price, @@ -83,7 +83,7 @@ const getPolygonGasPrices = async (price: bigint): Promise => { const getArbitrumPrices = async ( baseFeePerGas: bigint, - blockNumber: number + blockNumber: number, ): Promise => ({ network: ARBITRUM_ONE, blockNumber, @@ -114,7 +114,7 @@ const getArbitrumPrices = async ( const getLegacyGasPrices = async ( network: EVMNetwork, gasPrice: bigint, - blockNumber: number + blockNumber: number, ): Promise => ({ network, blockNumber, @@ -144,7 +144,7 @@ const getLegacyGasPrices = async ( export default async function getBlockPrices( network: EVMNetwork, - provider: Provider + provider: Provider, ): Promise { // if BlockNative is configured and we're on mainnet, prefer their gas service if ( @@ -155,7 +155,7 @@ export default async function getBlockPrices( if (!blocknative) { blocknative = Blocknative.connect( BLOCKNATIVE_API_KEY, - BlocknativeNetworkIds.ethereum.mainnet + BlocknativeNetworkIds.ethereum.mainnet, ) } return await blocknative.getBlockPrices() @@ -175,7 +175,7 @@ export default async function getBlockPrices( try { return await getPolygonGasPrices( feeData?.gasPrice?.toBigInt() ?? - 0n /* @TODO what do we do if this is 0n */ + 0n /* @TODO what do we do if this is 0n */, ) } catch (e) { logger.error("Error getting block prices from Polygon", e) @@ -193,7 +193,7 @@ export default async function getBlockPrices( return await getLegacyGasPrices( BINANCE_SMART_CHAIN, gasPrice, - currentBlock.number + currentBlock.number, ) } catch (err) { logger.error("Error getting gas price from BlockNative", err) @@ -244,7 +244,7 @@ export default async function getBlockPrices( logger.warn( "Not receiving accurate EIP-1559 gas prices from provider", feeData, - network.name + network.name, ) } diff --git a/background/lib/logger.ts b/background/lib/logger.ts index 3eeff65fb4..64fd7643c6 100644 --- a/background/lib/logger.ts +++ b/background/lib/logger.ts @@ -84,7 +84,7 @@ function purgeSensitiveFailSafe(log: string): string { return log.replaceAll( /0x[0-9a-fA-F]+|(\b[a-zA-Z0-9]{64}\b)|(?:[a-z]+(?:\s|$)){12}/g, - "[REDACTED]" + "[REDACTED]", ) } @@ -94,7 +94,7 @@ const WEBKIT_MARKER = "@" const GECKO_MARKER = "/" function logLabelFromStackEntry( - stackEntry: string | undefined + stackEntry: string | undefined, ): string | undefined { // Blink-ish. if (stackEntry?.startsWith(BLINK_PREFIX)) { @@ -137,7 +137,7 @@ const iso8601DateRegExpString = // when splitting. const logDateRegExp = new RegExp( `(?=^\\[${iso8601DateRegExpString}\\] \\[)`, - "m" + "m", ) class Logger { @@ -202,7 +202,7 @@ class Logger { console.group( `%c ${styles[level].icon} [${logTime}] ${logLabel} %c [${logDate}]`, styles[level].css.join(";"), - styles[level].dateCss ?? styles.debug.dateCss.join(";") + styles[level].dateCss ?? styles.debug.dateCss.join(";"), ) console[level](...input) @@ -223,7 +223,7 @@ class Logger { isoDateString: string, logLabel: string, input: unknown[], - stackTrace: string[] | undefined + stackTrace: string[] | undefined, ) { const formattedInput = input .map((loggedValue) => { @@ -310,7 +310,7 @@ class Logger { const entriesByDateAsc = logEntries // Sort by date. .sort((a, b) => - a.substr(1, iso8601Length).localeCompare(b.substr(1, iso8601Length)) + a.substr(1, iso8601Length).localeCompare(b.substr(1, iso8601Length)), ) const lastEntry = entriesByDateAsc[entriesByDateAsc.length - 1] @@ -319,7 +319,7 @@ class Logger { return entriesByDateAsc // Only grab logs from the last available hour .filter( (logLine) => - dateFromLogEntry(logLine).getTime() >= lastEntryDate.getTime() - HOUR + dateFromLogEntry(logLine).getTime() >= lastEntryDate.getTime() - HOUR, ) .join("\n") } diff --git a/background/lib/nfts.ts b/background/lib/nfts.ts index 33cc2c36f1..3408e1cd6f 100644 --- a/background/lib/nfts.ts +++ b/background/lib/nfts.ts @@ -30,7 +30,7 @@ function groupChainsByAddress(accounts: AddressOnNetwork[]) { export function getNFTs( accounts: AddressOnNetwork[], - collections: string[] + collections: string[], ): Promise<{ nfts: NFT[] nextPageURLs: { [collectionID: string]: { [address: string]: string } } @@ -45,7 +45,7 @@ export function getNFTs( } = {} const poapChains = chainIDs.filter((chainID) => - NFT_PROVIDER_TO_CHAIN.poap.includes(chainID) + NFT_PROVIDER_TO_CHAIN.poap.includes(chainID), ) if (poapChains.length && collections.includes(POAP_COLLECTION_ID)) { @@ -54,7 +54,7 @@ export function getNFTs( } const simpleHashChains = chainIDs.filter((chainID) => - NFT_PROVIDER_TO_CHAIN.simplehash.includes(chainID) + NFT_PROVIDER_TO_CHAIN.simplehash.includes(chainID), ) if (simpleHashChains.length) { @@ -71,7 +71,7 @@ export function getNFTs( nextPageURLs[collectionID] ??= {} nextPageURLs[collectionID][address] = nextPageURL } - }) + }), ) } @@ -79,12 +79,12 @@ export function getNFTs( nfts, nextPageURLs, } - } + }, ) } export function getNFTCollections( - accounts: AddressOnNetwork[] + accounts: AddressOnNetwork[], ): Promise[] { const chainIDsByAddress = groupChainsByAddress(accounts) @@ -93,7 +93,7 @@ export function getNFTCollections( const collections: NFTCollection[] = [] const poapChains = chainIDs.filter((chainID) => - NFT_PROVIDER_TO_CHAIN.poap.includes(chainID) + NFT_PROVIDER_TO_CHAIN.poap.includes(chainID), ) if (poapChains.length) { @@ -101,7 +101,7 @@ export function getNFTCollections( } const simpleHashChains = chainIDs.filter((chainID) => - NFT_PROVIDER_TO_CHAIN.simplehash.includes(chainID) + NFT_PROVIDER_TO_CHAIN.simplehash.includes(chainID), ) if (simpleHashChains.length) { @@ -109,13 +109,13 @@ export function getNFTCollections( } return collections - } + }, ) } export async function getNFTsTransfers( accounts: AddressOnNetwork[], - timestamp: UNIXTime + timestamp: UNIXTime, ): Promise { const { addresses, chains } = accounts.reduce<{ addresses: Set @@ -127,13 +127,13 @@ export async function getNFTsTransfers( return acc }, - { addresses: new Set(), chains: new Set() } + { addresses: new Set(), chains: new Set() }, ) const transfers = await getSimpleHashNFTsTransfers( [...addresses], [...chains], - timestamp + timestamp, ) return transfers diff --git a/background/lib/poap.ts b/background/lib/poap.ts index e9bffd76c5..03c1721021 100644 --- a/background/lib/poap.ts +++ b/background/lib/poap.ts @@ -76,7 +76,7 @@ function poapNFTModelToNFT(original: PoapNFTModel, owner: string): NFT { * @returns */ export async function getPoapNFTs( - address: string + address: string, ): Promise { const requestURL = new URL(`https://api.poap.tech/actions/scan/${address}`) @@ -100,7 +100,7 @@ export async function getPoapNFTs( } export async function getPoapCollections( - address: string + address: string, ): Promise { return { id: POAP_COLLECTION_ID, // let's keep POAPs in one collection diff --git a/background/lib/posthog.ts b/background/lib/posthog.ts index c67b1f6ad4..87d7c20376 100644 --- a/background/lib/posthog.ts +++ b/background/lib/posthog.ts @@ -23,7 +23,7 @@ export enum OneTimeAnalyticsEvent { } export const isOneTimeAnalyticsEvent = ( - eventName: string + eventName: string, ): eventName is OneTimeAnalyticsEvent => Object.values(OneTimeAnalyticsEvent).includes(eventName) @@ -45,7 +45,7 @@ export function shouldSendPosthogEvents(): boolean { export function createPosthogPayload( personUUID: string, eventName: string, - payload?: Record + payload?: Record, ): string { return JSON.stringify({ // See posthog Data model: https://posthog.com/docs/how-posthog-works/data-model @@ -77,7 +77,7 @@ export function createPosthogPayload( export function sendPosthogEvent( personUUID: string, eventName: string, - payload?: Record + payload?: Record, ): void { try { if (shouldSendPosthogEvents()) { diff --git a/background/lib/priceOracle.ts b/background/lib/priceOracle.ts index fce8eaa983..5f501e04f1 100644 --- a/background/lib/priceOracle.ts +++ b/background/lib/priceOracle.ts @@ -74,10 +74,10 @@ const SPOT_PRICE_ORACLE_CONSTANTS = { const PRICE_ORACLE_FUNCTIONS = { getRate: FunctionFragment.from( - "getRate(address srcToken, address dstToken, bool useWrappers) external view returns (uint256 weightedRate)" + "getRate(address srcToken, address dstToken, bool useWrappers) external view returns (uint256 weightedRate)", ), getRateToEth: FunctionFragment.from( - "getRateToEth(address srcToken, bool useSrcWrappers) external view returns (uint256 weightedRate)" + "getRateToEth(address srcToken, bool useSrcWrappers) external view returns (uint256 weightedRate)", ), } @@ -87,7 +87,7 @@ const PRICE_ORACLE_INTERFACE = new ethers.utils.Interface(PRICE_ORACLE_ABI) export const toUSDPricePoint = ( asset: AnyAsset, - coinPrice: number + coinPrice: number, ): PricePoint => { const assetPrecision = "decimals" in asset ? asset.decimals : 0 @@ -103,23 +103,23 @@ export const toUSDPricePoint = ( const getRateForBaseAsset = async ( network: EVMNetwork, - provider: SerialFallbackProvider + provider: SerialFallbackProvider, ): Promise => { const offChainOracleContract = new ethers.Contract( SPOT_PRICE_ORACLE_CONSTANTS[network.chainID].oracleAddress, PRICE_ORACLE_ABI, - provider + provider, ) return offChainOracleContract.callStatic.getRateToEth( SPOT_PRICE_ORACLE_CONSTANTS[network.chainID].USDCAddress, - true + true, ) } const getBaseAssetPriceFromRate = (rate: number, network: EVMNetwork) => { const numerator = ethers.BigNumber.from(10).pow( - SPOT_PRICE_ORACLE_CONSTANTS[network.chainID].USDCDecimals + SPOT_PRICE_ORACLE_CONSTANTS[network.chainID].USDCDecimals, ) const denominator = ethers.BigNumber.from(10).pow(network.baseAsset.decimals) const BaseAssetPerUSD = denominator @@ -132,7 +132,7 @@ const getBaseAssetPriceFromRate = (rate: number, network: EVMNetwork) => { export async function getUSDPriceForBaseAsset( network: EVMNetwork, - provider: SerialFallbackProvider + provider: SerialFallbackProvider, ): Promise { const rate = await getRateForBaseAsset(network, provider) const USDPriceOfBaseAsset = getBaseAssetPriceFromRate(rate, network) @@ -142,7 +142,7 @@ export async function getUSDPriceForBaseAsset( const getRatesForTokens = async ( assets: SmartContractFungibleAsset[], provider: SerialFallbackProvider, - network: EVMNetwork + network: EVMNetwork, ): Promise< { asset: SmartContractFungibleAsset @@ -159,7 +159,7 @@ const getRatesForTokens = async ( const multicall = new ethers.Contract( MULTICALL_CONTRACT_ADDRESS, MULTICALL_ABI, - provider + provider, ) const response = (await multicall.callStatic.tryBlockAndAggregate( @@ -175,7 +175,7 @@ const getRatesForTokens = async ( SPOT_PRICE_ORACLE_CONSTANTS[network.chainID].oracleAddress, callData, ] - }) + }), )) as AggregateContractResponse return response.returnData.map((data, i) => ({ @@ -187,10 +187,10 @@ const getRatesForTokens = async ( const getTokenPriceFromRate = ( rate: ethers.ethers.BigNumber, asset: SmartContractFungibleAsset, - network: EVMNetwork + network: EVMNetwork, ) => { const numerator = ethers.BigNumber.from(10).pow( - SPOT_PRICE_ORACLE_CONSTANTS[network.chainID].USDCDecimals + SPOT_PRICE_ORACLE_CONSTANTS[network.chainID].USDCDecimals, ) // Tokens with no decimals will have a denominator of 0, // which will cause a divide by zero error, so we set it to 1 @@ -209,7 +209,7 @@ const getTokenPriceFromRate = ( export async function getUSDPriceForTokens( assets: SmartContractFungibleAsset[], network: EVMNetwork, - provider: SerialFallbackProvider + provider: SerialFallbackProvider, ): Promise<{ [contractAddress: string]: UnitPricePoint }> { @@ -242,7 +242,7 @@ export async function getUSDPriceForTokens( const USDPriceOfToken = getTokenPriceFromRate( ethers.BigNumber.from(response.returnData), asset, - network + network, ) pricePoints[asset.contractAddress] = { diff --git a/background/lib/prices.ts b/background/lib/prices.ts index 5af5d53c02..036d1ab24f 100644 --- a/background/lib/prices.ts +++ b/background/lib/prices.ts @@ -20,11 +20,13 @@ const COINGECKO_API_ROOT = "https://api.coingecko.com/api/v3" // @TODO Test Me export async function getPrices( assets: AnyAsset[], - vsCurrencies: FiatCurrency[] + vsCurrencies: FiatCurrency[], ): Promise { const queryableAssets = assets.filter( (asset): asset is AnyAsset & Required => - "metadata" in asset && !!asset.metadata && "coinGeckoID" in asset.metadata + "metadata" in asset && + !!asset.metadata && + "coinGeckoID" in asset.metadata, ) if (queryableAssets.length === 0) { @@ -54,7 +56,7 @@ export async function getPrices( logger.warn( "CoinGecko price response didn't validate, did the API change?", json, - isValidCoinGeckoPriceResponse.errors + isValidCoinGeckoPriceResponse.errors, ) return [] @@ -103,7 +105,7 @@ export async function getPrices( export async function getTokenPrices( tokenAddresses: string[], fiatCurrency: FiatCurrency, - network: EVMNetwork + network: EVMNetwork, ): Promise<{ [contractAddress: string]: UnitPricePoint }> { @@ -134,12 +136,12 @@ export async function getTokenPrices( [address: string]: { last_updated_at: number } & { [currencySymbol: string]: string } - } + }, ).forEach(([address, priceDetails]) => { // TODO parse this as a fixed decimal rather than a number. Will require // custom JSON deserialization const price: number = Number.parseFloat( - priceDetails[fiatSymbol.toLowerCase()] + priceDetails[fiatSymbol.toLowerCase()], ) if (!Number.isNaN(price)) { prices[address] = { @@ -153,7 +155,7 @@ export async function getTokenPrices( logger.warn( "Price for Ethereum token from CoinGecko cannot be parsed.", address, - priceDetails + priceDetails, ) } }) @@ -162,7 +164,7 @@ export async function getTokenPrices( "Error fetching price for tokens on network.", tokenAddresses, network, - err + err, ) } return prices @@ -173,7 +175,7 @@ export async function getTokenPrices( */ export function getPricePoint( asset: SmartContractFungibleAsset | FungibleAsset, - unitPricePoint: UnitPricePoint + unitPricePoint: UnitPricePoint, ): PricePoint { return { pair: [asset, USD], @@ -183,8 +185,8 @@ export function getPricePoint( Math.trunc( (Number(unitPricePoint.unitPrice.amount) / 10 ** (unitPricePoint.unitPrice.asset as FungibleAsset).decimals) * - 10 ** USD.decimals - ) + 10 ** USD.decimals, + ), ), ], time: unitPricePoint.time, diff --git a/background/lib/simple-hash.ts b/background/lib/simple-hash.ts index c8cee1a212..e822df4085 100644 --- a/background/lib/simple-hash.ts +++ b/background/lib/simple-hash.ts @@ -136,14 +136,14 @@ function getChainIDsNames(chainIDs: string[]) { (chainID) => CHAIN_ID_TO_NAME[ parseInt(chainID, 10) as keyof typeof CHAIN_ID_TO_NAME - ] ?? [] + ] ?? [], ) .join(",") } function simpleHashCollectionModelToCollection( original: SimpleHashCollectionModel, - owner: HexString + owner: HexString, ): NFTCollection { const { id, chain, floor_prices: collectionPrices } = original const floorPrice = collectionPrices @@ -173,7 +173,7 @@ function simpleHashCollectionModelToCollection( function simpleHashNFTModelToNFT( original: SimpleHashNFTModel, - owner: HexString + owner: HexString, ): NFT { const { nft_id: nftID, @@ -202,7 +202,7 @@ function simpleHashNFTModelToNFT( const chainID = SIMPLE_HASH_CHAIN_TO_ID[chain] const transferDate = owners.find(({ owner_address }) => - sameEVMAddress(owner_address, owner) + sameEVMAddress(owner_address, owner), )?.last_acquired_date const attributes = Array.isArray(metadata?.attributes) @@ -212,7 +212,7 @@ function simpleHashNFTModelToNFT( value, trait: trait_type, } - : [] + : [], ) : [] @@ -252,7 +252,7 @@ export async function getSimpleHashNFTs( address: string, collectionID: string, chainIDs: string[], - nextPageURL?: string + nextPageURL?: string, ): Promise { let requestURL: URL @@ -298,7 +298,7 @@ export async function getSimpleHashNFTs( */ export async function getSimpleHashCollections( address: string, - chainIDs: string[] + chainIDs: string[], ): Promise { const requestURL = new URL(`${SIMPLE_HASH_BASE_URL}/collections_by_wallets`) requestURL.searchParams.set("chains", getChainIDsNames(chainIDs)) @@ -315,7 +315,7 @@ export async function getSimpleHashCollections( return result.collections .filter((collection) => collection.id) .map((collection) => - simpleHashCollectionModelToCollection(collection, address) + simpleHashCollectionModelToCollection(collection, address), ) } catch (err) { logger.error("Error retrieving NFTs ", err) @@ -328,7 +328,7 @@ export async function getSimpleHashNFTsTransfers( addresses: string[], chainIDs: string[], fromTimestamp: number, - nextPageURL?: string + nextPageURL?: string, ): Promise { let requestURL: URL @@ -377,7 +377,7 @@ export async function getSimpleHashNFTsTransfers( addresses, chainIDs, fromTimestamp, - next + next, ) return [...transferDetails, ...nextPageTransferDetails] diff --git a/background/lib/tests/asset-similarity.unit.test.ts b/background/lib/tests/asset-similarity.unit.test.ts index ba5fc8d3d7..3c01cf4d0d 100644 --- a/background/lib/tests/asset-similarity.unit.test.ts +++ b/background/lib/tests/asset-similarity.unit.test.ts @@ -9,7 +9,7 @@ describe("Asset Similarity", () => { it("Should preserve coinType when merging assets", () => { const mergedAsset = mergeAssets( createSmartContractAsset(), - createNetworkBaseAsset() + createNetworkBaseAsset(), ) expect("coinType" in mergedAsset).toBe(true) diff --git a/background/lib/tests/daylight.unit.test.ts b/background/lib/tests/daylight.unit.test.ts index e5b44b71e3..96721a85c2 100644 --- a/background/lib/tests/daylight.unit.test.ts +++ b/background/lib/tests/daylight.unit.test.ts @@ -16,7 +16,7 @@ describe("Daylight", () => { await daylight.getDaylightAbilities( "0x208e94d5661a73360d9387d3ca169e5c130090cd", - 5 + 5, ) expect(spy).toHaveBeenCalledTimes(6) diff --git a/background/lib/tests/utils.unit.test.ts b/background/lib/tests/utils.unit.test.ts index 602d35b06d..0ce3f6d084 100644 --- a/background/lib/tests/utils.unit.test.ts +++ b/background/lib/tests/utils.unit.test.ts @@ -116,36 +116,36 @@ describe("Lib Utils", () => { "given integer should return integer", ({ value, decimalLength, maxDecimalLength, expected }) => { expect( - truncateDecimalAmount(value, decimalLength, maxDecimalLength) + truncateDecimalAmount(value, decimalLength, maxDecimalLength), ).toBe(expected) - } + }, ) it.each(noLeadingZeros)( "given number with no leading zeros in decimal part should truncate at desired length", ({ value, decimalLength, maxDecimalLength, expected }) => { expect( - truncateDecimalAmount(value, decimalLength, maxDecimalLength) + truncateDecimalAmount(value, decimalLength, maxDecimalLength), ).toBe(expected) - } + }, ) it.each(zeroWithLeadingZeros)( "given number <1 with leading zeros should increase precision", ({ value, decimalLength, maxDecimalLength, expected }) => { expect( - truncateDecimalAmount(value, decimalLength, maxDecimalLength) + truncateDecimalAmount(value, decimalLength, maxDecimalLength), ).toBe(expected) - } + }, ) it.each(nonZeroWithLeadingZeros)( "given number >=1 with leading zeros should should truncate at desired length", ({ value, decimalLength, maxDecimalLength, expected }) => { expect( - truncateDecimalAmount(value, decimalLength, maxDecimalLength) + truncateDecimalAmount(value, decimalLength, maxDecimalLength), ).toBe(expected) - } + }, ) }) }) diff --git a/background/lib/token-lists.ts b/background/lib/token-lists.ts index 77f3dd6516..78833c74d6 100644 --- a/background/lib/token-lists.ts +++ b/background/lib/token-lists.ts @@ -43,7 +43,7 @@ const cleanTokenListResponse = (json: any, url: string) => { } export async function fetchAndValidateTokenList( - url: string + url: string, ): Promise> { let ok = true const response = await fetchJson({ url, timeout: 10 * SECOND }).catch(() => { @@ -65,7 +65,7 @@ export async function fetchAndValidateTokenList( } export async function fetchAndValidateTokenLists( - urls: string[] + urls: string[], ): Promise { return (await Promise.allSettled(urls.map(fetchAndValidateTokenList))) .filter((l) => l.status === "fulfilled") @@ -74,7 +74,7 @@ export async function fetchAndValidateTokenLists( function tokenListToFungibleAssetsForNetwork( network: EVMNetwork, - { url: tokenListURL, tokenList }: TokenListAndReference + { url: tokenListURL, tokenList }: TokenListAndReference, ): SmartContractFungibleAsset[] { const networkChainID = Number(network.chainID) const tokenListCitation = { @@ -88,7 +88,7 @@ function tokenListToFungibleAssetsForNetwork( ({ chainId, symbol }) => chainId === networkChainID && // Filter out assets with the same symbol as the network base asset - symbol !== network.baseAsset.symbol + symbol !== network.baseAsset.symbol, ) .map((tokenMetadata) => ({ metadata: { @@ -118,7 +118,7 @@ export function mergeAssets( seenAssetsBySimilarityKey: { [similarityKey: string]: T[] }, - asset: T + asset: T, ) { const updatedSeenAssetsBySimilarityKey = { ...seenAssetsBySimilarityKey } @@ -132,7 +132,7 @@ export function mergeAssets( // For each key, determine where a close asset match exists. const matchingAssetIndex = findClosestAssetIndex( asset, - updatedSeenAssetsBySimilarityKey[referenceKey] + updatedSeenAssetsBySimilarityKey[referenceKey], ) if (typeof matchingAssetIndex !== "undefined") { @@ -147,7 +147,7 @@ export function mergeAssets( ...matchingAsset.metadata, ...asset.metadata, tokenLists: (matchingAsset.metadata?.tokenLists || [])?.concat( - asset.metadata?.tokenLists ?? [] + asset.metadata?.tokenLists ?? [], ), }, } @@ -165,7 +165,7 @@ export function mergeAssets( return mergedAssets.sort( (a, b) => (a.metadata?.tokenLists?.length || 0) - - (b.metadata?.tokenLists?.length || 0) + (b.metadata?.tokenLists?.length || 0), ) } @@ -175,7 +175,7 @@ export function mergeAssets( // This is not 100% accurate, but given that we are dealing with token lists it seems to be // a safe bet. The chances are slim that 1 asset is added and 1 is removed in 1 minute. export const memoizedMergeAssets = memoize(mergeAssets, (...assetLists) => - assetLists.reduce((acc, curr) => acc + curr.length, 0) + assetLists.reduce((acc, curr) => acc + curr.length, 0), ) /* @@ -185,10 +185,10 @@ export const memoizedMergeAssets = memoize(mergeAssets, (...assetLists) => */ export function networkAssetsFromLists( network: EVMNetwork, - tokenLists: TokenListAndReference[] + tokenLists: TokenListAndReference[], ): SmartContractFungibleAsset[] { const fungibleAssets = tokenLists.map((tokenListAndReference) => - tokenListToFungibleAssetsForNetwork(network, tokenListAndReference) + tokenListToFungibleAssetsForNetwork(network, tokenListAndReference), ) return memoizedMergeAssets(...fungibleAssets) diff --git a/background/lib/utils/index.ts b/background/lib/utils/index.ts index edbccb0c6b..b0615c27b3 100644 --- a/background/lib/utils/index.ts +++ b/background/lib/utils/index.ts @@ -7,7 +7,7 @@ import { AddressOnNetwork } from "../../accounts" export function isValidChecksumAddress( address: string, - chainId?: number + chainId?: number, ): boolean { return toChecksumAddress(address, chainId) === address } @@ -26,7 +26,7 @@ export function isMixedCaseAddress(address: string): boolean { } export function normalizeEVMAddress( - address: string | Buffer + address: string | Buffer, ): NormalizedEVMAddress { return normalizeHexAddress(address) as NormalizedEVMAddress } @@ -54,7 +54,7 @@ export function normalizeAddressOnNetwork({ export function truncateDecimalAmount( value: number | string, decimalLength: number, - maxDecimalLength = decimalLength + maxDecimalLength = decimalLength, ): string { const valueString = value.toString() @@ -75,7 +75,7 @@ export function truncateDecimalAmount( // significant decimal digit, up to maxDecimalLength. Math.min( Math.max(decimalLength, firstSignificantDecimalDigit), - maxDecimalLength + maxDecimalLength, ) // If the truncation point includes no significant decimals, don't include @@ -91,7 +91,7 @@ export function truncateDecimalAmount( export function sameEVMAddress( address1: string | Buffer | undefined | null, - address2: string | Buffer | undefined | null + address2: string | Buffer | undefined | null, ): boolean { if ( typeof address1 === "undefined" || @@ -147,7 +147,7 @@ export function decodeJSON(input: string): unknown { return JSON.parse(input, (_, value) => value !== null && typeof value === "object" && "B_I_G_I_N_T" in value ? BigInt(value.B_I_G_I_N_T) - : value + : value, ) } @@ -178,7 +178,7 @@ export function truncateAddress(address: string): string { export const getNumericStringValueFromBigNumber = ( value: BigNumber, - tokenDecimals: number + tokenDecimals: number, ): string => Number(value.toBigInt() / 10n ** BigInt(tokenDecimals)).toString() export const numberTo32BytesHex = (value: string, decimals: number): string => { diff --git a/background/lib/utils/type-guards.ts b/background/lib/utils/type-guards.ts index 9729618301..9318f96056 100644 --- a/background/lib/utils/type-guards.ts +++ b/background/lib/utils/type-guards.ts @@ -6,7 +6,7 @@ * `Promise.allSettled` result list. */ export function isFulfilledPromise( - settledResult: PromiseSettledResult + settledResult: PromiseSettledResult, ): settledResult is PromiseFulfilledResult { return settledResult.status === "fulfilled" } diff --git a/background/lib/wrappedAsset.ts b/background/lib/wrappedAsset.ts index 813569b6f3..03d4cbd19e 100644 --- a/background/lib/wrappedAsset.ts +++ b/background/lib/wrappedAsset.ts @@ -17,16 +17,16 @@ export const WRAPPED_ASSET_FUNCTIONS = { const WRAPPED_ASSET_EVENTS = { Deposit: EventFragment.from("Deposit(address indexed dst, uint amount)"), Withdrawal: EventFragment.from( - "Withdrawal(address indexed src, uint amount)" + "Withdrawal(address indexed src, uint amount)", ), } export const WRAPPED_ASSET_ABI = Object.values( - WRAPPED_ASSET_FUNCTIONS + WRAPPED_ASSET_FUNCTIONS, ).concat(Object.values(WRAPPED_ASSET_EVENTS)) export const WRAPPED_ASSET_INTERFACE = new ethers.utils.Interface( - WRAPPED_ASSET_ABI + WRAPPED_ASSET_ABI, ) export type WrappedAssetDepositLog = { @@ -52,7 +52,7 @@ export type WrappedAssetDepositLog = { * `Deposit` or `Withdrawal` events, simply that they can be parsed as such. */ export function parseLogsForWrappedDepositsAndWithdrawals( - logs: EVMLog[] + logs: EVMLog[], ): WrappedAssetDepositLog[] { return logs .map(({ contractAddress, data, topics }) => { @@ -60,7 +60,7 @@ export function parseLogsForWrappedDepositsAndWithdrawals( const decodedDeposit = WRAPPED_ASSET_INTERFACE.decodeEventLog( WRAPPED_ASSET_EVENTS.Deposit, data, - topics + topics, ) if ( @@ -81,7 +81,7 @@ export function parseLogsForWrappedDepositsAndWithdrawals( const decodedWithdrawal = WRAPPED_ASSET_INTERFACE.decodeEventLog( WRAPPED_ASSET_EVENTS.Withdrawal, data, - topics + topics, ) if ( @@ -101,6 +101,6 @@ export function parseLogsForWrappedDepositsAndWithdrawals( return undefined }) .filter( - (info): info is WrappedAssetDepositLog => typeof info !== "undefined" + (info): info is WrappedAssetDepositLog => typeof info !== "undefined", ) } diff --git a/background/main.ts b/background/main.ts index b7b3a8209e..5328d7924f 100644 --- a/background/main.ts +++ b/background/main.ts @@ -244,7 +244,7 @@ const reduxCache: Middleware = (store) => (next) => (action) => { // Declared out here so ReduxStoreType can be used in Main.store type // declaration. -const initializeStore = (main: Main, preloadedState = {}) => +const initializeStore = (main: Main, preloadedState: object) => configureStore({ preloadedState, reducer: rootReducer, @@ -308,27 +308,27 @@ export default class Main extends BaseService { const internalSignerService = InternalSignerService.create( preferenceService, - analyticsService + analyticsService, ) const chainService = ChainService.create( preferenceService, - internalSignerService + internalSignerService, ) const indexingService = IndexingService.create( preferenceService, - chainService + chainService, ) const nameService = NameService.create(chainService, preferenceService) const enrichmentService = EnrichmentService.create( chainService, indexingService, - nameService + nameService, ) const internalEthereumProviderService = InternalEthereumProviderService.create(chainService, preferenceService) const providerBridgeService = ProviderBridgeService.create( internalEthereumProviderService, - preferenceService + preferenceService, ) const doggoService = DoggoService.create(chainService, indexingService) @@ -339,14 +339,14 @@ export default class Main extends BaseService { const signingService = SigningService.create( internalSignerService, ledgerService, - chainService + chainService, ) const nftsService = NFTsService.create(chainService) const abilitiesService = AbilitiesService.create( chainService, - ledgerService + ledgerService, ) const walletConnectService = isEnabled(FeatureFlags.SUPPORT_WALLET_CONNECT) @@ -354,7 +354,7 @@ export default class Main extends BaseService { providerBridgeService, internalEthereumProviderService, preferenceService, - chainService + chainService, ) : getNoopService() @@ -375,7 +375,7 @@ export default class Main extends BaseService { // problem... savedReduxState = migrateReduxState( restoredState as Record, - version || undefined + version || undefined, ) } else { throw new Error(`Unexpected JSON persisted for state: ${state}`) @@ -403,7 +403,7 @@ export default class Main extends BaseService { await analyticsService, await nftsService, await walletConnectService, - await abilitiesService + await abilitiesService, ) } @@ -496,7 +496,7 @@ export default class Main extends BaseService { /** * A promise to the Abilities service which takes care of fetching and storing abilities */ - private abilitiesService: AbilitiesService + private abilitiesService: AbilitiesService, ) { super({ initialLoadWaitExpired: { @@ -529,7 +529,7 @@ export default class Main extends BaseService { releaseLock() }, 30, - { maxWait: 30, trailing: true } + { maxWait: 30, trailing: true }, ) wrapStore(this.store, { @@ -552,7 +552,7 @@ export default class Main extends BaseService { }, dispatchResponder: async ( dispatchResult: Promise | unknown, - send: (param: { error: string | null; value: unknown | null }) => void + send: (param: { error: string | null; value: unknown | null }) => void, ) => { try { // if dispatch is a thunk, wait for the result @@ -570,7 +570,7 @@ export default class Main extends BaseService { } catch (error) { logger.error( "Error awaiting and dispatching redux store result: ", - error + error, ) // Store could still have been updated if there was an error @@ -658,7 +658,7 @@ export default class Main extends BaseService { // FIXME Should no longer be necessary once transaction queueing enters the // FIXME picture. this.store.dispatch( - clearTransactionState(TransactionConstructionStatus.Idle) + clearTransactionState(TransactionConstructionStatus.Idle), ) this.store.dispatch(clearApprovalInProgress()) @@ -686,7 +686,7 @@ export default class Main extends BaseService { async removeAccount( address: HexString, signer: AccountSigner, - lastAddressInAccount: boolean + lastAddressInAccount: boolean, ): Promise { this.store.dispatch(deleteAccount(address)) @@ -724,7 +724,7 @@ export default class Main extends BaseService { accounts: Array<{ path: string address: string - }> + }>, ): Promise { const trackedNetworks = await this.chainService.getTrackedNetworks() await Promise.all( @@ -741,24 +741,24 @@ export default class Main extends BaseService { this.abilitiesService.getNewAccountAbilities(address) this.store.dispatch(loadAccount(addressNetwork)) - }) + }), ) - }) + }), ) this.store.dispatch( setNewSelectedAccount({ address: accounts[0].address, network: await this.internalEthereumProviderService.getCurrentOrDefaultNetworkForOrigin( - TAHO_INTERNAL_ORIGIN + TAHO_INTERNAL_ORIGIN, ), - }) + }), ) } async deriveLedgerAddress( deviceID: string, - derivationPath: string + derivationPath: string, ): Promise { return this.signingService.deriveAddress({ type: "ledger", @@ -772,11 +772,10 @@ export default class Main extends BaseService { } async getAccountEthBalanceUncached( - addressNetwork: AddressOnNetwork + addressNetwork: AddressOnNetwork, ): Promise { - const accountBalance = await this.chainService.getLatestBaseAccountBalance( - addressNetwork - ) + const accountBalance = + await this.chainService.getLatestBaseAccountBalance(addressNetwork) return accountBalance.assetAmount.amount } @@ -791,13 +790,13 @@ export default class Main extends BaseService { async enrichActivities(addressNetwork: AddressOnNetwork): Promise { const accountsToTrack = await this.chainService.getAccountsToTrack() const activitiesToEnrich = selectActivitesHashesForEnrichment( - this.store.getState() + this.store.getState(), ) activitiesToEnrich.forEach(async (txHash) => { const transaction = await this.chainService.getTransaction( addressNetwork.network, - txHash + txHash, ) const enrichedTransaction = await this.enrichmentService.enrichTransaction(transaction, 2) @@ -807,9 +806,9 @@ export default class Main extends BaseService { transaction: enrichedTransaction, forAccounts: getRelevantTransactionAddresses( enrichedTransaction, - accountsToTrack + accountsToTrack, ), - }) + }), ) }) } @@ -826,7 +825,7 @@ export default class Main extends BaseService { async (payloadForAccount) => { this.store.dispatch(initializeActivitiesForAccount(payloadForAccount)) await this.enrichActivitiesForSelectedAccount() - } + }, ) // Set up initial state. @@ -846,7 +845,7 @@ export default class Main extends BaseService { (accountWithBalance) => { // The first account balance update will transition the account to loading. this.store.dispatch(updateAccountBalance(accountWithBalance)) - } + }, ) this.chainService.emitter.on("supportedNetworks", (supportedNetworks) => { @@ -859,10 +858,10 @@ export default class Main extends BaseService { this.chainService.emitter.on("transactionSend", async () => { this.store.dispatch( - setSnackbarMessage("Transaction signed, broadcasting...") + setSnackbarMessage("Transaction signed, broadcasting..."), ) this.store.dispatch( - clearTransactionState(TransactionConstructionStatus.Idle) + clearTransactionState(TransactionConstructionStatus.Idle), ) await this.autoToggleFlashbotsProvider() }) @@ -873,7 +872,7 @@ export default class Main extends BaseService { this.chainService.emitter.on("transactionSendFailure", async () => { this.store.dispatch( - setSnackbarMessage("Transaction failed to broadcast.") + setSnackbarMessage("Transaction failed to broadcast."), ) await this.autoToggleFlashbotsProvider() }) @@ -891,7 +890,7 @@ export default class Main extends BaseService { await this.chainService.populatePartialTransactionRequest( network, { ...transaction }, - { maxFeePerGas, maxPriorityFeePerGas } + { maxFeePerGas, maxPriorityFeePerGas }, ) // Create promise to pass into Promise.race @@ -900,7 +899,7 @@ export default class Main extends BaseService { await this.enrichmentService.enrichTransactionSignature( network, populatedRequest, - 2 /* TODO desiredDecimals should be configurable */ + 2 /* TODO desiredDecimals should be configurable */, ) return annotation } @@ -920,24 +919,24 @@ export default class Main extends BaseService { transactionRequest({ transactionRequest: populatedRequest, transactionLikelyFails: false, - }) + }), ) } else { this.store.dispatch( transactionRequest({ transactionRequest: populatedRequest, transactionLikelyFails: true, - }) + }), ) } - } + }, ) transactionConstructionSliceEmitter.on( "broadcastSignedTransaction", async (transaction: SignedTransaction) => { this.chainService.broadcastSignedTransaction(transaction) - } + }, ) transactionConstructionSliceEmitter.on( @@ -951,15 +950,15 @@ export default class Main extends BaseService { AnalyticsEvent.TRANSACTION_SIGNED, { chainId: request.chainID, - } + }, ) } catch (exception) { logger.error("Error signing transaction", exception) this.store.dispatch( - clearTransactionState(TransactionConstructionStatus.Idle) + clearTransactionState(TransactionConstructionStatus.Idle), ) } - } + }, ) signingSliceEmitter.on( "requestSignTypedData", @@ -975,7 +974,7 @@ export default class Main extends BaseService { logger.error("Error signing typed data", typedData, "error: ", err) this.store.dispatch(clearSigningState) } - } + }, ) signingSliceEmitter.on( "requestSignData", @@ -983,10 +982,10 @@ export default class Main extends BaseService { const signedData = await this.signingService.signData( account, rawSigningData, - accountSigner + accountSigner, ) this.store.dispatch(signedDataAction(signedData)) - } + }, ) this.chainService.emitter.on( @@ -1001,20 +1000,23 @@ export default class Main extends BaseService { const estimatedRollupFee = await this.chainService.estimateL1RollupFeeForOptimism( currentTransactionRequest.network, - currentTransactionRequest + currentTransactionRequest, ) const estimatedRollupGwei = await this.chainService.estimateL1RollupGasPrice(network) this.store.dispatch( - updateRollupEstimates({ estimatedRollupFee, estimatedRollupGwei }) + updateRollupEstimates({ + estimatedRollupFee, + estimatedRollupGwei, + }), ) } } this.store.dispatch( - estimatedFeesPerGas({ estimatedFeesPerGas: blockPrices, network }) + estimatedFeesPerGas({ estimatedFeesPerGas: blockPrices, network }), ) - } + }, ) // Report on transactions for basic activity. Fancier stuff is handled via @@ -1039,15 +1041,15 @@ export default class Main extends BaseService { }, }) => { this.store.dispatch(updateAccountName({ ...addressOnNetwork, name })) - } + }, ) this.nameService.emitter.on( "resolvedAvatar", async ({ from: { addressOnNetwork }, resolved: { avatar } }) => { this.store.dispatch( - updateENSAvatar({ ...addressOnNetwork, avatar: avatar.toString() }) + updateENSAvatar({ ...addressOnNetwork, avatar: avatar.toString() }), ) - } + }, ) } @@ -1058,7 +1060,7 @@ export default class Main extends BaseService { const assetsToTrack = await this.indexingService.getAssetsToTrack() const trackedAccounts = await this.chainService.getAccountsToTrack() const allTrackedAddresses = new Set( - trackedAccounts.map((account) => account.address) + trackedAccounts.map((account) => account.address), ) if (!allTrackedAddresses.has(addressOnNetwork.address)) { @@ -1074,12 +1076,15 @@ export default class Main extends BaseService { // e.g. Optimism, Polygon might have been retrieved through alchemy as // token balances but they should not be handled here as they would // not be correctly treated as base assets - !isBaseAssetForNetwork(balance.assetAmount.asset, balance.network) + !isBaseAssetForNetwork( + balance.assetAmount.asset, + balance.network, + ), ) .forEach((balance) => { // TODO support multi-network assets const balanceHasAnAlreadyTrackedAsset = assetsToTrack.some( - (tracked) => isSameAsset(tracked, balance.assetAmount.asset) + (tracked) => isSameAsset(tracked, balance.assetAmount.asset), ) if ( @@ -1094,9 +1099,9 @@ export default class Main extends BaseService { updateAccountBalance({ balances: filteredBalancesToDispatch, addressOnNetwork, - }) + }), ) - } + }, ) this.indexingService.emitter.on("assets", async (assets) => { @@ -1111,7 +1116,7 @@ export default class Main extends BaseService { this.store.dispatch( refreshAsset({ asset, - }) + }), ) }) @@ -1125,20 +1130,20 @@ export default class Main extends BaseService { "enrichedEVMTransaction", (transactionData) => { this.indexingService.notifyEnrichedTransaction( - transactionData.transaction + transactionData.transaction, ) this.store.dispatch(addActivity(transactionData)) - } + }, ) } async connectSigningService(): Promise { this.internalSignerService.emitter.on("address", (address) => - this.signingService.addTrackedAddress(address, "keyring") + this.signingService.addTrackedAddress(address, "keyring"), ) this.ledgerService.emitter.on("address", ({ address }) => - this.signingService.addTrackedAddress(address, "ledger") + this.signingService.addTrackedAddress(address, "ledger"), ) } @@ -1152,7 +1157,7 @@ export default class Main extends BaseService { status: "available", isArbitraryDataSigningEnabled: metadata.isArbitraryDataSigningEnabled, displayDetails: metadata.displayDetails, - }) + }), ) }) @@ -1163,7 +1168,7 @@ export default class Main extends BaseService { status: "disconnected", isArbitraryDataSigningEnabled: false /* dummy */, displayDetails: undefined, - }) + }), ) }) @@ -1185,7 +1190,7 @@ export default class Main extends BaseService { loadAccount({ address, network, - }) + }), ) this.chainService.addAccountToTrack({ @@ -1226,7 +1231,7 @@ export default class Main extends BaseService { mnemonic: string[] } = await this.internalSignerService.generateNewKeyring( SignerInternalTypes.mnemonicBIP39S256, - path + path, ) this.store.dispatch(setKeyringToVerify(generated)) @@ -1240,7 +1245,7 @@ export default class Main extends BaseService { await this.signingService.prepareForSigningRequest() this.store.dispatch( - clearTransactionState(TransactionConstructionStatus.Pending) + clearTransactionState(TransactionConstructionStatus.Pending), ) this.store.dispatch(updateTransactionData(payload)) @@ -1253,7 +1258,7 @@ export default class Main extends BaseService { "signatureRejected", // Mutual dependency to rejectAndClear. // eslint-disable-next-line @typescript-eslint/no-use-before-define - rejectAndClear + rejectAndClear, ) } @@ -1279,9 +1284,9 @@ export default class Main extends BaseService { transactionConstructionSliceEmitter.on( "signatureRejected", - rejectAndClear + rejectAndClear, ) - } + }, ) this.internalEthereumProviderService.emitter.on( "signTypedDataRequest", @@ -1307,14 +1312,14 @@ export default class Main extends BaseService { "signingDataResponse", // Mutual dependency to handleAndClear. // eslint-disable-next-line @typescript-eslint/no-use-before-define - handleAndClear + handleAndClear, ) signingSliceEmitter.off( "signatureRejected", // Mutual dependency to rejectAndClear. // eslint-disable-next-line @typescript-eslint/no-use-before-define - rejectAndClear + rejectAndClear, ) } @@ -1338,7 +1343,7 @@ export default class Main extends BaseService { this.signingService.emitter.on("signingDataResponse", handleAndClear) signingSliceEmitter.on("signatureRejected", rejectAndClear) - } + }, ) this.internalEthereumProviderService.emitter.on( "signDataRequest", @@ -1354,7 +1359,7 @@ export default class Main extends BaseService { await this.signingService.prepareForSigningRequest() this.chainService.pollBlockPricesForNetwork( - payload.account.network.chainID + payload.account.network.chainID, ) this.store.dispatch(signDataRequest(payload)) @@ -1363,14 +1368,14 @@ export default class Main extends BaseService { "personalSigningResponse", // Mutual dependency to handleAndClear. // eslint-disable-next-line @typescript-eslint/no-use-before-define - handleAndClear + handleAndClear, ) signingSliceEmitter.off( "signatureRejected", // Mutual dependency to rejectAndClear. // eslint-disable-next-line @typescript-eslint/no-use-before-define - rejectAndClear + rejectAndClear, ) } @@ -1393,24 +1398,24 @@ export default class Main extends BaseService { this.signingService.emitter.on( "personalSigningResponse", - handleAndClear + handleAndClear, ) signingSliceEmitter.on("signatureRejected", rejectAndClear) - } + }, ) this.internalEthereumProviderService.emitter.on( "selectedNetwork", (network) => { this.store.dispatch(setSelectedNetwork(network)) - } + }, ) uiSliceEmitter.on("newSelectedNetwork", (network) => { this.internalEthereumProviderService.routeSafeRPCRequest( "wallet_switchEthereumChain", [{ chainId: network.chainID }], - TAHO_INTERNAL_ORIGIN + TAHO_INTERNAL_ORIGIN, ) this.chainService.pollBlockPricesForNetwork(network.chainID) this.store.dispatch(clearCustomGas()) @@ -1422,7 +1427,7 @@ export default class Main extends BaseService { const { address } = this.store.getState().ui.selectedAccount const asset = await this.indexingService.addTokenToTrackByContract( network, - contractAddress + contractAddress, ) if (asset) { await this.indexingService.retrieveTokenBalances( @@ -1430,30 +1435,30 @@ export default class Main extends BaseService { address, network, }, - [asset] + [asset], ) } - } + }, ) } async connectProviderBridgeService(): Promise { uiSliceEmitter.on("addCustomNetworkResponse", ([requestId, success]) => - this.providerBridgeService.handleAddNetworkRequest(requestId, success) + this.providerBridgeService.handleAddNetworkRequest(requestId, success), ) this.providerBridgeService.emitter.on( "requestPermission", (permissionRequest: PermissionRequest) => { this.store.dispatch(requestPermission(permissionRequest)) - } + }, ) this.providerBridgeService.emitter.on( "initializeAllowedPages", async (allowedPages: PermissionMap) => { this.store.dispatch(initializePermissions(allowedPages)) - } + }, ) this.providerBridgeService.emitter.on( @@ -1483,10 +1488,10 @@ export default class Main extends BaseService { setReferrer({ address, ensName, - }) + }), ) } - } + }, ) providerBridgeSliceEmitter.on("grantPermission", async (permission) => { @@ -1500,7 +1505,7 @@ export default class Main extends BaseService { ...permission, chainID: network.chainID, }) - }) + }), ) }) @@ -1513,9 +1518,9 @@ export default class Main extends BaseService { ...permission, chainID: network.chainID, }) - }) + }), ) - } + }, ) } @@ -1524,7 +1529,7 @@ export default class Main extends BaseService { "initializeDefaultWallet", async (isDefaultWallet: boolean) => { await this.store.dispatch(setDefaultWallet(isDefaultWallet)) - } + }, ) this.preferenceService.emitter.on( @@ -1545,14 +1550,14 @@ export default class Main extends BaseService { await this.preferenceService.setSelectedAccount(addressNetwork) } } - } + }, ) this.preferenceService.emitter.on( "updatedSignerSettings", (accountSignerSettings) => { this.store.dispatch(setAccountsSignerSettings(accountSignerSettings)) - } + }, ) this.preferenceService.emitter.on( @@ -1560,21 +1565,21 @@ export default class Main extends BaseService { async (newTimerValue) => { await this.internalSignerService.updateAutoLockInterval() this.store.dispatch(setAutoLockInterval(newTimerValue)) - } + }, ) this.preferenceService.emitter.on( "initializeShownDismissableItems", async (dismissableItems) => { this.store.dispatch(setShownDismissableItems(dismissableItems)) - } + }, ) this.preferenceService.emitter.on( "dismissableItemMarkedAsShown", async (dismissableItem) => { this.store.dispatch(dismissableItemMarkedAsShown(dismissableItem)) - } + }, ) uiSliceEmitter.on("newSelectedAccount", async (addressNetwork) => { @@ -1588,13 +1593,12 @@ export default class Main extends BaseService { await this.chainService.markAccountActivity(addressNetwork) - const referrerStats = await this.doggoService.getReferrerStats( - addressNetwork - ) + const referrerStats = + await this.doggoService.getReferrerStats(addressNetwork) this.store.dispatch(setReferrerStats(referrerStats)) this.providerBridgeService.notifyContentScriptsAboutAddressChange( - addressNetwork.address + addressNetwork.address, ) }) @@ -1606,21 +1610,21 @@ export default class Main extends BaseService { "newDefaultWalletValue", async (newDefaultWalletValue) => { await this.preferenceService.setDefaultWalletValue( - newDefaultWalletValue + newDefaultWalletValue, ) // FIXME Both of these should be done as observations of the preference // FIXME service event rather than being managed by `main`. this.providerBridgeService.notifyContentScriptAboutConfigChange( - newDefaultWalletValue + newDefaultWalletValue, ) this.analyticsService.sendAnalyticsEvent( AnalyticsEvent.DEFAULT_WALLET_TOGGLED, { setToDefault: newDefaultWalletValue, - } + }, ) - } + }, ) uiSliceEmitter.on("refreshBackgroundPage", async () => { @@ -1633,7 +1637,7 @@ export default class Main extends BaseService { "newEligibility", async (eligibility: Eligible) => { await this.store.dispatch(setEligibility(eligibility)) - } + }, ) this.doggoService.emitter.on( @@ -1641,7 +1645,7 @@ export default class Main extends BaseService { async ( referral: { referrer: AddressOnNetwork - } & ReferrerStats + } & ReferrerStats, ) => { const { referrer, referredUsers, bonusTotal } = referral const { selectedAccount } = this.store.getState().ui @@ -1654,10 +1658,10 @@ export default class Main extends BaseService { setReferrerStats({ referredUsers, bonusTotal, - }) + }), ) } - } + }, ) } @@ -1671,13 +1675,13 @@ export default class Main extends BaseService { "initializeNFTs", (collections: NFTCollection[]) => { this.store.dispatch(initializeNFTs(collections)) - } + }, ) this.nftsService.emitter.on( "updateCollections", (collections: NFTCollection[]) => { this.store.dispatch(updateNFTsCollections(collections)) - } + }, ) this.nftsService.emitter.on("updateNFTs", async (payload) => { await this.store.dispatch(updateNFTs(payload)) @@ -1689,16 +1693,16 @@ export default class Main extends BaseService { this.store.dispatch(updateIsReloading(payload)) }) nftsSliceEmitter.on("fetchNFTs", ({ collectionID, account }) => - this.nftsService.fetchNFTsFromCollection(collectionID, account) + this.nftsService.fetchNFTsFromCollection(collectionID, account), ) nftsSliceEmitter.on("refetchNFTs", ({ collectionID, account }) => - this.nftsService.refreshNFTsFromCollection(collectionID, account) + this.nftsService.refreshNFTsFromCollection(collectionID, account), ) nftsSliceEmitter.on("fetchMoreNFTs", ({ collectionID, account }) => - this.nftsService.fetchNFTsFromNextPage(collectionID, account) + this.nftsService.fetchNFTsFromNextPage(collectionID, account), ) nftsSliceEmitter.on("refetchCollections", () => - this.nftsService.refreshCollections() + this.nftsService.refreshCollections(), ) } @@ -1715,7 +1719,7 @@ export default class Main extends BaseService { "updatedAbilities", ({ address, abilities }) => { this.store.dispatch(setAbilitiesForAddress({ address, abilities })) - } + }, ) this.abilitiesService.emitter.on("deleteAbilities", (address) => { this.store.dispatch(deleteAbilitiesForAccount(address)) @@ -1751,11 +1755,11 @@ export default class Main extends BaseService { const addressNetwork = this.store.getState().ui.selectedAccount const transaction = await this.chainService.getTransaction( addressNetwork.network, - txHash + txHash, ) const enrichedTransaction = await this.enrichmentService.enrichTransaction( transaction, - 2 + 2, ) return getActivityDetails(enrichedTransaction) @@ -1774,7 +1778,7 @@ export default class Main extends BaseService { name: network.name, description: "This event is fired when a chain is subscribed to from the wallet for the first time.", - } + }, ) }) @@ -1789,7 +1793,7 @@ export default class Main extends BaseService { Note: this does not track recovery phrase(ish) import! But when an address is used on a network for the first time (read-only or recovery phrase/ledger/keyring/private key). `, - } + }, ) }) @@ -1802,7 +1806,7 @@ export default class Main extends BaseService { `, chainInfo: chainInfo.chainName, chainId: chainInfo.chainId, - } + }, ) }) @@ -1814,26 +1818,26 @@ export default class Main extends BaseService { toggleCollectAnalytics( // we are using only this field on the UI atm // it's expected that more detailed analytics settings will come - analyticsPreferences.isEnabled - ) + analyticsPreferences.isEnabled, + ), ) this.analyticsService.sendAnalyticsEvent( AnalyticsEvent.ANALYTICS_TOGGLED, { analyticsEnabled: analyticsPreferences.isEnabled, - } + }, ) - } + }, ) uiSliceEmitter.on( "updateAnalyticsPreferences", async (analyticsPreferences: Partial) => { await this.preferenceService.updateAnalyticsPreferences( - analyticsPreferences + analyticsPreferences, ) - } + }, ) uiSliceEmitter.on("deleteAnalyticsData", () => { @@ -1855,7 +1859,7 @@ export default class Main extends BaseService { async updateAssetMetadata( asset: SmartContractFungibleAsset, - metadata: AnyAssetMetadata + metadata: AnyAssetMetadata, ): Promise { await this.indexingService.updateAssetMetadata(asset, metadata) } @@ -1870,7 +1874,7 @@ export default class Main extends BaseService { async updateSignerTitle( signer: AccountSignerWithId, - title: string + title: string, ): Promise { return this.preferenceService.updateAccountSignerTitle(signer, title) } @@ -1880,7 +1884,7 @@ export default class Main extends BaseService { } async resolveNameOnNetwork( - nameOnNetwork: NameOnNetwork + nameOnNetwork: NameOnNetwork, ): Promise { try { return (await this.nameService.lookUpEthereumAddress(nameOnNetwork)) @@ -1897,14 +1901,14 @@ export default class Main extends BaseService { async markAbilityAsCompleted( address: NormalizedEVMAddress, - abilityId: string + abilityId: string, ): Promise { return this.abilitiesService.markAbilityAsCompleted(address, abilityId) } async markAbilityAsRemoved( address: NormalizedEVMAddress, - abilityId: string + abilityId: string, ): Promise { return this.abilitiesService.markAbilityAsRemoved(address, abilityId) } @@ -1913,20 +1917,20 @@ export default class Main extends BaseService { address: NormalizedEVMAddress, abilitySlug: string, abilityId: string, - reason: string + reason: string, ): Promise { this.abilitiesService.reportAndRemoveAbility( address, abilitySlug, abilityId, - reason + reason, ) } async removeEVMNetwork(chainID: string): Promise { // Per origin chain id settings await this.internalEthereumProviderService.removePrefererencesForChain( - chainID + chainID, ) // Connected dApps await this.providerBridgeService.revokePermissionsForChain(chainID) @@ -1939,7 +1943,7 @@ export default class Main extends BaseService { await this.chainService.addCustomProvider( ETHEREUM.chainID, FLASHBOTS_RPC_URL, - flashbotsProvider + flashbotsProvider, ) } else { await this.chainService.removeCustomProvider(ETHEREUM.chainID) @@ -1953,7 +1957,7 @@ export default class Main extends BaseService { async queryCustomTokenDetails( contractAddress: NormalizedEVMAddress, - addressOnNetwork: AddressOnNetwork + addressOnNetwork: AddressOnNetwork, ): Promise<{ asset: SmartContractFungibleAsset amount: bigint @@ -1968,13 +1972,13 @@ export default class Main extends BaseService { .find( (asset): asset is SmartContractFungibleAsset => isSmartContractFungibleAsset(asset) && - sameEVMAddress(contractAddress, asset.contractAddress) + sameEVMAddress(contractAddress, asset.contractAddress), ) const assetData = await this.chainService.queryAccountTokenDetails( contractAddress, addressOnNetwork, - cachedAsset + cachedAsset, ) const priceData = await getTokenPrices([contractAddress], USD, network) @@ -1983,7 +1987,7 @@ export default class Main extends BaseService { contractAddress in priceData ? convertAssetAmountViaPricePoint( assetData, - getPricePoint(assetData.asset, priceData[contractAddress]) + getPricePoint(assetData.asset, priceData[contractAddress]), ) : undefined @@ -1994,7 +1998,7 @@ export default class Main extends BaseService { return { ...assetData, balance: Number.parseFloat( - utils.formatUnits(assetData.amount, assetData.asset.decimals) + utils.formatUnits(assetData.amount, assetData.asset.decimals), ), mainCurrencyAmount, exists: !!cachedAsset, diff --git a/background/networks.ts b/background/networks.ts index f728e70a79..322ab8a09a 100644 --- a/background/networks.ts +++ b/background/networks.ts @@ -175,7 +175,7 @@ export type LegacyEVMTransactionRequest = Pick< * 100 - EIP-2718 on Arbitrum */ export const KNOWN_TX_TYPES = [0, 1, 2, 100] as const -export type KnownTxTypes = typeof KNOWN_TX_TYPES[number] +export type KnownTxTypes = (typeof KNOWN_TX_TYPES)[number] export function isKnownTxType(arg: unknown): arg is KnownTxTypes { return ( arg !== undefined && @@ -362,7 +362,7 @@ export type BlockEstimate = { */ export function sameNetwork( network1: AnyNetwork, - network2: AnyNetwork + network2: AnyNetwork, ): boolean { return ( network1.family === network2.family && network1.chainID === network2.chainID @@ -389,7 +389,7 @@ export const isEIP1559TransactionRequest = ( transactionRequest: | AnyEVMTransaction | EthersTransactionRequest - | Partial + | Partial, ): transactionRequest is EIP1559TransactionRequest => "maxFeePerGas" in transactionRequest && transactionRequest.maxFeePerGas !== null && @@ -397,7 +397,7 @@ export const isEIP1559TransactionRequest = ( transactionRequest.maxPriorityFeePerGas !== null export const isEIP1559SignedTransaction = ( - signedTransaction: SignedTransaction + signedTransaction: SignedTransaction, ): signedTransaction is SignedEIP1559Transaction => "maxFeePerGas" in signedTransaction && "maxPriorityFeePerGas" in signedTransaction && @@ -405,18 +405,18 @@ export const isEIP1559SignedTransaction = ( signedTransaction.maxPriorityFeePerGas !== null export const isEIP1559EnrichedTransactionSignatureRequest = ( - transactionSignatureRequest: EnrichedEVMTransactionSignatureRequest + transactionSignatureRequest: EnrichedEVMTransactionSignatureRequest, ): transactionSignatureRequest is EnrichedEIP1559TransactionSignatureRequest => "maxFeePerGas" in transactionSignatureRequest && "maxPriorityFeePerGas" in transactionSignatureRequest export const isEIP1559EnrichedTransactionRequest = ( - enrichedTransactionRequest: EnrichedEVMTransactionRequest + enrichedTransactionRequest: EnrichedEVMTransactionRequest, ): enrichedTransactionRequest is EnrichedEIP1559TransactionRequest => "maxFeePerGas" in enrichedTransactionRequest && "maxPriorityFeePerGas" in enrichedTransactionRequest export const isEnrichedEVMTransactionRequest = ( - transactionRequest: TransactionRequest + transactionRequest: TransactionRequest, ): transactionRequest is EnrichedEVMTransactionRequest => "annotation" in transactionRequest diff --git a/background/nfts.ts b/background/nfts.ts index 9cf9c51ada..351c30ba49 100644 --- a/background/nfts.ts +++ b/background/nfts.ts @@ -36,7 +36,7 @@ export const NFT_PROVIDER_TO_CHAIN = { } export const NETWORKS_SUPPORTING_NFTS = new Set( - Object.keys(CHAIN_ID_TO_NFT_METADATA_PROVIDER) + Object.keys(CHAIN_ID_TO_NFT_METADATA_PROVIDER), ) export type NFTsWithPagesResponse = { diff --git a/background/package.json b/background/package.json index 40bbe6e7d1..1bcd961a75 100644 --- a/background/package.json +++ b/background/package.json @@ -26,18 +26,18 @@ "dependencies": { "@ethereumjs/common": "^2.4.0", "@ethereumjs/tx": "^3.3.0", - "@ethersproject/abstract-provider": "^5.5.1", - "@ethersproject/abstract-signer": "^5.5.0", - "@ethersproject/networks": "^5.5.1", - "@ethersproject/properties": "^5.6.0", - "@ethersproject/providers": "^5.5.3", - "@ethersproject/transactions": "^5.5.0", - "@ethersproject/web": "^5.5.1", - "@ledgerhq/devices": "^6.20.0", - "@ledgerhq/errors": "^6.12.0", - "@ledgerhq/hw-app-eth": "^6.30.0", - "@ledgerhq/hw-transport": "^6.20.0", - "@ledgerhq/hw-transport-webusb": "^6.20.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/web": "^5.7.1", + "@ledgerhq/devices": "8.0.3", + "@ledgerhq/errors": "6.12.6", + "@ledgerhq/hw-app-eth": "6.33.4", + "@ledgerhq/hw-transport": "6.28.4", + "@ledgerhq/hw-transport-webusb": "6.27.14", "@redux-devtools/remote": "^0.7.4", "@tallyho/hd-keyring": "0.5.0", "@tallyho/provider-bridge-shared": "0.0.1", @@ -46,8 +46,8 @@ "@types/w3c-web-usb": "^1.0.5", "@uniswap/token-lists": "^1.0.0-beta.30", "@walletconnect/client": "^1.8.0", - "@walletconnect/sign-client": "^2.1.4", - "@walletconnect/utils": "^2.1.4", + "@walletconnect/sign-client": "^2.7.7", + "@walletconnect/utils": "^2.7.7", "ajv": "^8.6.2", "ajv-formats": "^2.1.0", "argon2-browser": "^1.18.0", @@ -55,9 +55,9 @@ "base64-loader": "^1.0.0", "bnc-sdk": "^3.4.1", "dayjs": "^1.10.7", - "dexie": "^3.0.3", + "dexie": "^3.0.4", "emittery": "^0.9.2", - "ethers": "^5.5.1", + "ethers": "5.7.2", "immer": "^9.0.1", "jsondiffpatch": "^0.4.1", "lodash": "^4.17.21", @@ -68,13 +68,13 @@ "webextension-polyfill": "^0.8.0" }, "devDependencies": { - "@reduxjs/toolkit": "^1.6.1", + "@reduxjs/toolkit": "^1.9.4", "@types/argon2-browser": "^1.18.1", "@types/sinon": "^10.0.12", "@types/uuid": "^8.3.4", "@types/webextension-polyfill": "^0.8.0", - "@walletconnect/legacy-types": "^2.0.0-rc.0", - "@walletconnect/types": "^2.1.4", + "@walletconnect/legacy-types": "^2.0.0", + "@walletconnect/types": "^2.7.7", "crypto-browserify": "^3.12.0", "fake-indexeddb": "^4.0.0", "jest-webextension-mock": "^3.7.22", diff --git a/background/redux-slices/0x-swap.ts b/background/redux-slices/0x-swap.ts index 7ca8fb65f8..d1264b0258 100644 --- a/background/redux-slices/0x-swap.ts +++ b/background/redux-slices/0x-swap.ts @@ -67,7 +67,7 @@ const swapSlice = createSlice({ reducers: { setFinalSwapQuote: ( state, - { payload: finalQuote }: { payload: ZrxQuote } + { payload: finalQuote }: { payload: ZrxQuote }, ) => ({ ...state, finalQuote, @@ -75,7 +75,7 @@ const swapSlice = createSlice({ setLatestQuoteRequest: ( state, - { payload: quoteRequest }: { payload: SwapQuoteRequest } + { payload: quoteRequest }: { payload: SwapQuoteRequest }, ) => ({ ...state, latestQuoteRequest: quoteRequest, @@ -83,7 +83,7 @@ const swapSlice = createSlice({ setInProgressApprovalContract: ( state, - { payload: approvingContractAddress }: { payload: string } + { payload: approvingContractAddress }: { payload: string }, ) => ({ ...state, inProgressApprovalContract: approvingContractAddress, @@ -185,14 +185,16 @@ function build0xUrlFromSwapRequest( gasPrice, network: selectedNetwork, }: SwapQuoteRequest, - additionalParameters: Record + additionalParameters: Record, ): URL { const requestUrl = new URL( - `https://${get0xApiBase(selectedNetwork)}/swap/v1${requestPath}` + `https://${get0xApiBase(selectedNetwork)}/swap/v1${requestPath}`, ) const tradeAmount = utils.parseUnits( "buyAmount" in amount ? amount.buyAmount : amount.sellAmount, - "buyAmount" in amount ? assets.buyAsset.decimals : assets.sellAsset.decimals + "buyAmount" in amount + ? assets.buyAsset.decimals + : assets.sellAsset.decimals, ) // When available, use smart contract addresses. @@ -258,7 +260,7 @@ export const fetchSwapQuote = createBackgroundAsyncThunk( logger.warn( "Swap quote API call didn't validate, did the 0x API change?", apiData, - isValidSwapQuoteResponse.errors + isValidSwapQuoteResponse.errors, ) return null @@ -267,22 +269,22 @@ export const fetchSwapQuote = createBackgroundAsyncThunk( dispatch(setFinalSwapQuote(apiData)) return apiData - } + }, ) const parseAndNotifyOnZeroExApiError = ( error: unknown, - dispatch: ThunkDispatch + dispatch: ThunkDispatch, ) => { try { if (typeof error === "object" && error !== null && "body" in error) { const parsedBody = JSON.parse( - (error as { body: string }).body + (error as { body: string }).body, ) as ZeroExErrorResponse if ( // @TODO Extend this to handle more errors parsedBody.validationErrors.find( - (e) => e.reason === "INSUFFICIENT_ASSET_LIQUIDITY" + (e) => e.reason === "INSUFFICIENT_ASSET_LIQUIDITY", ) ) { dispatch(setSnackbarMessage("Insufficient liquidity for this trade.")) @@ -309,7 +311,7 @@ export const fetchSwapPrice = createBackgroundAsyncThunk( }: { quoteRequest: SwapQuoteRequest }, - { dispatch, getState } + { dispatch, getState }, ): Promise< | { quote: ZrxPrice; needsApproval: boolean; priceDetails: PriceDetails } | undefined @@ -336,7 +338,7 @@ export const fetchSwapPrice = createBackgroundAsyncThunk( logger.warn( "Swap price API call didn't validate, did the 0x API change?", apiData, - isValidSwapQuoteResponse.errors + isValidSwapQuoteResponse.errors, ) return undefined @@ -351,13 +353,13 @@ export const fetchSwapPrice = createBackgroundAsyncThunk( const assetContract = new ethers.Contract( quote.sellTokenAddress, ERC20_ABI, - signer + signer, ) const existingAllowance: BigNumber = await assetContract.callStatic.allowance( await signer.getAddress(), - quote.allowanceTarget + quote.allowanceTarget, ) needsApproval = existingAllowance.lt(quote.sellAmount) @@ -375,7 +377,7 @@ export const fetchSwapPrice = createBackgroundAsyncThunk( assets, prices, quote.buyAmount, - quoteRequest.network + quoteRequest.network, ), sellCurrencyAmount: await checkCurrencyAmount( Number(quote.sellTokenToEthRate), @@ -383,7 +385,7 @@ export const fetchSwapPrice = createBackgroundAsyncThunk( assets, prices, quote.sellAmount, - quoteRequest.network + quoteRequest.network, ), } @@ -393,7 +395,7 @@ export const fetchSwapPrice = createBackgroundAsyncThunk( parseAndNotifyOnZeroExApiError(error, dispatch) return undefined } - } + }, ) /** @@ -412,7 +414,7 @@ export const approveTransfer = createBackgroundAsyncThunk( assetContractAddress: string approvalTarget: string }, - { dispatch } + { dispatch }, ) => { dispatch(setApprovalInProgress(assetContractAddress)) @@ -423,17 +425,17 @@ export const approveTransfer = createBackgroundAsyncThunk( const assetContract = new ethers.Contract( assetContractAddress, ERC20_ABI, - signer + signer, ) const approvalTransactionData = await assetContract.populateTransaction.approve( approvalTarget, - ethers.constants.MaxUint256 // infinite approval :( + ethers.constants.MaxUint256, // infinite approval :( ) logger.debug("Issuing approval transaction", approvalTransactionData) const transactionHash = await signer.sendUncheckedTransaction( - approvalTransactionData + approvalTransactionData, ) // Wait for transaction to mine before indicating approval is complete. @@ -444,7 +446,7 @@ export const approveTransfer = createBackgroundAsyncThunk( } finally { dispatch(clearApprovalInProgress()) } - } + }, ) /** @@ -455,7 +457,7 @@ export const executeSwap = createBackgroundAsyncThunk( "0x-swap/executeSwap", async ( quote: ZrxQuote & { sellAsset: SwappableAsset; buyAsset: SwappableAsset }, - { dispatch } + { dispatch }, ) => { const provider = getProvider() const signer = provider.getSigner() @@ -465,14 +467,14 @@ export const executeSwap = createBackgroundAsyncThunk( asset: quote.sellAsset, amount: BigInt(quote.sellAmount), }, - 2 + 2, ) const buyAssetAmount = enrichAssetAmountWithDecimalValues( { asset: quote.buyAsset, amount: BigInt(quote.buyAmount), }, - 2 + 2, ) // Clear the swap quote, then request signature + broadcast. @@ -503,5 +505,5 @@ export const executeSwap = createBackgroundAsyncThunk( blockTimestamp: undefined, }, }) - } + }, ) diff --git a/background/redux-slices/abilities.ts b/background/redux-slices/abilities.ts index 21dcb968cf..fffc25183e 100644 --- a/background/redux-slices/abilities.ts +++ b/background/redux-slices/abilities.ts @@ -7,17 +7,19 @@ import { createBackgroundAsyncThunk } from "./utils" const isLedgerAccount = ( ledger: LedgerState, - address: NormalizedEVMAddress + address: NormalizedEVMAddress, ): boolean => Object.values(ledger.devices) .flatMap((device) => - Object.values(device.accounts).flatMap((account) => account.address ?? "") + Object.values(device.accounts).flatMap( + (account) => account.address ?? "", + ), ) .includes(address) const isImportOrInternalAccount = ( internalSigner: InternalSignerState, - address: NormalizedEVMAddress + address: NormalizedEVMAddress, ): boolean => internalSigner.keyrings .flatMap(({ addresses }) => addresses) @@ -25,7 +27,7 @@ const isImportOrInternalAccount = ( const isPrivateKeyAccount = ( internalSigner: InternalSignerState, - address: NormalizedEVMAddress + address: NormalizedEVMAddress, ): boolean => internalSigner.privateKeys .flatMap(({ addresses }) => addresses) @@ -65,11 +67,11 @@ const abilitiesSlice = createSlice({ reducers: { setAbilitiesForAddress: ( immerState, - { payload }: { payload: { address: HexString; abilities: Ability[] } } + { payload }: { payload: { address: HexString; abilities: Ability[] } }, ) => { const { address, abilities } = payload immerState.abilities[address] = Object.fromEntries( - abilities.map((ability) => [ability.abilityId, ability]) + abilities.map((ability) => [ability.abilityId, ability]), ) }, updateAbility: (immerState, { payload }: { payload: Ability }) => { @@ -77,13 +79,13 @@ const abilitiesSlice = createSlice({ }, deleteAbilitiesForAccount: ( immerState, - { payload: address }: { payload: HexString } + { payload: address }: { payload: HexString }, ) => { delete immerState.abilities[address] }, deleteAbility: ( immerState, - { payload }: { payload: { address: HexString; abilityId: string } } + { payload }: { payload: { address: HexString; abilityId: string } }, ) => { delete immerState.abilities[payload.address]?.[payload.abilityId] }, @@ -98,7 +100,7 @@ const abilitiesSlice = createSlice({ }, deleteType: (immerState, { payload: type }: { payload: string }) => { immerState.filter.types = immerState.filter.types.filter( - (value) => value !== type + (value) => value !== type, ) }, addAccount: (immerState, { payload: account }: { payload: string }) => { @@ -108,7 +110,7 @@ const abilitiesSlice = createSlice({ }, deleteAccount: (immerState, { payload: account }: { payload: string }) => { immerState.filter.accounts = immerState.filter.accounts.filter( - (value) => value !== account + (value) => value !== account, ) }, }, @@ -134,10 +136,10 @@ export const completeAbility = createBackgroundAsyncThunk( address, abilityId, }: { address: NormalizedEVMAddress; abilityId: string }, - { extra: { main } } + { extra: { main } }, ) => { await main.markAbilityAsCompleted(address, abilityId) - } + }, ) export const removeAbility = createBackgroundAsyncThunk( @@ -147,10 +149,10 @@ export const removeAbility = createBackgroundAsyncThunk( address, abilityId, }: { address: NormalizedEVMAddress; abilityId: string }, - { extra: { main } } + { extra: { main } }, ) => { await main.markAbilityAsRemoved(address, abilityId) - } + }, ) export const reportAndRemoveAbility = createBackgroundAsyncThunk( @@ -167,17 +169,17 @@ export const reportAndRemoveAbility = createBackgroundAsyncThunk( abilityId: string reason: string }, - { extra: { main } } + { extra: { main } }, ) => { await main.reportAndRemoveAbility(address, abilitySlug, abilityId, reason) - } + }, ) export const initAbilities = createBackgroundAsyncThunk( "abilities/initAbilities", async ( address: NormalizedEVMAddress, - { dispatch, getState, extra: { main } } + { dispatch, getState, extra: { main } }, ) => { const { ledger, internalSigner, abilities } = getState() as { ledger: LedgerState @@ -196,7 +198,7 @@ export const initAbilities = createBackgroundAsyncThunk( dispatch(addAccount(address)) } } - } + }, ) export default abilitiesSlice.reducer diff --git a/background/redux-slices/accounts.ts b/background/redux-slices/accounts.ts index e0b62d8133..0754c30bc6 100644 --- a/background/redux-slices/accounts.ts +++ b/background/redux-slices/accounts.ts @@ -95,7 +95,7 @@ export type CombinedAccountData = { // Utility type, wrapped in CompleteAssetAmount. type InternalCompleteAssetAmount< E extends AnyAsset = AnyAsset, - T extends AnyAssetAmount = AnyAssetAmount + T extends AnyAssetAmount = AnyAssetAmount, > = T & AssetMainCurrencyAmount & AssetDecimalAmount /** @@ -119,19 +119,19 @@ export const initialState: AccountState = { function newAccountData( address: HexString, network: EVMNetwork, - accountsState: AccountState + accountsState: AccountState, ): AccountData { const existingAccountsCount = Object.keys( - accountsState.accountsData.evm[network.chainID] + accountsState.accountsData.evm[network.chainID], ).filter((key) => key !== address).length const sameAccountOnDifferentChain = Object.values( - accountsState.accountsData.evm + accountsState.accountsData.evm, ) .flatMap((chain) => Object.values(chain)) .find( (accountData): accountData is AccountData => - accountData !== "loading" && accountData.address === address + accountData !== "loading" && accountData.address === address, ) const defaultNameIndex = // Skip potentially-used names at the beginning of the array if relevant, @@ -143,8 +143,8 @@ function newAccountData( BigInt(address) % BigInt( availableDefaultNames.length - - (existingAccountsCount % availableDefaultNames.length) - ) + (existingAccountsCount % availableDefaultNames.length), + ), ) let defaultAccountName = sameAccountOnDifferentChain?.defaultName @@ -180,7 +180,7 @@ function updateCombinedData(immerState: AccountState) { ...evm, [key]: immerState.accountsData.evm[key], }), - {} + {}, ) const combinedAccountBalances = Object.values(filteredEvm) @@ -188,7 +188,7 @@ function updateCombinedData(immerState: AccountState) { .flatMap((ad) => ad === "loading" ? [] - : Object.values(ad.balances).map((ab) => ab.assetAmount) + : Object.values(ad.balances).map((ab) => ab.assetAmount), ) immerState.combinedData.assets = Object.values( @@ -227,14 +227,14 @@ function updateCombinedData(immerState: AccountState) { } return acc - }, {}) + }, {}), ) } function getOrCreateAccountData( accountState: AccountState, account: HexString, - network: EVMNetwork + network: EVMNetwork, ): AccountData { const accountData = accountState.accountsData.evm[network.chainID][account] @@ -252,7 +252,7 @@ const accountSlice = createSlice({ reducers: { loadAccount: ( immerState, - { payload: { address, network } }: { payload: AddressOnNetwork } + { payload: { address, network } }: { payload: AddressOnNetwork }, ) => { const normalizedAddress = normalizeEVMAddress(address) if ( @@ -272,7 +272,7 @@ const accountSlice = createSlice({ }, deleteAccount: ( immerState, - { payload: address }: { payload: HexString } + { payload: address }: { payload: HexString }, ) => { const normalizedAddress = normalizeEVMAddress(address) @@ -283,8 +283,8 @@ const accountSlice = createSlice({ !Object.keys(evm ?? {}).some((chainID) => // has an address equal to the one we're trying to remove Object.keys(evm[chainID]).some( - (addressOnChain) => addressOnChain === normalizedAddress - ) + (addressOnChain) => addressOnChain === normalizedAddress, + ), ) ) { // If none of the chains we're tracking has a matching address - this is a noop. @@ -309,7 +309,7 @@ const accountSlice = createSlice({ balances: AccountBalance[] addressOnNetwork: AddressOnNetwork } - } + }, ) => { balances.forEach((updatedAccountBalance) => { const { @@ -355,7 +355,7 @@ const accountSlice = createSlice({ immerState, { payload: { address, network, name }, - }: { payload: AddressOnNetwork & { name: DomainName } } + }: { payload: AddressOnNetwork & { name: DomainName } }, ) => { const normalizedAddress = normalizeEVMAddress(address) @@ -375,7 +375,7 @@ const accountSlice = createSlice({ // TODO across networks. immerState, normalizedAddress, - network + network, ) immerState.accountsData.evm[network.chainID][normalizedAddress] = { @@ -387,7 +387,7 @@ const accountSlice = createSlice({ immerState, { payload: { address, network, avatar }, - }: { payload: AddressOnNetwork & { avatar: URI } } + }: { payload: AddressOnNetwork & { avatar: URI } }, ) => { const normalizedAddress = normalizeEVMAddress(address) @@ -407,7 +407,7 @@ const accountSlice = createSlice({ const baseAccountData = getOrCreateAccountData( immerState, normalizedAddress, - network + network, ) immerState.accountsData.evm[network.chainID][normalizedAddress] = { @@ -420,7 +420,7 @@ const accountSlice = createSlice({ */ updateAssetReferences: ( immerState, - { payload: asset }: { payload: SmartContractFungibleAsset } + { payload: asset }: { payload: SmartContractFungibleAsset }, ) => { const allAccounts = immerState.accountsData.evm[asset.homeNetwork.chainID] Object.keys(allAccounts).forEach((address) => { @@ -431,7 +431,7 @@ const accountSlice = createSlice({ isSmartContractFungibleAsset(assetAmount.asset) && sameEVMAddress( assetAmount.asset.contractAddress, - asset.contractAddress + asset.contractAddress, ) ) { Object.assign(assetAmount.asset, asset) @@ -444,7 +444,7 @@ const accountSlice = createSlice({ }, removeAssetReferences: ( immerState, - { payload: asset }: { payload: SmartContractFungibleAsset } + { payload: asset }: { payload: SmartContractFungibleAsset }, ) => { const allAccounts = immerState.accountsData.evm[asset.homeNetwork.chainID] Object.keys(allAccounts).forEach((address) => { @@ -462,7 +462,7 @@ const accountSlice = createSlice({ }, removeChainBalances: ( immerState, - { payload: chainID }: { payload: string } + { payload: chainID }: { payload: string }, ) => { delete immerState.accountsData.evm[chainID] }, @@ -489,7 +489,7 @@ export default accountSlice.reducer export const resolveNameOnNetwork = createBackgroundAsyncThunk( "account/resolveNameOnNetwork", async (nameOnNetwork: NameOnNetwork, { extra: { main } }) => - main.resolveNameOnNetwork(nameOnNetwork) + main.resolveNameOnNetwork(nameOnNetwork), ) /** @@ -510,14 +510,14 @@ export const addAddressNetwork = createBackgroundAsyncThunk( dispatch(loadAccount(normalizedAddressNetwork)) await main.addAccount(normalizedAddressNetwork) - } + }, ) export const addOrEditAddressName = createBackgroundAsyncThunk( "account/addOrEditAddressName", async (payload: AddressOnNetwork & { name: string }, { extra: { main } }) => { await main.addOrEditAddressName(payload) - } + }, ) export const removeAccount = createBackgroundAsyncThunk( @@ -528,11 +528,11 @@ export const removeAccount = createBackgroundAsyncThunk( signer: AccountSigner lastAddressInAccount: boolean }, - { extra: { main } } + { extra: { main } }, ) => { const { addressOnNetwork, signer, lastAddressInAccount } = payload const normalizedAddress = normalizeEVMAddress(addressOnNetwork.address) await main.removeAccount(normalizedAddress, signer, lastAddressInAccount) - } + }, ) diff --git a/background/redux-slices/activities.ts b/background/redux-slices/activities.ts index 2c32c11027..fbc0894f70 100644 --- a/background/redux-slices/activities.ts +++ b/background/redux-slices/activities.ts @@ -44,7 +44,7 @@ const addActivityToState = ( address: string, chainID: string, - transaction: Transaction | EnrichedEVMTransaction + transaction: Transaction | EnrichedEVMTransaction, ) => { const activity = getActivity(transaction) const normalizedAddress = normalizeEVMAddress(address) @@ -53,7 +53,7 @@ const addActivityToState = activities[normalizedAddress][chainID] ??= [] const exisistingIndex = activities[normalizedAddress][chainID].findIndex( - (tx) => tx.hash === transaction.hash + (tx) => tx.hash === transaction.hash, ) if (exisistingIndex !== -1) { @@ -79,7 +79,7 @@ const initializeActivitiesFromTransactions = ({ const addActivity = addActivityToState(activities) const normalizedAccounts = accounts.map((account) => - normalizeAddressOnNetwork(account) + normalizeAddressOnNetwork(account), ) // Add transactions @@ -87,12 +87,13 @@ const initializeActivitiesFromTransactions = ({ const { to, from, network } = transaction const isTrackedTo = normalizedAccounts.some( ({ address, network: activeNetwork }) => - network.chainID === activeNetwork.chainID && sameEVMAddress(to, address) + network.chainID === activeNetwork.chainID && + sameEVMAddress(to, address), ) const isTrackedFrom = normalizedAccounts.some( ({ address, network: activeNetwork }) => network.chainID === activeNetwork.chainID && - sameEVMAddress(from, address) + sameEVMAddress(from, address), ) if (to && isTrackedTo) { @@ -105,7 +106,7 @@ const initializeActivitiesFromTransactions = ({ // Sort and reduce # of transactions normalizedAccounts.forEach(({ address, network }) => - cleanActivitiesArray(activities[address]?.[network.chainID]) + cleanActivitiesArray(activities[address]?.[network.chainID]), ) return activities @@ -125,7 +126,7 @@ const activitiesSlice = createSlice({ payload, }: { payload: { transactions: Transaction[]; accounts: AddressOnNetwork[] } - } + }, ) => ({ activities: initializeActivitiesFromTransactions(payload), }), @@ -133,22 +134,28 @@ const activitiesSlice = createSlice({ immerState, { payload: { transactions, account }, - }: { payload: { transactions: Transaction[]; account: AddressOnNetwork } } + }: { + payload: { transactions: Transaction[]; account: AddressOnNetwork } + }, ) => { const { address, network: { chainID }, } = account transactions.forEach((transaction) => - addActivityToState(immerState.activities)(address, chainID, transaction) + addActivityToState(immerState.activities)( + address, + chainID, + transaction, + ), ) cleanActivitiesArray( - immerState.activities[normalizeEVMAddress(address)]?.[chainID] + immerState.activities[normalizeEVMAddress(address)]?.[chainID], ) }, removeActivities: ( immerState, - { payload: address }: { payload: HexString } + { payload: address }: { payload: HexString }, ) => { immerState.activities[address] = {} }, @@ -161,13 +168,13 @@ const activitiesSlice = createSlice({ transaction: EnrichedEVMTransaction forAccounts: string[] } - } + }, ) => { const { chainID } = transaction.network forAccounts.forEach((address) => { addActivityToState(immerState.activities)(address, chainID, transaction) cleanActivitiesArray( - immerState.activities[normalizeEVMAddress(address)]?.[chainID] + immerState.activities[normalizeEVMAddress(address)]?.[chainID], ) }) }, @@ -186,5 +193,5 @@ export default activitiesSlice.reducer export const fetchSelectedActivityDetails = createBackgroundAsyncThunk( "activities/fetchSelectedActivityDetails", async (activityHash: string, { extra: { main } }) => - main.getActivityDetails(activityHash) + main.getActivityDetails(activityHash), ) diff --git a/background/redux-slices/assets.ts b/background/redux-slices/assets.ts index a10ac24d39..a5fa44a33f 100644 --- a/background/redux-slices/assets.ts +++ b/background/redux-slices/assets.ts @@ -30,7 +30,7 @@ const assetsSlice = createSlice({ reducers: { assetsLoaded: ( immerState, - { payload: newAssets }: { payload: AnyAsset[] } + { payload: newAssets }: { payload: AnyAsset[] }, ) => { const mappedAssets: { [sym: string]: SingleAssetState[] } = {} // bin existing known assets @@ -82,7 +82,7 @@ const assetsSlice = createSlice({ }, removeAsset: ( immerState, - { payload: removedAsset }: { payload: AnyAsset } + { payload: removedAsset }: { payload: AnyAsset }, ) => immerState.filter((asset) => !isSameAsset(asset, removedAsset)), }, }) @@ -101,10 +101,10 @@ export const updateAssetMetadata = createBackgroundAsyncThunk( asset: SmartContractFungibleAsset metadata: AnyAssetMetadata }, - { extra: { main } } + { extra: { main } }, ) => { await main.updateAssetMetadata(asset, metadata) - } + }, ) export const refreshAsset = createBackgroundAsyncThunk( @@ -115,13 +115,13 @@ export const refreshAsset = createBackgroundAsyncThunk( }: { asset: SmartContractFungibleAsset }, - { dispatch } + { dispatch }, ) => { // Update assets slice await dispatch(assetsLoaded([asset])) // Update accounts slice cached data about this asset await dispatch(updateAssetReferences(asset)) - } + }, ) export const hideAsset = createBackgroundAsyncThunk( @@ -132,10 +132,10 @@ export const hideAsset = createBackgroundAsyncThunk( }: { asset: SmartContractFungibleAsset }, - { extra: { main } } + { extra: { main } }, ) => { await main.hideAsset(asset) - } + }, ) /** @@ -150,11 +150,11 @@ export const removeAssetData = createBackgroundAsyncThunk( }: { asset: SmartContractFungibleAsset }, - { dispatch } + { dispatch }, ) => { await dispatch(removeAsset(asset)) await dispatch(removeAssetReferences(asset)) - } + }, ) /** @@ -189,7 +189,7 @@ export const transferAsset = createBackgroundAsyncThunk( if (isBaseAssetForNetwork(assetAmount.asset, fromNetwork)) { logger.debug( `Sending ${assetAmount.amount} ${assetAmount.asset.symbol} from ` + - `${fromAddress} to ${toAddress} as a base asset transfer.` + `${fromAddress} to ${toAddress} as a base asset transfer.`, ) await signer.sendTransaction({ from: fromAddress, @@ -201,17 +201,17 @@ export const transferAsset = createBackgroundAsyncThunk( } else if (isSmartContractFungibleAsset(assetAmount.asset)) { logger.debug( `Sending ${assetAmount.amount} ${assetAmount.asset.symbol} from ` + - `${fromAddress} to ${toAddress} as an ERC20 transfer.` + `${fromAddress} to ${toAddress} as an ERC20 transfer.`, ) const token = new ethers.Contract( assetAmount.asset.contractAddress, ERC20_INTERFACE, - signer + signer, ) const transactionDetails = await token.populateTransaction.transfer( toAddress, - assetAmount.amount + assetAmount.amount, ) await signer.sendUncheckedTransaction({ @@ -221,10 +221,10 @@ export const transferAsset = createBackgroundAsyncThunk( }) } else { throw new Error( - "Only base and fungible smart contract asset transfers are supported for now." + "Only base and fungible smart contract asset transfers are supported for now.", ) } - } + }, ) export const importCustomToken = createBackgroundAsyncThunk( @@ -235,8 +235,8 @@ export const importCustomToken = createBackgroundAsyncThunk( }: { asset: SmartContractFungibleAsset }, - { extra: { main } } - ) => ({ success: await main.importCustomToken(asset) }) + { extra: { main } }, + ) => ({ success: await main.importCustomToken(asset) }), ) export const checkTokenContractDetails = createBackgroundAsyncThunk( @@ -246,7 +246,7 @@ export const checkTokenContractDetails = createBackgroundAsyncThunk( contractAddress, network, }: { contractAddress: NormalizedEVMAddress; network: EVMNetwork }, - { getState, extra: { main } } + { getState, extra: { main } }, ) => { const state = getState() as RootState const currentAccount = state.ui.selectedAccount @@ -260,5 +260,5 @@ export const checkTokenContractDetails = createBackgroundAsyncThunk( // FIXME: Rejected thunks return undefined instead of throwing return null } - } + }, ) diff --git a/background/redux-slices/claim.ts b/background/redux-slices/claim.ts index 392dfc002f..f40a2a8917 100644 --- a/background/redux-slices/claim.ts +++ b/background/redux-slices/claim.ts @@ -71,7 +71,7 @@ const getDistributorContract = async () => { const distributorContractAddress = VOTE_WITH_FRIENDS_ADDRESS // VoteWithFriends contract address const distributor = await getContract( distributorContractAddress, - DISTRIBUTOR_ABI + DISTRIBUTOR_ABI, ) return distributor } @@ -134,7 +134,7 @@ const claimingSlice = createSlice({ }, claimed: ( immerState, - { payload }: { payload: { account: HexString; alreadyClaimed: boolean } } + { payload }: { payload: { account: HexString; alreadyClaimed: boolean } }, ) => { immerState.claimed[payload.account] = payload.alreadyClaimed immerState.claimError[payload.account] = false @@ -143,7 +143,7 @@ const claimingSlice = createSlice({ state, { payload: { signature, nonce, expiry }, - }: { payload: { signature: Signature; nonce: number; expiry: number } } + }: { payload: { signature: Signature; nonce: number; expiry: number } }, ) => ({ ...state, signature, @@ -162,7 +162,7 @@ const claimingSlice = createSlice({ }, setReferrer: ( immerState, - { payload: referrer }: { payload: Referrer | null } + { payload: referrer }: { payload: Referrer | null }, ) => { immerState.referrer = referrer }, @@ -171,7 +171,7 @@ const claimingSlice = createSlice({ }, setReferrerStats: ( immerState, - { payload: reffererStats }: { payload: ReferrerStats } + { payload: reffererStats }: { payload: ReferrerStats }, ) => { immerState.referrerStats = reffererStats }, @@ -209,13 +209,13 @@ export const checkAlreadyClaimed = createBackgroundAsyncThunk( return false } const alreadyClaimed = await distributorContract.isClaimed( - eligibility.index + eligibility.index, ) if (alreadyClaimed) { dispatch(claimed({ account: eligibility.account, alreadyClaimed })) } return alreadyClaimed - } + }, ) export const claimRewards = createBackgroundAsyncThunk( @@ -247,7 +247,7 @@ export const claimRewards = createBackgroundAsyncThunk( claimed({ account: normalizeEVMAddress(account), alreadyClaimed: true, - }) + }), ) dispatch(resetClaimFlow()) return @@ -263,7 +263,7 @@ export const claimRewards = createBackgroundAsyncThunk( eligibility.index, account, eligibility.amount, - eligibility.proof + eligibility.proof, ) } @@ -274,7 +274,7 @@ export const claimRewards = createBackgroundAsyncThunk( account, eligibility.amount, eligibility.proof, - referralAddress + referralAddress, ) } if ( @@ -292,7 +292,7 @@ export const claimRewards = createBackgroundAsyncThunk( eligibility.proof, referralAddress, delegate.address, - { nonce, expiry, r, s, v } + { nonce, expiry, r, s, v }, ) } if (claimTransaction) { @@ -307,7 +307,7 @@ export const claimRewards = createBackgroundAsyncThunk( dispatch(dispatch(claimError(normalizeEVMAddress(account)))) } } - } + }, ) export const signTokenDelegationData = createBackgroundAsyncThunk( @@ -325,7 +325,7 @@ export const signTokenDelegationData = createBackgroundAsyncThunk( if (delegatee) { const TahoTokenContract = await getContract( DOGGO_TOKEN_ADDRESS, - ERC2612_INTERFACE + ERC2612_INTERFACE, ) const nonce: BigNumber = await TahoTokenContract.nonces(address) @@ -361,35 +361,35 @@ export const signTokenDelegationData = createBackgroundAsyncThunk( signature, nonce: nonceValue, expiry, - }) + }), ) } - } + }, ) export const selectClaim = createSelector( (state: { claim: ClaimingState }): ClaimingState => state.claim, - (claimState: ClaimingState) => claimState + (claimState: ClaimingState) => claimState, ) export const selectIsDelegationSigned = createSelector( (state: { claim: ClaimingState }): ClaimingState => state.claim, - (claimState: ClaimingState) => typeof claimState.signature !== "undefined" + (claimState: ClaimingState) => typeof claimState.signature !== "undefined", ) export const selectClaimed = createSelector( (state: { claim: ClaimingState }): ClaimingState => state.claim, - (claimState: ClaimingState) => claimState.claimed + (claimState: ClaimingState) => claimState.claimed, ) export const selectClaimError = createSelector( (state: { claim: ClaimingState }): ClaimingState => state.claim, - (claimState: ClaimingState) => claimState.claimError + (claimState: ClaimingState) => claimState.claimError, ) export const selectCurrentlyClaiming = createSelector( (state: { claim: ClaimingState }): ClaimingState => state.claim, - (claimState: ClaimingState) => claimState.currentlyClaiming + (claimState: ClaimingState) => claimState.currentlyClaiming, ) export const selectClaimSelections = createSelector( @@ -402,12 +402,12 @@ export const selectClaimSelections = createSelector( : undefined, }, selectedForBonus: claimState.selectedForBonus, - }) + }), ) export const selectReferrerStats = createSelector( (state: { claim: ClaimingState }): ClaimingState => state.claim, - (claimState: ClaimingState) => claimState.referrerStats + (claimState: ClaimingState) => claimState.referrerStats, ) export const selectEligibility = createSelector( @@ -418,11 +418,11 @@ export const selectEligibility = createSelector( amount: BigInt(Number(claimState.eligibility?.amount || 0n)) || 0n, decimals: DOGGO.decimals, }, - 0 - ) + 0, + ), ) export const selectEligibilityLoading = createSelector( (state: { claim: ClaimingState }): ClaimingState => state.claim, - (claimState: ClaimingState) => claimState.eligibilityLoading + (claimState: ClaimingState) => claimState.eligibilityLoading, ) diff --git a/background/redux-slices/dapp.ts b/background/redux-slices/dapp.ts index 65d24b942a..0f6baf86c5 100644 --- a/background/redux-slices/dapp.ts +++ b/background/redux-slices/dapp.ts @@ -49,7 +49,7 @@ export const grantPermission = createBackgroundAsyncThunk( ...permission, }) return permission - } + }, ) // Async thunk to bubble the permissionDenyOrRevoke action from store to emitter. @@ -58,7 +58,7 @@ export const denyOrRevokePermission = createBackgroundAsyncThunk( async (permission: PermissionRequest) => { await emitter.emit("denyOrRevokePermission", permission) return permission - } + }, ) const dappSlice = createSlice({ @@ -79,13 +79,13 @@ const dappSlice = createSlice({ } } } - } + }, ) => { immerState.allowed = allowed }, requestPermission: ( state, - { payload: request }: { payload: PermissionRequest } + { payload: request }: { payload: PermissionRequest }, ) => { if (state.permissionRequests[request.origin]?.state !== "allow") { return { @@ -103,7 +103,7 @@ const dappSlice = createSlice({ }, revokePermissionsForAddress: ( immerState, - { payload: address }: { payload: string } + { payload: address }: { payload: string }, ) => { Object.keys(immerState.allowed.evm).forEach((chainID) => { if (immerState.allowed.evm[chainID]?.[address]) { @@ -121,7 +121,7 @@ const dappSlice = createSlice({ grantPermission.fulfilled, ( immerState, - { payload: permission }: { payload: PermissionRequest } + { payload: permission }: { payload: PermissionRequest }, ) => { const updatedPermissionRequests = { ...immerState.permissionRequests } delete updatedPermissionRequests[permission.origin] @@ -143,17 +143,17 @@ const dappSlice = createSlice({ const allowedPermission = keyPermissionsByChainIdAddressOrigin( permissions, - immerState.allowed + immerState.allowed, ) immerState.allowed = allowedPermission - } + }, ) .addCase( denyOrRevokePermission.fulfilled, ( immerState, - { payload: permission }: { payload: PermissionRequest } + { payload: permission }: { payload: PermissionRequest }, ) => { const updatedPermissionRequests = { ...immerState.permissionRequests } delete updatedPermissionRequests[permission.origin] @@ -166,7 +166,7 @@ const dappSlice = createSlice({ withoutOriginToRemove } }) - } + }, ) }, }) diff --git a/background/redux-slices/earn-utils/getCurveLPTokenPrice.ts b/background/redux-slices/earn-utils/getCurveLPTokenPrice.ts index 732ebd8263..d403096ded 100644 --- a/background/redux-slices/earn-utils/getCurveLPTokenPrice.ts +++ b/background/redux-slices/earn-utils/getCurveLPTokenPrice.ts @@ -4,11 +4,11 @@ import { fetchWithTimeout } from "../../utils/fetching" const getCurveLPTokenPrice = async (wantToken: HexString): Promise => { const curveCrypto = await fetchWithTimeout( - "https://api.curve.fi/api/getPools/ethereum/crypto" + "https://api.curve.fi/api/getPools/ethereum/crypto", ) const curveCryptoParsed = await curveCrypto.json() const curveFactoryCrypto = await fetchWithTimeout( - "https://api.curve.fi/api/getPools/ethereum/factory-crypto" + "https://api.curve.fi/api/getPools/ethereum/factory-crypto", ) const curveFactoryCryptoParsed = await curveFactoryCrypto.json() @@ -18,18 +18,18 @@ const getCurveLPTokenPrice = async (wantToken: HexString): Promise => { ] const pool = curvePools.find( - (curvePool) => curvePool.lpTokenAddress === wantToken + (curvePool) => curvePool.lpTokenAddress === wantToken, ) if (typeof pool !== "undefined") { // found a curve lp token! // 1 LP token is worth total supply / usdTotal const totalSupplyDecimals = BigNumber.from(10).pow(BigNumber.from(18)) const amountOfLPTokens = BigNumber.from(pool.totalSupply).div( - totalSupplyDecimals + totalSupplyDecimals, ) const LPTokenPrice = BigNumber.from(pool.usdTotal.toFixed()).div( - amountOfLPTokens + amountOfLPTokens, ) const standardizedAmount = LPTokenPrice.mul(BigNumber.from("10").pow(10)) diff --git a/background/redux-slices/earn-utils/getDoggoPrice.ts b/background/redux-slices/earn-utils/getDoggoPrice.ts index 633c350149..7b05bb0336 100644 --- a/background/redux-slices/earn-utils/getDoggoPrice.ts +++ b/background/redux-slices/earn-utils/getDoggoPrice.ts @@ -8,25 +8,25 @@ export const DOGGOETH_PAIR = "0x93a08986ec9a74CB9E001702F30202f3749ceDC4" const getDoggoPrice = async ( prices: PricesState, - mainCurrencySymbol: string + mainCurrencySymbol: string, ): Promise => { // Fetching price of DOGGO from DOGGO/ETH UniswapV2Pair try { const doggoUniswapPairContract = await getContract( DOGGOETH_PAIR, - UNISWAP_V2_PAIR.abi + UNISWAP_V2_PAIR.abi, ) const reserves = await doggoUniswapPairContract.getReserves() const { reserve0, reserve1 } = reserves const asset0PricePoint = selectAssetPricePoint( prices, ETHEREUM.baseAsset, - mainCurrencySymbol + mainCurrencySymbol, ) if (typeof asset0PricePoint?.amounts[1] === "undefined") return 0n const priceOfWethReserve = reserve1.mul( - BigNumber.from(asset0PricePoint?.amounts[1]) + BigNumber.from(asset0PricePoint?.amounts[1]), ) const amountOfDoggoInPair = reserve0 const priceOfDoggo = priceOfWethReserve.div(amountOfDoggoInPair) diff --git a/background/redux-slices/earn-utils/getLPTokenValue.ts b/background/redux-slices/earn-utils/getLPTokenValue.ts index d462ef27c1..c0e3b453a3 100644 --- a/background/redux-slices/earn-utils/getLPTokenValue.ts +++ b/background/redux-slices/earn-utils/getLPTokenValue.ts @@ -10,7 +10,7 @@ const getLPTokenValue = async ( token: HexString, reserve: BigNumber, LPDecimals: number, - totalLPSupply: BigNumber + totalLPSupply: BigNumber, ): Promise => { const token0Contract = await getContract(token, ERC20_ABI) const token0Symbol = await token0Contract.symbol() @@ -18,7 +18,7 @@ const getLPTokenValue = async ( const assetPricePoint = selectAssetPricePoint( prices, token0Symbol, - mainCurrencySymbol + mainCurrencySymbol, ) if (typeof assetPricePoint?.amounts[1] !== "undefined") { const token0Decimals = await token0Contract.decimals() diff --git a/background/redux-slices/earn-utils/getPoolAPR.ts b/background/redux-slices/earn-utils/getPoolAPR.ts index 0d22d1e21c..dc732437ba 100644 --- a/background/redux-slices/earn-utils/getPoolAPR.ts +++ b/background/redux-slices/earn-utils/getPoolAPR.ts @@ -16,7 +16,7 @@ async function getYearnVaultAPY(yearnVaultAddress: HexString) { ).json() const yearnVaultAPY = yearnVaultsAPIData.find((yearnVault: { address: HexString }) => - sameEVMAddress(yearnVault.address, yearnVaultAddress) + sameEVMAddress(yearnVault.address, yearnVaultAddress), )?.apy?.net_apy ?? 0 const yearnVaultAPYPercent = yearnVaultAPY * 100 return yearnVaultAPYPercent @@ -25,7 +25,7 @@ async function getYearnVaultAPY(yearnVaultAddress: HexString) { function getYearlyRewardsValue( rewardTokenPrice: bigint, huntingGroundRemainingRewards: BigNumber, - periodsPerYear: BigNumber + periodsPerYear: BigNumber, ) { const rewardsRemainingValue = huntingGroundRemainingRewards .div(BigNumber.from("10").pow(DOGGO.decimals)) @@ -127,7 +127,7 @@ const getPoolAPR = async ({ const yearlyRewardsValue = getYearlyRewardsValue( estimate, huntingGroundRemainingRewards, - periodsPerYear + periodsPerYear, ) const rewardRatio = yearlyRewardsValue.div(tokensStakedValue) // Multiply that ratio by 100 to receive percentage diff --git a/background/redux-slices/earn-utils/getTokenPrice.ts b/background/redux-slices/earn-utils/getTokenPrice.ts index 71fa673eb6..0ee33fa10e 100644 --- a/background/redux-slices/earn-utils/getTokenPrice.ts +++ b/background/redux-slices/earn-utils/getTokenPrice.ts @@ -7,7 +7,7 @@ import getUniswapPairTokenPrice from "./getUniswapPairTokenPrice" const getTokenPrice = async ( asset: AnyAsset & { decimals: number; contractAddress: HexString }, - prices: PricesState + prices: PricesState, ): Promise<{ singleTokenPrice: bigint; pricePoint: PricePoint }> => { const mainCurrencySymbol = "USD" let tokenPrice @@ -17,14 +17,14 @@ const getTokenPrice = async ( tokenPrice = await getUniswapPairTokenPrice( asset.contractAddress, prices, - mainCurrencySymbol + mainCurrencySymbol, ) // in USD bigint with 10 decimals } else { // assetPricePoint.amounts[1] returns USD value with 10 decimals const assetPricePoint = selectAssetPricePoint( prices, asset, - mainCurrencySymbol + mainCurrencySymbol, ) tokenPrice = assetPricePoint?.amounts[1] diff --git a/background/redux-slices/earn-utils/getUniswapPairTokenPrice.ts b/background/redux-slices/earn-utils/getUniswapPairTokenPrice.ts index 3f03047c90..2fd0b6b94f 100644 --- a/background/redux-slices/earn-utils/getUniswapPairTokenPrice.ts +++ b/background/redux-slices/earn-utils/getUniswapPairTokenPrice.ts @@ -7,11 +7,11 @@ import { PricesState } from "../prices" const getUniswapPairTokenPrice = async ( tokenAddress: HexString, prices: PricesState, - mainCurrencySymbol: string + mainCurrencySymbol: string, ): Promise => { const UniswapV2PairContract = await getContract( tokenAddress, - UNISWAP_V2_PAIR.abi + UNISWAP_V2_PAIR.abi, ) const totalLPSupply = await UniswapV2PairContract.totalSupply() @@ -28,7 +28,7 @@ const getUniswapPairTokenPrice = async ( token0, reserve0, LPDecimals, - totalLPSupply + totalLPSupply, ) if (typeof priceFromToken0 !== "undefined") return priceFromToken0 @@ -41,7 +41,7 @@ const getUniswapPairTokenPrice = async ( token1, reserve1, LPDecimals, - totalLPSupply + totalLPSupply, ) if (typeof priceFromToken1 !== "undefined") return priceFromToken1 diff --git a/background/redux-slices/earn.ts b/background/redux-slices/earn.ts index 6db50648ec..0f30c97b42 100644 --- a/background/redux-slices/earn.ts +++ b/background/redux-slices/earn.ts @@ -321,7 +321,7 @@ const earnSlice = createSlice({ reducers: { saveSignature: ( state, - { payload: { r, s, v, deadline } }: { payload: Signature } + { payload: { r, s, v, deadline } }: { payload: Signature }, ) => ({ ...state, signature: { r, s, v, deadline }, @@ -362,7 +362,7 @@ const earnSlice = createSlice({ availableVaults: state.availableVaults.map((availableVault) => { const currentVault = payload.find( (updatedVault) => - availableVault.vaultAddress === updatedVault.vaultAddress + availableVault.vaultAddress === updatedVault.vaultAddress, ) return currentVault || availableVault }), @@ -374,7 +374,7 @@ const earnSlice = createSlice({ state, { payload, - }: { payload: { contractAddress: HexString; allowance: number } } + }: { payload: { contractAddress: HexString; allowance: number } }, ) => { const { contractAddress, allowance } = payload return { @@ -421,7 +421,7 @@ export const updateVaults = createBackgroundAsyncThunk( const userLockedValue: BigNumber = await vaultContract.balanceOf(account) const yearnVaultContract = await getContract( vault.yearnVault, - YEARN_VAULT_ABI + YEARN_VAULT_ABI, ) const pricePerShare = await yearnVaultContract.pricePerShare() const yearnVaultDecimals = await yearnVaultContract.decimals() @@ -430,7 +430,7 @@ export const updateVaults = createBackgroundAsyncThunk( .div(BigNumber.from("10").pow(yearnVaultDecimals)) const totalSupply: BigNumber = await vaultContract.getTVL() const newTotalTVL = totalSupply.div( - BigNumber.from("10").pow(yearnVaultDecimals) + BigNumber.from("10").pow(yearnVaultDecimals), ) const earned: BigNumber = await vaultContract.earned(account) @@ -445,12 +445,12 @@ export const updateVaults = createBackgroundAsyncThunk( const userTVL = enrichAssetAmountWithMainCurrencyValues( { amount: newUserLockedValue.toBigInt(), asset: vault.asset }, pricePoint, - 2 + 2, ) const totalTVL = enrichAssetAmountWithMainCurrencyValues( { amount: newTotalTVL.toBigInt(), asset: vault.asset }, pricePoint, - 2 + 2, ) // TODO Check if management fee can change, if not => hardcode it @@ -475,7 +475,7 @@ export const updateVaults = createBackgroundAsyncThunk( const updatedVaults = await Promise.all(vaultsWithNewValues) dispatch(updateVaultsStats(updatedVaults)) return updatedVaults - } + }, ) export const vaultWithdraw = createBackgroundAsyncThunk( @@ -491,7 +491,7 @@ export const vaultWithdraw = createBackgroundAsyncThunk( if (receipt.status === 1) { dispatch(updateVaults([vault])) } - } + }, ) export const vaultDeposit = createBackgroundAsyncThunk( @@ -505,7 +505,7 @@ export const vaultDeposit = createBackgroundAsyncThunk( amount: string tokenAddress: HexString }, - { getState, dispatch } + { getState, dispatch }, ) => { dispatch(depositProcess(false)) const provider = getProvider() @@ -532,7 +532,7 @@ export const vaultDeposit = createBackgroundAsyncThunk( ethers.BigNumber.from(signature.deadline), signature.v, signature.r, - signature.s + signature.s, ) if (isEnabled(FeatureFlags.USE_MAINNET_FORK)) { depositTransactionData.gasLimit = BigNumber.from(850000) // for mainnet fork only @@ -556,7 +556,7 @@ export const vaultDeposit = createBackgroundAsyncThunk( dispatch(currentlyDepositing(false)) dispatch(dispatch(depositError(true))) } - } + }, ) export const claimVaultRewards = createBackgroundAsyncThunk( @@ -568,20 +568,20 @@ export const claimVaultRewards = createBackgroundAsyncThunk( const vaultContract = new ethers.Contract( vault.vaultAddress, VAULT_ABI, - signer + signer, ) const tx = await vaultContract.functions["getReward()"]() const response = signer.sendTransaction(tx) await tx.wait(response) dispatch(updateVaults([vault])) - } + }, ) export const approveApprovalTarget = createBackgroundAsyncThunk( "earn/approveApprovalTarget", async ( tokenContractAddress: HexString, - { dispatch } + { dispatch }, ): Promise => { dispatch(currentlyApproving(true)) const provider = getProvider() @@ -592,7 +592,7 @@ export const approveApprovalTarget = createBackgroundAsyncThunk( const approvalTransactionData = await assetContract.populateTransaction.approve( APPROVAL_TARGET_CONTRACT_ADDRESS, - ethers.constants.MaxUint256 + ethers.constants.MaxUint256, ) try { if (isEnabled(FeatureFlags.USE_MAINNET_FORK)) { @@ -606,7 +606,7 @@ export const approveApprovalTarget = createBackgroundAsyncThunk( dispatch(currentlyApproving(false)) return undefined } - } + }, ) export const checkApprovalTargetApproval = createBackgroundAsyncThunk( @@ -617,11 +617,11 @@ export const checkApprovalTargetApproval = createBackgroundAsyncThunk( try { const allowance: BigNumber = await assetContract.allowance( signerAddress, - APPROVAL_TARGET_CONTRACT_ADDRESS + APPROVAL_TARGET_CONTRACT_ADDRESS, ) const amount = fromFixedPointNumber( { amount: allowance.toBigInt(), decimals: 18 }, - 2 + 2, ) return { contractAddress: tokenContractAddress, @@ -630,7 +630,7 @@ export const checkApprovalTargetApproval = createBackgroundAsyncThunk( } catch (err) { return undefined } - } + }, ) export const permitVaultDeposit = createBackgroundAsyncThunk( @@ -645,7 +645,7 @@ export const permitVaultDeposit = createBackgroundAsyncThunk( amount: string tokenAddress: HexString }, - { dispatch } + { dispatch }, ) => { const provider = getProvider() const signer = provider.getSigner() @@ -656,7 +656,7 @@ export const permitVaultDeposit = createBackgroundAsyncThunk( const ApprovalTargetContract = await getContract( APPROVAL_TARGET_CONTRACT_ADDRESS, - APPROVAL_TARGET_ABI + APPROVAL_TARGET_ABI, ) const timestamp = await getCurrentTimestamp() @@ -697,7 +697,7 @@ export const permitVaultDeposit = createBackgroundAsyncThunk( dispatch(earnSlice.actions.saveSignature({ r, s, v, deadline })) dispatch(depositProcess(true)) - } + }, ) export const selectApprovalTargetApprovals = createSelector( (state: { earn?: EarnState | undefined }) => { @@ -706,22 +706,22 @@ export const selectApprovalTargetApprovals = createSelector( } return undefined }, - (approvals) => approvals + (approvals) => approvals, ) export const selectCurrentlyApproving = createSelector( (state: { earn: EarnState }): EarnState => state.earn, - (earnState: EarnState) => earnState?.currentlyApproving + (earnState: EarnState) => earnState?.currentlyApproving, ) export const selectCurrentlyDepositing = createSelector( (state: { earn: EarnState }): EarnState => state.earn, - (earnState: EarnState) => earnState.currentlyDepositing + (earnState: EarnState) => earnState.currentlyDepositing, ) export const selectAvailableVaults = createSelector( (state: { earn: EarnState }): EarnState => state.earn, - (earnState: EarnState) => earnState.availableVaults + (earnState: EarnState) => earnState.availableVaults, ) export const selectSignature = createSelector( @@ -736,20 +736,20 @@ export const selectSignature = createSelector( return earnState.signature } return undefined - } + }, ) export const selectEarnInputAmount = createSelector( (state: { earn: EarnState }): EarnState => state.earn, - (earnState: EarnState) => earnState.inputAmount + (earnState: EarnState) => earnState.inputAmount, ) export const selectDepositingProcess = createSelector( (state: { earn: EarnState }): EarnState => state.earn, - (earnState: EarnState) => earnState.depositingProcess + (earnState: EarnState) => earnState.depositingProcess, ) export const selectIsVaultDataStale = createSelector( (state: { earn: EarnState }): EarnState => state.earn, - (earnState: EarnState) => earnState.isVaultDataStale + (earnState: EarnState) => earnState.isVaultDataStale, ) diff --git a/background/redux-slices/internal-signer.ts b/background/redux-slices/internal-signer.ts index 16c6bef756..5aaf6ee65a 100644 --- a/background/redux-slices/internal-signer.ts +++ b/background/redux-slices/internal-signer.ts @@ -47,7 +47,7 @@ export const importSigner = createBackgroundAsyncThunk( "internalSigner/importSigner", async ( signerRaw: SignerImportMetadata, - { getState, dispatch, extra: { main } } + { getState, dispatch, extra: { main } }, ): Promise<{ success: boolean; errorMessage?: string }> => { const address = await main.importSigner(signerRaw) @@ -66,11 +66,11 @@ export const importSigner = createBackgroundAsyncThunk( setNewSelectedAccount({ address, network: ui.selectedAccount.network, - }) + }), ) return { success: true } - } + }, ) const internalSignerSlice = createSlice({ @@ -89,7 +89,7 @@ const internalSignerSlice = createSlice({ keyrings: Keyring[] metadata: { [keyringId: string]: { source: SignerImportSource } } } - } + }, ) => { // When the InternalSigner service is locked, we receive `updateInternalSigners` with // `privateKeys` and `keyrings` being empty lists as the InternalSigner service clears @@ -128,45 +128,45 @@ export const generateNewKeyring = createBackgroundAsyncThunk( "internalSigner/generateNewKeyring", async (path?: string) => { await emitter.emit("generateNewKeyring", path) - } + }, ) export const deriveAddress = createBackgroundAsyncThunk( "internalSigner/deriveAddress", async (id: string) => { await emitter.emit("deriveAddress", id) - } + }, ) export const unlockInternalSigners = createBackgroundAsyncThunk( "internalSigner/unlockInternalSigners", async (password: string, { extra: { main } }) => ({ success: await main.unlockInternalSigners(password), - }) + }), ) export const lockInternalSigners = createBackgroundAsyncThunk( "internalSigner/lockInternalSigners", async () => { await emitter.emit("lockInternalSigners") - } + }, ) export const createPassword = createBackgroundAsyncThunk( "internalSigner/createPassword", async (password: string) => { await emitter.emit("createPassword", password) - } + }, ) export const exportMnemonic = createBackgroundAsyncThunk( "internalSigner/exportMnemonic", async (address: HexString, { extra: { main } }) => - main.exportMnemonic(address) + main.exportMnemonic(address), ) export const exportPrivateKey = createBackgroundAsyncThunk( "internalSigner/exportPrivateKey", async (address: HexString, { extra: { main } }) => - main.exportPrivateKey(address) + main.exportPrivateKey(address), ) diff --git a/background/redux-slices/ledger.ts b/background/redux-slices/ledger.ts index c0ea3f573f..b661853642 100644 --- a/background/redux-slices/ledger.ts +++ b/background/redux-slices/ledger.ts @@ -76,7 +76,7 @@ const ledgerSlice = createSlice({ }, addLedgerDevice: ( immerState, - { payload: deviceID }: { payload: string } + { payload: deviceID }: { payload: string }, ) => { /* FIXME: devices/accounts are kept in the state even if not tracked */ if (deviceID in immerState.devices) return @@ -90,7 +90,7 @@ const ledgerSlice = createSlice({ }, setCurrentDevice: ( immerState, - { payload: deviceID }: { payload: string } + { payload: deviceID }: { payload: string }, ) => { if (!(deviceID in immerState.devices)) return immerState.currentDeviceID = deviceID @@ -111,7 +111,7 @@ const ledgerSlice = createSlice({ isArbitraryDataSigningEnabled: boolean displayDetails: DisplayDetails | undefined } - } + }, ) => { if ( immerState.currentDeviceID === deviceID && @@ -130,7 +130,7 @@ const ledgerSlice = createSlice({ immerState, { payload: { deviceID, path }, - }: { payload: { deviceID: string; path: string } } + }: { payload: { deviceID: string; path: string } }, ) => { const device = immerState.devices[deviceID] if (!device) return @@ -149,7 +149,7 @@ const ledgerSlice = createSlice({ payload: { deviceID, path }, }: { payload: { deviceID: string; path: string } - } + }, ) => { const device = immerState.devices[deviceID] if (!device) return @@ -161,7 +161,7 @@ const ledgerSlice = createSlice({ immerState, { payload: { deviceID, path }, - }: { payload: { deviceID: string; path: string } } + }: { payload: { deviceID: string; path: string } }, ) => { const device = immerState.devices[deviceID] if (!device) return @@ -175,7 +175,7 @@ const ledgerSlice = createSlice({ payload: { deviceID, path, address }, }: { payload: { deviceID: string; path: string; address: string } - } + }, ) => { const device = immerState.devices[deviceID] if (!device) return @@ -194,7 +194,7 @@ const ledgerSlice = createSlice({ balance: string network: EVMNetwork } - } + }, ) => { const device = immerState.devices[deviceID] if (!device) return @@ -204,7 +204,7 @@ const ledgerSlice = createSlice({ }, setUsbDeviceCount: ( immerState, - { payload: { usbDeviceCount } }: { payload: { usbDeviceCount: number } } + { payload: { usbDeviceCount } }: { payload: { usbDeviceCount: number } }, ) => { immerState.usbDeviceCount = usbDeviceCount }, @@ -238,14 +238,14 @@ export const connectLedger = createBackgroundAsyncThunk( dispatch(ledgerSlice.actions.addLedgerDevice(deviceID)) dispatch(ledgerSlice.actions.setCurrentDevice(deviceID)) - } + }, ) export const fetchAddress = createBackgroundAsyncThunk( "ledger/fetchAddress", async ( { deviceID, path }: { deviceID: string; path: string }, - { dispatch, extra: { main } } + { dispatch, extra: { main } }, ) => { try { dispatch(ledgerSlice.actions.setFetchingAddress({ deviceID, path })) @@ -254,7 +254,7 @@ export const fetchAddress = createBackgroundAsyncThunk( } catch (err) { dispatch(ledgerSlice.actions.resetLedgerState()) } - } + }, ) export const fetchBalance = createBackgroundAsyncThunk( @@ -266,7 +266,7 @@ export const fetchBalance = createBackgroundAsyncThunk( address, network, }: { deviceID: string; path: string; address: string; network: EVMNetwork }, - { dispatch, extra: { main } } + { dispatch, extra: { main } }, ) => { dispatch(ledgerSlice.actions.setFetchingBalance({ deviceID, path })) const amount = await main.getAccountEthBalanceUncached({ @@ -276,12 +276,12 @@ export const fetchBalance = createBackgroundAsyncThunk( const decimalDigits = 3 const balance = enrichAssetAmountWithDecimalValues( { amount, asset: network.baseAsset }, - decimalDigits + decimalDigits, ).localizedDecimalAmount dispatch( - ledgerSlice.actions.resolveBalance({ deviceID, path, balance, network }) + ledgerSlice.actions.resolveBalance({ deviceID, path, balance, network }), ) - } + }, ) export const importLedgerAccounts = createBackgroundAsyncThunk( @@ -292,8 +292,8 @@ export const importLedgerAccounts = createBackgroundAsyncThunk( }: { accounts: Array<{ path: string; address: string }> }, - { extra: { main } } + { extra: { main } }, ) => { await main.importLedgerAccounts(accounts) - } + }, ) diff --git a/background/redux-slices/migrations/index.ts b/background/redux-slices/migrations/index.ts index 5e8a1dcfe1..dbd98c5482 100644 --- a/background/redux-slices/migrations/index.ts +++ b/background/redux-slices/migrations/index.ts @@ -90,7 +90,7 @@ const allMigrations: { [targetVersion: string]: Migration } = { */ export function migrateReduxState( previousState: Record, - previousVersion?: number + previousVersion?: number, ): Record { const resolvedVersion = previousVersion ?? 1 let migratedState: Record = previousState @@ -103,7 +103,7 @@ export function migrateReduxState( migratedState = outstandingMigrations.reduce( (state: Record, migration: Migration) => migration(state), - migratedState + migratedState, ) } diff --git a/background/redux-slices/migrations/to-12.ts b/background/redux-slices/migrations/to-12.ts index a90f94374e..58f46158d5 100644 --- a/background/redux-slices/migrations/to-12.ts +++ b/background/redux-slices/migrations/to-12.ts @@ -56,12 +56,12 @@ export default (prevState: Record): NewState => { ? { [ETHEREUM.chainID]: accountData.balance } : {}, }, - ] - ) + ], + ), ), }, - ] - ) + ], + ), ), }, } diff --git a/background/redux-slices/migrations/to-13.ts b/background/redux-slices/migrations/to-13.ts index 24735da3be..aecb88f7f5 100644 --- a/background/redux-slices/migrations/to-13.ts +++ b/background/redux-slices/migrations/to-13.ts @@ -97,7 +97,7 @@ export default (state: Record): ActivitiesEntityState => { // eslint-disable-next-line no-param-reassign typedState.activities[address][networkID].entities[transactionHash] = pick(originalTx, transactionPropertiesForUI) - } + }, ) }) }) diff --git a/background/redux-slices/migrations/to-14.ts b/background/redux-slices/migrations/to-14.ts index 3495855d80..d40c28aace 100644 --- a/background/redux-slices/migrations/to-14.ts +++ b/background/redux-slices/migrations/to-14.ts @@ -3,7 +3,7 @@ // the IndexingService. export default ( - prevState: Record + prevState: Record, ): Record => { const { assets: _, ...newState } = prevState diff --git a/background/redux-slices/migrations/to-16.ts b/background/redux-slices/migrations/to-16.ts index 94d359c9d4..def364e4a8 100644 --- a/background/redux-slices/migrations/to-16.ts +++ b/background/redux-slices/migrations/to-16.ts @@ -75,7 +75,7 @@ export default (prevState: Record): NewState => { // eslint-disable-next-line @typescript-eslint/no-unused-vars (_) => { Object.values( - typedPrevState.activities[address][chainID].entities + typedPrevState.activities[address][chainID].entities, ).forEach((activityItem) => { const { annotation } = activityItem if ( @@ -113,7 +113,7 @@ export default (prevState: Record): NewState => { } } }) - } + }, ) }) }) diff --git a/background/redux-slices/migrations/to-19.ts b/background/redux-slices/migrations/to-19.ts index f2be1db7c5..ca6cdca553 100644 --- a/background/redux-slices/migrations/to-19.ts +++ b/background/redux-slices/migrations/to-19.ts @@ -1,5 +1,5 @@ export default ( - prevState: Record + prevState: Record, ): Record => { const { activities: _, ...newState } = prevState diff --git a/background/redux-slices/migrations/to-2.ts b/background/redux-slices/migrations/to-2.ts index 14970694dc..118f602807 100644 --- a/background/redux-slices/migrations/to-2.ts +++ b/background/redux-slices/migrations/to-2.ts @@ -17,7 +17,7 @@ type OldState = { } export default ( - prevState: Record + prevState: Record, ): Record => { const newState = { ...prevState } const addressNetwork = (prevState as OldState)?.ui?.currentAccount diff --git a/background/redux-slices/migrations/to-22.ts b/background/redux-slices/migrations/to-22.ts index 3495855d80..d40c28aace 100644 --- a/background/redux-slices/migrations/to-22.ts +++ b/background/redux-slices/migrations/to-22.ts @@ -3,7 +3,7 @@ // the IndexingService. export default ( - prevState: Record + prevState: Record, ): Record => { const { assets: _, ...newState } = prevState diff --git a/background/redux-slices/migrations/to-23.ts b/background/redux-slices/migrations/to-23.ts index 6a8b2f9264..305aeb2573 100644 --- a/background/redux-slices/migrations/to-23.ts +++ b/background/redux-slices/migrations/to-23.ts @@ -39,12 +39,12 @@ export default (oldState: Record): State => { ...accountData, balances: Object.fromEntries( Object.entries(accountData.balances ?? {}).filter( - ([symbol]) => symbol !== "ETH" // remove duplicate with WETH - ) + ([symbol]) => symbol !== "ETH", // remove duplicate with WETH + ), ), }, - ] - ) + ], + ), ), }, }, diff --git a/background/redux-slices/migrations/to-24.ts b/background/redux-slices/migrations/to-24.ts index efe0ad8b99..0cf93b6651 100644 --- a/background/redux-slices/migrations/to-24.ts +++ b/background/redux-slices/migrations/to-24.ts @@ -12,7 +12,7 @@ type NewState = { } export default ( - prevState: Record + prevState: Record, ): Record => { const { networks, ...newState } = prevState as OldState diff --git a/background/redux-slices/migrations/to-26.ts b/background/redux-slices/migrations/to-26.ts index c339cf42b0..7fa06fef33 100644 --- a/background/redux-slices/migrations/to-26.ts +++ b/background/redux-slices/migrations/to-26.ts @@ -11,7 +11,7 @@ type State = { } export default ( - prevState: Record + prevState: Record, ): Record => { const typedPrevState = prevState as State diff --git a/background/redux-slices/migrations/to-29.ts b/background/redux-slices/migrations/to-29.ts index 19b79987ba..16636f3f71 100644 --- a/background/redux-slices/migrations/to-29.ts +++ b/background/redux-slices/migrations/to-29.ts @@ -2,7 +2,7 @@ // base assets https://github.com/tahowallet/extension/issues/3445 export default ( - prevState: Record + prevState: Record, ): Record => { const { assets: _, ...newState } = prevState diff --git a/background/redux-slices/migrations/to-3.ts b/background/redux-slices/migrations/to-3.ts index 3495855d80..d40c28aace 100644 --- a/background/redux-slices/migrations/to-3.ts +++ b/background/redux-slices/migrations/to-3.ts @@ -3,7 +3,7 @@ // the IndexingService. export default ( - prevState: Record + prevState: Record, ): Record => { const { assets: _, ...newState } = prevState diff --git a/background/redux-slices/migrations/to-31.ts b/background/redux-slices/migrations/to-31.ts index a7b514891a..395f6fafad 100644 --- a/background/redux-slices/migrations/to-31.ts +++ b/background/redux-slices/migrations/to-31.ts @@ -53,7 +53,7 @@ export default (prevState: Record): NewState => { // Clear all accounts cached balances account.balances = {} } - }) + }), ) return { ...typedPrevState } diff --git a/background/redux-slices/migrations/to-35.ts b/background/redux-slices/migrations/to-35.ts index fc989f4865..b3ae07d74d 100644 --- a/background/redux-slices/migrations/to-35.ts +++ b/background/redux-slices/migrations/to-35.ts @@ -57,7 +57,7 @@ export default (prevState: Record): NewState => { // Clear all accounts cached balances account.balances = {} } - }) + }), ) return { diff --git a/background/redux-slices/migrations/to-4.ts b/background/redux-slices/migrations/to-4.ts index 2fc70507d8..71808af224 100644 --- a/background/redux-slices/migrations/to-4.ts +++ b/background/redux-slices/migrations/to-4.ts @@ -21,7 +21,7 @@ type NetworkState = { } export default ( - prevState: Record + prevState: Record, ): Record => { const oldState = prevState as OldState @@ -32,8 +32,8 @@ export default ( blockHeight: Math.max( ...Object.keys(oldState.account?.blocks ?? {}).map((s) => - parseInt(s, 10) - ) + parseInt(s, 10), + ), ) || null, }, }, diff --git a/background/redux-slices/migrations/to-7.ts b/background/redux-slices/migrations/to-7.ts index 59f3df1996..2436379777 100644 --- a/background/redux-slices/migrations/to-7.ts +++ b/background/redux-slices/migrations/to-7.ts @@ -29,7 +29,7 @@ type OldState = { } export default ( - prevState: Record + prevState: Record, ): Record => { const oldState = prevState as OldState const { activities } = oldState diff --git a/background/redux-slices/migrations/to-8.ts b/background/redux-slices/migrations/to-8.ts index bd578ea1d3..c8084f2229 100644 --- a/background/redux-slices/migrations/to-8.ts +++ b/background/redux-slices/migrations/to-8.ts @@ -23,7 +23,7 @@ type NewAccountState = { } export default ( - prevState: Record + prevState: Record, ): Record => { const { accountsData: oldAccountsData, ...oldAccountState } = prevState.account as OldAccountState @@ -36,7 +36,7 @@ export default ( Object.entries(oldAccountsData).map(([address, data]) => [ normalizeEVMAddress(address), data, - ]) + ]), ), }, }, diff --git a/background/redux-slices/networks.ts b/background/redux-slices/networks.ts index 6b6037fba4..41e6098e4b 100644 --- a/background/redux-slices/networks.ts +++ b/background/redux-slices/networks.ts @@ -37,7 +37,7 @@ const networksSlice = createSlice({ reducers: { blockSeen: ( immerState, - { payload: blockPayload }: { payload: AnyEVMBlock } + { payload: blockPayload }: { payload: AnyEVMBlock }, ) => { const block = blockPayload as EIP1559Block @@ -93,5 +93,5 @@ export const removeCustomChain = createBackgroundAsyncThunk( await dispatch(removeChainBalances(chainID)) return main.removeEVMNetwork(chainID) - } + }, ) diff --git a/background/redux-slices/nfts.ts b/background/redux-slices/nfts.ts index f204dc75c9..df22feaa4f 100644 --- a/background/redux-slices/nfts.ts +++ b/background/redux-slices/nfts.ts @@ -68,7 +68,7 @@ export const emitter = new Emittery() export function updateCollection( acc: NFTsSliceState, - collection: NFTCollection + collection: NFTCollection, ): void { const { id, @@ -101,7 +101,7 @@ export function updateCollection( floorPrice: floorPrice && { value: fromFixedPointNumber( { amount: floorPrice.value, decimals: floorPrice.token.decimals }, - 4 + 4, ), tokenSymbol: floorPrice.token.symbol, }, @@ -111,12 +111,12 @@ export function updateCollection( export function updateFilter( acc: NFTsSliceState, collection: NFTCollection, - type: "accounts" | "collections" + type: "accounts" | "collections", ): void { const { id, name, thumbnailURL, owner } = collection const existingFilterId = acc.filters[type].findIndex( - (obj) => obj.id === (type === "accounts" ? owner : id) + (obj) => obj.id === (type === "accounts" ? owner : id), ) const filter = type === "accounts" @@ -149,7 +149,7 @@ export function updateFilter( export function updateFilters( acc: NFTsSliceState, - collection: NFTCollection + collection: NFTCollection, ): void { const { nftCount } = collection if ((nftCount ?? 0) > 0) { @@ -184,7 +184,7 @@ const NFTsSlice = createSlice({ payload: collections, }: { payload: NFTCollection[] - } + }, ) => { const state: NFTsSliceState = { isReloading: false, @@ -199,7 +199,7 @@ const NFTsSlice = createSlice({ }, updateNFTsCollections: ( immerState, - { payload: collections }: { payload: NFTCollection[] } + { payload: collections }: { payload: NFTCollection[] }, ) => { collections.forEach((collection) => { updateCollection(immerState, collection) @@ -217,7 +217,7 @@ const NFTsSlice = createSlice({ nfts: NFT[] hasNextPage: boolean } - } + }, ) => { const { account: { network, address }, @@ -236,7 +236,7 @@ const NFTsSlice = createSlice({ }, updateIsReloading: ( immerState, - { payload: isReloading }: { payload: boolean } + { payload: isReloading }: { payload: boolean }, ) => { immerState.isReloading = isReloading }, @@ -246,12 +246,12 @@ const NFTsSlice = createSlice({ payload: address, }: { payload: string - } + }, ) => { const normalizedAddress = normalizeEVMAddress(address) immerState.filters.accounts = immerState.filters.accounts.filter( - ({ id }) => id !== address + ({ id }) => id !== address, ) immerState.filters.collections = immerState.filters.collections.flatMap( (collection) => { @@ -261,13 +261,13 @@ const NFTsSlice = createSlice({ : { ...collection, owners: collection.owners.filter( - (owner) => owner !== address + (owner) => owner !== address, ), } } return collection - } + }, ) Object.keys(immerState.nfts).forEach((chainID) => { @@ -276,7 +276,7 @@ const NFTsSlice = createSlice({ }, deleteTransferredNFTs: ( immerState, - { payload: transfers }: { payload: TransferredNFT[] } + { payload: transfers }: { payload: TransferredNFT[] }, ) => { transfers.forEach( ({ id: nftID, chainID, from: address, collectionID }) => { @@ -289,7 +289,7 @@ const NFTsSlice = createSlice({ if (collection) { const hasLastNFT = (collection.nftCount ?? 0) <= 1 const hasCachedTransferredNFT = collection.nfts.some( - (nft) => nft.id === nftID + (nft) => nft.id === nftID, ) // let's update NFT count manually in case of multiple transfers from the same collection @@ -300,18 +300,18 @@ const NFTsSlice = createSlice({ // this is last cached NFT or we know it was the last one owned then remove it from Redux cache immerState.filters.collections = immerState.filters.collections.filter( - ({ id }) => id !== collectionID + ({ id }) => id !== collectionID, ) delete immerState.nfts[chainID][normalizedAddress][collectionID] } else { // there are more NFTs owned in this collection, let's just remove transferred one collection.nfts = collection.nfts.filter( - (nft) => nft.id !== nftID + (nft) => nft.id !== nftID, ) } } } - } + }, ) }, cleanCachedNFTs: (immerState) => { @@ -327,26 +327,26 @@ const NFTsSlice = createSlice({ const reducedList = collection.nfts.slice(0, 2) // leave 2 nfts to avoid unnecessary updates collection.nfts = reducedList } - } - ) - ) + }, + ), + ), ) }, updateCollectionFilter: ( immerState, - { payload: filter }: { payload: Filter } + { payload: filter }: { payload: Filter }, ) => { const idx = immerState.filters.collections.findIndex( - ({ id }) => id === filter.id + ({ id }) => id === filter.id, ) immerState.filters.collections[idx] = filter }, updateAccountFilter: ( immerState, - { payload: filter }: { payload: Filter } + { payload: filter }: { payload: Filter }, ) => { const idx = immerState.filters.accounts.findIndex( - ({ id }) => id === filter.id + ({ id }) => id === filter.id, ) immerState.filters.accounts[idx] = filter }, @@ -374,26 +374,26 @@ export const fetchNFTsFromCollection = createBackgroundAsyncThunk( "nfts/fetchNFTsFromCollection", async (payload: { collectionID: string; account: AddressOnNetwork }) => { await emitter.emit("fetchNFTs", payload) - } + }, ) export const refetchNFTsFromCollection = createBackgroundAsyncThunk( "nfts/refetchNFTsFromCollection", async (payload: { collectionID: string; account: AddressOnNetwork }) => { await emitter.emit("refetchNFTs", payload) - } + }, ) export const fetchMoreNFTsFromCollection = createBackgroundAsyncThunk( "nfts/fetchMoreNFTsFromCollection", async (payload: { collectionID: string; account: AddressOnNetwork }) => { await emitter.emit("fetchMoreNFTs", payload) - } + }, ) export const refetchCollections = createBackgroundAsyncThunk( "nfts/refetchCollections", async () => { await emitter.emit("refetchCollections") - } + }, ) diff --git a/background/redux-slices/prices.ts b/background/redux-slices/prices.ts index e7cc80f1d5..fd071d9f2a 100644 --- a/background/redux-slices/prices.ts +++ b/background/redux-slices/prices.ts @@ -30,15 +30,15 @@ const pricesSlice = createSlice({ reducers: { newPricePoints: ( immerState, - { payload: pricePoints }: { payload: PricePoint[] } + { payload: pricePoints }: { payload: PricePoint[] }, ) => { pricePoints.forEach((pricePoint) => { const fiatCurrency = pricePoint.pair.find((asset) => - FIAT_CURRENCIES_SYMBOL.includes(asset.symbol) + FIAT_CURRENCIES_SYMBOL.includes(asset.symbol), ) const [pricedAsset] = pricePoint.pair.filter( - (asset) => asset !== fiatCurrency + (asset) => asset !== fiatCurrency, ) if (fiatCurrency && isTrustedAsset(pricedAsset)) { @@ -62,7 +62,7 @@ const selectAsset = (_: PricesState, asset: AnyAsset) => asset const selectPairedAssetSymbol = ( _: PricesState, _2: AnyAsset, - pairedAssetSymbol: string + pairedAssetSymbol: string, ) => pairedAssetSymbol /** @@ -82,7 +82,7 @@ export const selectAssetPricePoint = createSelector( pricePoint.pair.filter(({ symbol }) => symbol !== pairedAssetSymbol)[0] const hasRecentPriceData = ( - assetPriceData: AssetPricesMap | undefined + assetPriceData: AssetPricesMap | undefined, ): boolean => !!assetPriceData?.[pairedAssetSymbol] let pricedAsset: AssetPricesMap | undefined @@ -107,7 +107,7 @@ export const selectAssetPricePoint = createSelector( (assetPriceData) => hasRecentPriceData(assetPriceData) && getTargetAssetFromPricePoint(assetPriceData[pairedAssetSymbol]) - .symbol === assetToFind.symbol + .symbol === assetToFind.symbol, ) } @@ -134,7 +134,7 @@ export const selectAssetPricePoint = createSelector( convertFixedPoint( amounts[0], pricePointAssetDecimals, - assetDecimals + assetDecimals, ), amounts[1], ], @@ -146,5 +146,5 @@ export const selectAssetPricePoint = createSelector( // If no matching priced asset was found, return undefined. return undefined - } + }, ) diff --git a/background/redux-slices/selectors/0xSwapSelectors.ts b/background/redux-slices/selectors/0xSwapSelectors.ts index dc37c11b46..0d9bfcde06 100644 --- a/background/redux-slices/selectors/0xSwapSelectors.ts +++ b/background/redux-slices/selectors/0xSwapSelectors.ts @@ -7,12 +7,12 @@ import { RootState } from ".." export const selectLatestQuoteRequest = createSelector( (state: RootState) => state.swap.latestQuoteRequest, - (latestQuoteRequest) => latestQuoteRequest + (latestQuoteRequest) => latestQuoteRequest, ) export const selectInProgressApprovalContract = createSelector( (state: RootState) => state.swap.inProgressApprovalContract, - (approvalInProgress) => approvalInProgress + (approvalInProgress) => approvalInProgress, ) export const selectSwapBuyAssets = createSelector( @@ -27,5 +27,5 @@ export const selectSwapBuyAssets = createSelector( sameNetwork(asset.homeNetwork, currentNetwork)) return isTrustedAsset(asset) && assetIsOnCurrentNetwork - }) + }), ) diff --git a/background/redux-slices/selectors/abilitiesSelectors.ts b/background/redux-slices/selectors/abilitiesSelectors.ts index 144d31cdcd..8a9da60030 100644 --- a/background/redux-slices/selectors/abilitiesSelectors.ts +++ b/background/redux-slices/selectors/abilitiesSelectors.ts @@ -5,33 +5,33 @@ import { filterAbility } from "../utils/abilities-utils" const selectAbilities = createSelector( (state: RootState) => state.abilities, - (abilitiesSlice) => abilitiesSlice.abilities + (abilitiesSlice) => abilitiesSlice.abilities, ) export const selectDescriptionHidden = createSelector( (state: RootState) => state.abilities.hideDescription, - (hideDescription) => hideDescription + (hideDescription) => hideDescription, ) /* Filtering selectors */ const selectAbilityFilter = createSelector( (state: RootState) => state.abilities, - (abilitiesSlice) => abilitiesSlice.filter + (abilitiesSlice) => abilitiesSlice.filter, ) export const selectAbilityFilterState = createSelector( (state: RootState) => state.abilities, - (abilitiesSlice) => abilitiesSlice.filter.state + (abilitiesSlice) => abilitiesSlice.filter.state, ) export const selectAbilityFilterTypes = createSelector( (state: RootState) => state.abilities, - (abilitiesSlice) => abilitiesSlice.filter.types + (abilitiesSlice) => abilitiesSlice.filter.types, ) export const selectAbilityFilterAccounts = createSelector( (state: RootState) => state.abilities, - (abilitiesSlice) => abilitiesSlice.filter.accounts + (abilitiesSlice) => abilitiesSlice.filter.accounts, ) /* Items selectors */ @@ -43,12 +43,12 @@ export const selectFilteredAbilities = createSelector( Object.values(abilities).forEach((addressAbilities) => { activeAbilities.push( ...Object.values(addressAbilities).filter((ability) => - filterAbility(ability, filter) - ) + filterAbility(ability, filter), + ), ) }) return activeAbilities - } + }, ) /* Counting selectors */ @@ -59,5 +59,5 @@ export const selectOpenAbilityCount = createSelector( Object.values(abilities) .flatMap((address) => Object.values(address)) .filter((ability) => filterAbility(ability, { ...filter, state: "open" })) - .length + .length, ) diff --git a/background/redux-slices/selectors/accountsSelectors.ts b/background/redux-slices/selectors/accountsSelectors.ts index 4322c8f51d..bb3a5a1304 100644 --- a/background/redux-slices/selectors/accountsSelectors.ts +++ b/background/redux-slices/selectors/accountsSelectors.ts @@ -55,14 +55,14 @@ const desiredDecimals = { // List of assets by symbol that should be displayed with more decimal places const EXCEPTION_ASSETS_BY_SYMBOL = ["BTC", "sBTC", "WBTC", "tBTC"].map( - (symbol) => symbol.toUpperCase() + (symbol) => symbol.toUpperCase(), ) // TODO Make this a setting. export const userValueDustThreshold = 2 const shouldForciblyDisplayAsset = ( - assetAmount: CompleteAssetAmount + assetAmount: CompleteAssetAmount, ) => { const isDoggo = !isEnabled(FeatureFlags.HIDE_TOKEN_FEATURES) && @@ -76,7 +76,7 @@ export function determineAssetDisplayAndVerify( { hideDust, showUnverifiedAssets, - }: { hideDust: boolean; showUnverifiedAssets: boolean } + }: { hideDust: boolean; showUnverifiedAssets: boolean }, ): { displayAsset: boolean; trustedAsset: boolean } { const isTrusted = isTrustedAsset(assetAmount.asset) @@ -107,7 +107,7 @@ const computeCombinedAssetAmountsData = ( mainCurrencySymbol: string, hideDust: boolean, showUnverifiedAssets: boolean, - prices: PricesState + prices: PricesState, ): { allAssetAmounts: CompleteAssetAmount[] combinedAssetAmounts: CompleteAssetAmount[] @@ -121,26 +121,26 @@ const computeCombinedAssetAmountsData = ( const assetPricePoint = selectAssetPricePoint( prices, assetAmount.asset, - mainCurrencySymbol + mainCurrencySymbol, ) const mainCurrencyEnrichedAssetAmount = enrichAssetAmountWithMainCurrencyValues( assetAmount, assetPricePoint, - desiredDecimals.default + desiredDecimals.default, ) const fullyEnrichedAssetAmount = enrichAssetAmountWithDecimalValues( mainCurrencyEnrichedAssetAmount, heuristicDesiredDecimalsForUnitPrice( EXCEPTION_ASSETS_BY_SYMBOL.includes( - assetAmount.asset.symbol.toUpperCase() + assetAmount.asset.symbol.toUpperCase(), ) ? desiredDecimals.greater : desiredDecimals.default, - mainCurrencyEnrichedAssetAmount.unitPrice - ) + mainCurrencyEnrichedAssetAmount.unitPrice, + ), ) return fullyEnrichedAssetAmount @@ -190,7 +190,7 @@ const computeCombinedAssetAmountsData = ( (acc, assetAmount) => { const { displayAsset, trustedAsset } = determineAssetDisplayAndVerify( assetAmount, - { hideDust, showUnverifiedAssets } + { hideDust, showUnverifiedAssets }, ) if (displayAsset) { @@ -202,7 +202,7 @@ const computeCombinedAssetAmountsData = ( } return acc }, - { combinedAssetAmounts: [], unverifiedAssetAmounts: [] } + { combinedAssetAmounts: [], unverifiedAssetAmounts: [] }, ) // Keep a tally of the total user value; undefined if no main currency data @@ -246,7 +246,7 @@ export const selectAccountAndTimestampedActivities = createSelector( prices, hideDust, showUnverifiedAssets, - mainCurrencySymbol + mainCurrencySymbol, ) => { const { combinedAssetAmounts, totalMainCurrencyAmount } = computeCombinedAssetAmountsData( @@ -255,7 +255,7 @@ export const selectAccountAndTimestampedActivities = createSelector( mainCurrencySymbol, hideDust, showUnverifiedAssets, - prices + prices, ) return { @@ -265,13 +265,13 @@ export const selectAccountAndTimestampedActivities = createSelector( ? formatCurrencyAmount( mainCurrencySymbol, totalMainCurrencyAmount, - desiredDecimals.default + desiredDecimals.default, ) : undefined, }, accountData: account.accountsData, } - } + }, ) export const selectCurrentAccountBalances = createSelector( getCurrentAccountState, @@ -286,14 +286,14 @@ export const selectCurrentAccountBalances = createSelector( prices, hideDust, showUnverifiedAssets, - mainCurrencySymbol + mainCurrencySymbol, ) => { if (typeof currentAccount === "undefined" || currentAccount === "loading") { return undefined } const assetAmounts = Object.values(currentAccount.balances).map( - (balance) => balance.assetAmount + (balance) => balance.assetAmount, ) const { @@ -307,7 +307,7 @@ export const selectCurrentAccountBalances = createSelector( mainCurrencySymbol, hideDust, showUnverifiedAssets, - prices + prices, ) return { @@ -318,11 +318,11 @@ export const selectCurrentAccountBalances = createSelector( ? formatCurrencyAmount( mainCurrencySymbol, totalMainCurrencyAmount, - desiredDecimals.default + desiredDecimals.default, ) : undefined, } - } + }, ) export type AccountTotal = AddressOnNetwork & { @@ -370,7 +370,7 @@ const getAccountType = ( signer: AccountSigner, addressSources: { [address: string]: SignerImportSource - } + }, ): AccountType => { switch (true) { case signerTypeToAccountType[signer.type] === AccountType.ReadOnly: @@ -387,14 +387,14 @@ const getAccountType = ( const getTotalBalance = ( accountBalances: { [assetSymbol: string]: AccountBalance }, prices: PricesState, - mainCurrencySymbol: string + mainCurrencySymbol: string, ) => Object.values(accountBalances) .map(({ assetAmount }) => { const assetPricePoint = selectAssetPricePoint( prices, assetAmount.asset, - mainCurrencySymbol + mainCurrencySymbol, ) if (typeof assetPricePoint === "undefined") { @@ -403,7 +403,7 @@ const getTotalBalance = ( const convertedAmount = convertAssetAmountViaPricePoint( assetAmount, - assetPricePoint + assetPricePoint, ) if (typeof convertedAmount === "undefined") { @@ -412,14 +412,14 @@ const getTotalBalance = ( return assetAmountToDesiredDecimals( convertedAmount, - desiredDecimals.default + desiredDecimals.default, ) }) .reduce((total, assetBalance) => total + assetBalance, 0) function getNetworkAccountTotalsByCategory( state: RootState, - network: EVMNetwork + network: EVMNetwork, ): CategorizedAccountTotals { const accounts = getAccountState(state) const prices = getPricesState(state) @@ -440,7 +440,7 @@ function getNetworkAccountTotalsByCategory( const accountType = getAccountType( address, accountSigner, - sourcesByAddress + sourcesByAddress, ) if (accountData === "loading") { @@ -468,7 +468,7 @@ function getNetworkAccountTotalsByCategory( localizedTotalMainCurrencyAmount: formatCurrencyAmount( mainCurrencySymbol, getTotalBalance(accountData.balances, prices, mainCurrencySymbol), - desiredDecimals.default + desiredDecimals.default, ), } }) @@ -480,14 +480,14 @@ function getNetworkAccountTotalsByCategory( accountTotal, ], }), - {} + {}, ) } const selectNetworkAccountTotalsByCategoryResolver = createSelector( (state: RootState) => state, (state) => (network: EVMNetwork) => - getNetworkAccountTotalsByCategory(state, network) + getNetworkAccountTotalsByCategory(state, network), ) export const selectCurrentNetworkAccountTotalsByCategory = createSelector( @@ -495,15 +495,15 @@ export const selectCurrentNetworkAccountTotalsByCategory = createSelector( selectCurrentNetwork, ( selectNetworkAccountTotalsByCategory, - currentNetwork + currentNetwork, ): CategorizedAccountTotals => - selectNetworkAccountTotalsByCategory(currentNetwork) + selectNetworkAccountTotalsByCategory(currentNetwork), ) export const selectAccountTotals = createSelector( selectCurrentNetworkAccountTotalsByCategory, (selectNetworkAccountTotalsByCategory): AccountTotal[] => - Object.values(selectNetworkAccountTotalsByCategory).flat() + Object.values(selectNetworkAccountTotalsByCategory).flat(), ) export type AccountTotalList = { @@ -528,7 +528,7 @@ export const selectAccountTotalsForOverview = createSelector( .filter( ([chainID, accounts]) => typeof accounts !== "undefined" && - !TEST_NETWORK_BY_CHAIN_ID.has(chainID) + !TEST_NETWORK_BY_CHAIN_ID.has(chainID), ) .forEach(([chainID, accounts]) => Object.entries(accounts).forEach(([address, accountData]) => { @@ -544,42 +544,42 @@ export const selectAccountTotalsForOverview = createSelector( accountsTotal[normalizedAddress].totals[chainID] = getTotalBalance( accountData.balances, pricesState, - mainCurrencySymbol + mainCurrencySymbol, ) - }) + }), ) return accountsTotal - } + }, ) function findAccountTotal( categorizedAccountTotals: CategorizedAccountTotals, - accountAddressOnNetwork: AddressOnNetwork + accountAddressOnNetwork: AddressOnNetwork, ): AccountTotal | undefined { return Object.values(categorizedAccountTotals) .flat() .find( ({ address, network }) => sameEVMAddress(address, accountAddressOnNetwork.address) && - sameNetwork(network, accountAddressOnNetwork.network) + sameNetwork(network, accountAddressOnNetwork.network), ) } export const getAccountTotal = ( state: RootState, - accountAddressOnNetwork: AddressOnNetwork + accountAddressOnNetwork: AddressOnNetwork, ): AccountTotal | undefined => findAccountTotal( selectNetworkAccountTotalsByCategoryResolver(state)( - accountAddressOnNetwork.network + accountAddressOnNetwork.network, ), - accountAddressOnNetwork + accountAddressOnNetwork, ) export const getAccountNameOnChain = ( state: RootState, - accountAddressOnNetwork: AddressOnNetwork + accountAddressOnNetwork: AddressOnNetwork, ): string | undefined => { const account = getAccountTotal(state, accountAddressOnNetwork) @@ -592,7 +592,7 @@ export const selectCurrentAccountTotal = createSelector( selectCurrentNetworkAccountTotalsByCategory, selectCurrentAccount, (categorizedAccountTotals, currentAccount): AccountTotal | undefined => - findAccountTotal(categorizedAccountTotals, currentAccount) + findAccountTotal(categorizedAccountTotals, currentAccount), ) export const getAllAddresses = createSelector(getAccountState, (account) => @@ -603,30 +603,30 @@ export const getAllAddresses = createSelector(getAccountState, (account) => ? [ ...new Set( Object.values(account.accountsData.evm).flatMap((chainAddresses) => - Object.keys(chainAddresses) - ) + Object.keys(chainAddresses), + ), ), ] - : [] + : [], ) export const getAddressCount = createSelector( getAllAddresses, - (allAddresses) => allAddresses.length + (allAddresses) => allAddresses.length, ) export const getAllNetworks = createSelector(getAccountState, (account) => Object.keys(account.accountsData.evm).map( - (chainID) => NETWORK_BY_CHAIN_ID[chainID] - ) + (chainID) => NETWORK_BY_CHAIN_ID[chainID], + ), ) export const getNetworkCountForOverview = createSelector( getAccountState, (account) => Object.keys(account.accountsData.evm).filter( - (chainID) => !TEST_NETWORK_BY_CHAIN_ID.has(chainID) - ).length + (chainID) => !TEST_NETWORK_BY_CHAIN_ID.has(chainID), + ).length, ) export const getTotalBalanceForOverview = createSelector( @@ -638,8 +638,8 @@ export const getTotalBalanceForOverview = createSelector( Object.values(accountsTotal).reduce( (total, { totals }) => Object.values(totals).reduce((sum, balance) => sum + balance) + total, - 0 + 0, ), - 2 - ) + 2, + ), ) diff --git a/background/redux-slices/selectors/activitiesSelectors.ts b/background/redux-slices/selectors/activitiesSelectors.ts index ad783873fd..aa83d8d5bd 100644 --- a/background/redux-slices/selectors/activitiesSelectors.ts +++ b/background/redux-slices/selectors/activitiesSelectors.ts @@ -7,13 +7,13 @@ export const selectCurrentAccountActivities = createSelector( selectCurrentAccount, selectCurrentNetwork, (activities, account, network) => - activities?.[account.address]?.[network.chainID] ?? [] + activities?.[account.address]?.[network.chainID] ?? [], ) export const selectActivitesHashesForEnrichment = createSelector( selectCurrentAccountActivities, (currentActivities) => currentActivities.flatMap((activity) => - "type" in activity ? [] : activity.hash - ) + "type" in activity ? [] : activity.hash, + ), ) diff --git a/background/redux-slices/selectors/dappSelectors.ts b/background/redux-slices/selectors/dappSelectors.ts index c0eb5f21fb..cf3d682afb 100644 --- a/background/redux-slices/selectors/dappSelectors.ts +++ b/background/redux-slices/selectors/dappSelectors.ts @@ -9,19 +9,19 @@ export const getProviderBridgeState = (state: RootState): DAppPermissionState => export const selectPermissionRequests = createSelector( getProviderBridgeState, - (slice: DAppPermissionState) => Object.values(slice.permissionRequests) + (slice: DAppPermissionState) => Object.values(slice.permissionRequests), ) export const selectPendingPermissionRequests = createSelector( selectPermissionRequests, (permissionRequests) => - permissionRequests.filter((p) => p.state === "request") + permissionRequests.filter((p) => p.state === "request"), ) export const selectCurrentPendingPermission = createSelector( selectPendingPermissionRequests, (permissionRequests) => - permissionRequests.length > 0 ? permissionRequests[0] : undefined + permissionRequests.length > 0 ? permissionRequests[0] : undefined, ) export const selectAllowedPages = createSelector( @@ -42,5 +42,5 @@ export const selectAllowedPages = createSelector( }) }) return permissions - } + }, ) diff --git a/background/redux-slices/selectors/internalSignerSelectors.ts b/background/redux-slices/selectors/internalSignerSelectors.ts index 2bc0dd8b03..51d4ace10c 100644 --- a/background/redux-slices/selectors/internalSignerSelectors.ts +++ b/background/redux-slices/selectors/internalSignerSelectors.ts @@ -1,4 +1,4 @@ -import { createSelector, OutputSelector } from "@reduxjs/toolkit" +import { createSelector } from "@reduxjs/toolkit" import { RootState } from ".." import { Keyring, @@ -9,42 +9,40 @@ import { HexString } from "../../types" export const selectInternalSignerStatus = createSelector( (state: RootState) => state.internalSigner.status, - (status) => status + (status) => status, ) -export const selectKeyringByAddress = ( - address: string -): OutputSelector< - RootState, - Keyring | undefined, - (res: Keyring[]) => Keyring | undefined -> => - createSelector( - [(state: RootState) => state.internalSigner.keyrings], - (keyrings) => { - const kr = keyrings.find((keyring) => keyring.addresses.includes(address)) - return kr - } - ) +export const selectKeyringByAddress = createSelector( + [ + (state: RootState) => state.internalSigner.keyrings, + (_, address: HexString) => address, + ], + (keyrings, address) => { + const kr = keyrings.find((keyring) => keyring.addresses.includes(address)) + return kr + }, +) export const selectKeyringsByAddresses = createSelector( (state: RootState) => state.internalSigner.keyrings, ( - keyrings + keyrings, ): { [address: HexString]: Keyring } => Object.fromEntries( keyrings.flatMap((keyring) => - keyring.addresses.map((address) => [address, keyring]) - ) - ) + keyring.addresses.map((address) => [address, keyring]), + ), + ), ) export const selectPrivateKeyWalletsByAddress = createSelector( (state: RootState) => state.internalSigner.privateKeys, (pkWallets): { [address: HexString]: PrivateKey } => - Object.fromEntries(pkWallets.map((wallet) => [wallet.addresses[0], wallet])) + Object.fromEntries( + pkWallets.map((wallet) => [wallet.addresses[0], wallet]), + ), ) export const selectSourcesByAddress = createSelector( @@ -52,7 +50,7 @@ export const selectSourcesByAddress = createSelector( (state: RootState) => state.internalSigner.metadata, ( keyrings, - metadata + metadata, ): { [address: HexString]: SignerImportSource } => @@ -66,7 +64,7 @@ export const selectSourcesByAddress = createSelector( // Guaranteed to exist by the filter above // eslint-disable-next-line @typescript-eslint/no-non-null-assertion metadata[keyring.id!]?.source, - ]) - ) - ) + ]), + ), + ), ) diff --git a/background/redux-slices/selectors/ledgerSelectors.ts b/background/redux-slices/selectors/ledgerSelectors.ts index 3c21a47ad3..c70e0989ca 100644 --- a/background/redux-slices/selectors/ledgerSelectors.ts +++ b/background/redux-slices/selectors/ledgerSelectors.ts @@ -12,12 +12,12 @@ export const selectLedgerDeviceByAddresses = createSelector( if (account.address === null) return [] return [[account.address, device]] - } - ) + }, + ), ) return Object.fromEntries(ledgerEntries) - } + }, ) export default {} diff --git a/background/redux-slices/selectors/networks.ts b/background/redux-slices/selectors/networks.ts index 9de58f5ed3..21324aa2f9 100644 --- a/background/redux-slices/selectors/networks.ts +++ b/background/redux-slices/selectors/networks.ts @@ -10,21 +10,21 @@ import { EVMNetwork } from "../../networks" // eslint-disable-next-line import/prefer-default-export export const selectEVMNetworks = createSelector( (state: RootState) => state.networks.evmNetworks, - (evmNetworks): EVMNetwork[] => Object.values(evmNetworks) + (evmNetworks): EVMNetwork[] => Object.values(evmNetworks), ) export const selectProductionEVMNetworks = createSelector( selectEVMNetworks, (evmNetworks) => evmNetworks.filter( - (network) => !TEST_NETWORK_BY_CHAIN_ID.has(network.chainID) - ) + (network) => !TEST_NETWORK_BY_CHAIN_ID.has(network.chainID), + ), ) export const selectCustomNetworks = createSelector( selectEVMNetworks, (evmNetworks) => evmNetworks.filter( - (network) => !DEFAULT_NETWORKS_BY_CHAIN_ID.has(network.chainID) - ) + (network) => !DEFAULT_NETWORKS_BY_CHAIN_ID.has(network.chainID), + ), ) diff --git a/background/redux-slices/selectors/nftsSelectors.ts b/background/redux-slices/selectors/nftsSelectors.ts index 05795a467b..46d4c5dc5a 100644 --- a/background/redux-slices/selectors/nftsSelectors.ts +++ b/background/redux-slices/selectors/nftsSelectors.ts @@ -13,12 +13,12 @@ import { selectCurrentAccount, selectMainCurrencySymbol } from "./uiSelectors" const selectNFTs = createSelector( (state: RootState) => state.nfts, - (nftsSlice) => nftsSlice.nfts + (nftsSlice) => nftsSlice.nfts, ) export const selectIsReloadingNFTs = createSelector( (state: RootState) => state.nfts, - (nftsSlice) => nftsSlice.isReloading + (nftsSlice) => nftsSlice.isReloading, ) export const selectCurrentAccountNFTs = createSelector( @@ -27,14 +27,14 @@ export const selectCurrentAccountNFTs = createSelector( (nfts, account) => Object.values( nfts[account.network.chainID]?.[normalizeEVMAddress(account.address)] ?? - {} - ) + {}, + ), ) /* Filtering selectors */ const selectNFTFilters = createSelector( (state: RootState) => state.nfts, - (nftsSlice) => nftsSlice.filters + (nftsSlice) => nftsSlice.filters, ) export const selectEnrichedNFTFilters = createSelector( @@ -44,7 +44,7 @@ export const selectEnrichedNFTFilters = createSelector( const accounts = filters.accounts.reduce((acc, filter) => { const additionalData = getAdditionalDataForFilter( filter.id, - accountTotals + accountTotals, ) if (Object.keys(additionalData).length > 0) { return [ @@ -61,34 +61,34 @@ export const selectEnrichedNFTFilters = createSelector( const collections = filters.collections .filter(({ owners }) => { const enablingAccount = (owners ?? []).find((owner) => - accounts.find((account) => account.id === owner && account.isEnabled) + accounts.find((account) => account.id === owner && account.isEnabled), ) return !!enablingAccount }) .sort((collection1, collection2) => - collection1.name.localeCompare(collection2.name) + collection1.name.localeCompare(collection2.name), ) return { ...filters, collections, accounts } - } + }, ) /* Items selectors */ const selectAllCollections = createSelector(selectNFTs, (nfts) => Object.values(nfts).flatMap((byAddress) => Object.values(byAddress).flatMap((byCollection) => - Object.values(byCollection) - ) - ) + Object.values(byCollection), + ), + ), ) const selectAllNFTCollections = createSelector( selectAllCollections, - (collections) => collections.filter((collection) => !collection.hasBadges) + (collections) => collections.filter((collection) => !collection.hasBadges), ) const selectAllNFTBadgesCollections = createSelector( selectAllCollections, - (collections) => collections.filter((collection) => collection.hasBadges) + (collections) => collections.filter((collection) => collection.hasBadges), ) export const selectFilteredNFTCollections = createSelector( @@ -97,7 +97,7 @@ export const selectFilteredNFTCollections = createSelector( getPricesState, selectMainCurrencySymbol, (collections, filters, prices, mainCurrencySymbol) => - getFilteredCollections(collections, filters, prices, mainCurrencySymbol) + getFilteredCollections(collections, filters, prices, mainCurrencySymbol), ) export const selectFilteredNFTBadgesCollections = createSelector( @@ -106,42 +106,42 @@ export const selectFilteredNFTBadgesCollections = createSelector( getPricesState, selectMainCurrencySymbol, (collections, filters, prices, mainCurrencySymbol) => - getFilteredCollections(collections, filters, prices, mainCurrencySymbol) + getFilteredCollections(collections, filters, prices, mainCurrencySymbol), ) /* Counting selectors */ export const selectCurrentAccountNFTsCount = createSelector( selectCurrentAccountNFTs, - (collections) => getNFTsCount(collections) + (collections) => getNFTsCount(collections), ) export const selectAllNFTsCount = createSelector( selectAllNFTCollections, - (collections) => getNFTsCount(collections) + (collections) => getNFTsCount(collections), ) export const selectAllNFTBadgesCount = createSelector( selectAllNFTBadgesCollections, - (collections) => getNFTsCount(collections) + (collections) => getNFTsCount(collections), ) export const selectFilteredNFTsCount = createSelector( selectFilteredNFTCollections, - (collections) => getNFTsCount(collections) + (collections) => getNFTsCount(collections), ) export const selectFilteredNFTBadgesCount = createSelector( selectFilteredNFTBadgesCollections, - (collections) => getNFTsCount(collections) + (collections) => getNFTsCount(collections), ) export const selectFilteredNFTCollectionsCount = createSelector( selectFilteredNFTCollections, - (collections) => collections.length + (collections) => collections.length, ) /* Total Floor Price selectors */ export const selectFilteredTotalFloorPrice = createSelector( selectFilteredNFTCollections, - (collections) => getTotalFloorPrice(collections) + (collections) => getTotalFloorPrice(collections), ) diff --git a/background/redux-slices/selectors/signingSelectors.ts b/background/redux-slices/selectors/signingSelectors.ts index adf657e2ce..6461d5feab 100644 --- a/background/redux-slices/selectors/signingSelectors.ts +++ b/background/redux-slices/selectors/signingSelectors.ts @@ -20,10 +20,10 @@ const getAllAddresses = createSelector( (account) => [ ...new Set( Object.values(account.accountsData.evm).flatMap((chainAddresses) => - Object.keys(chainAddresses) - ) + Object.keys(chainAddresses), + ), ), - ] + ], ) export const selectAccountSignersByAddress = createSelector( @@ -35,7 +35,7 @@ export const selectAccountSignersByAddress = createSelector( allAddresses, ledgerDevices, keyringsByAddress, - privateKeyWalletsByAddress + privateKeyWalletsByAddress, ) => { const allAccountsSeen = new Set() const ledgerEntries = Object.values(ledgerDevices).flatMap((device) => @@ -50,8 +50,8 @@ export const selectAccountSignersByAddress = createSelector( { type: "ledger", deviceID: device.id, path: account.path }, ], ] - } - ) + }, + ), ) const keyringEntries = Object.entries(keyringsByAddress) @@ -70,7 +70,7 @@ export const selectAccountSignersByAddress = createSelector( keyringID: keyring.id, }, ] - } + }, ) .filter(isDefined) @@ -92,7 +92,7 @@ export const selectAccountSignersByAddress = createSelector( walletID: wallet.id, }, ] - } + }, ) .filter(isDefined) @@ -111,11 +111,12 @@ export const selectAccountSignersByAddress = createSelector( ] return Object.fromEntries(entriesByPriority) - } + }, ) export const selectCurrentAccountSigner = createSelector( selectAccountSignersByAddress, selectCurrentAccount, - (signingAccounts, selectedAccount) => signingAccounts[selectedAccount.address] + (signingAccounts, selectedAccount) => + signingAccounts[selectedAccount.address], ) diff --git a/background/redux-slices/selectors/transactionConstructionSelectors.ts b/background/redux-slices/selectors/transactionConstructionSelectors.ts index bf6f4c0edb..821bb00fd8 100644 --- a/background/redux-slices/selectors/transactionConstructionSelectors.ts +++ b/background/redux-slices/selectors/transactionConstructionSelectors.ts @@ -14,7 +14,7 @@ import { selectAssetPricePoint } from "../prices" export const selectTransactionNetwork = createSelector( (state: { transactionConstruction: TransactionConstruction }) => state.transactionConstruction.transactionRequest?.network, - (network) => network + (network) => network, ) export const selectDefaultNetworkFeeSettings = createSelector( @@ -27,7 +27,7 @@ export const selectDefaultNetworkFeeSettings = createSelector( transactionConstruction, networks, selectedNetwork, - transactionNetwork + transactionNetwork, ): NetworkFeeSettings => { const currentNetwork = transactionNetwork || selectedNetwork const selectedFeesPerGas = @@ -52,7 +52,7 @@ export const selectDefaultNetworkFeeSettings = createSelector( undefined, }, } - } + }, ) export const selectEstimatedFeesPerGas = createSelector( @@ -63,61 +63,63 @@ export const selectEstimatedFeesPerGas = createSelector( (gasData, transactionNetwork, selectedNetwork) => transactionNetwork ? gasData[transactionNetwork.chainID] - : gasData[selectedNetwork.chainID] + : gasData[selectedNetwork.chainID], ) export const selectFeeType = createSelector( (state: { transactionConstruction: TransactionConstruction }) => state.transactionConstruction.feeTypeSelected, - (feeTypeChosen) => feeTypeChosen + (feeTypeChosen) => feeTypeChosen, ) export const selectBaseAsset = createSelector( (state: { transactionConstruction: TransactionConstruction }) => state.transactionConstruction.transactionRequest?.network.baseAsset, - (baseAsset) => baseAsset + (baseAsset) => baseAsset, ) export const selectTransactionMainCurrencyPricePoint = createSelector( - selectBaseAsset, // Base asset for transaction - getPricesState, - (state) => selectMainCurrencySymbol(state), - selectCurrentNetwork, + [ + selectBaseAsset, // Base asset for transaction + getPricesState, + (state) => selectMainCurrencySymbol(state), + selectCurrentNetwork, + ], ( baseAsset, prices, mainCurrencySymbol, - currentNetwork + currentNetwork, ): PricePoint | undefined => selectAssetPricePoint( prices, baseAsset ?? currentNetwork.baseAsset, // Fallback to current network's base asset - mainCurrencySymbol - ) + mainCurrencySymbol, + ), ) export const selectTransactionData = createSelector( (state: { transactionConstruction: TransactionConstruction }) => state.transactionConstruction.transactionRequest, - (transactionRequestData) => transactionRequestData + (transactionRequestData) => transactionRequestData, ) export const selectIsTransactionPendingSignature = createSelector( (state: { transactionConstruction: TransactionConstruction }) => state.transactionConstruction.status, - (status) => status === "loaded" || status === "pending" + (status) => status === "loaded" || status === "pending", ) export const selectIsTransactionLoaded = createSelector( (state: { transactionConstruction: TransactionConstruction }) => state.transactionConstruction.status, - (status) => status === "loaded" + (status) => status === "loaded", ) export const selectIsTransactionSigned = createSelector( (state: { transactionConstruction: TransactionConstruction }) => state.transactionConstruction.status, - (status) => status === "signed" + (status) => status === "signed", ) export const selectCurrentlyChosenNetworkFees = createSelector( @@ -125,11 +127,11 @@ export const selectCurrentlyChosenNetworkFees = createSelector( state.transactionConstruction?.estimatedFeesPerGas?.[ state.transactionConstruction.feeTypeSelected ], - (feeData) => feeData + (feeData) => feeData, ) export const selectHasInsufficientFunds = createSelector( selectTransactionData, (transactionDetails) => - !!transactionDetails?.annotation?.warnings?.includes("insufficient-funds") + !!transactionDetails?.annotation?.warnings?.includes("insufficient-funds"), ) diff --git a/background/redux-slices/selectors/uiSelectors.ts b/background/redux-slices/selectors/uiSelectors.ts index 1ee380a985..736c3a5ead 100644 --- a/background/redux-slices/selectors/uiSelectors.ts +++ b/background/redux-slices/selectors/uiSelectors.ts @@ -7,7 +7,7 @@ import { export const selectCurrentNetwork = createSelector( (state: RootState) => state.ui.selectedAccount.network, - (selectedNetwork) => selectedNetwork + (selectedNetwork) => selectedNetwork, ) export const selectCurrentAccount = createSelector( @@ -16,7 +16,7 @@ export const selectCurrentAccount = createSelector( address, network, truncatedAddress: address.toLowerCase().slice(0, 7), - }) + }), ) export const selectShowingActivityDetail = createSelector( @@ -33,22 +33,22 @@ export const selectShowingActivityDetail = createSelector( currentAccountOnNetwork.network.chainID ]?.find((activity) => activity.hash === showingActivityDetailID) ?? null ) - } + }, ) export const selectCurrentAddressNetwork = createSelector( (state: RootState) => state.ui.selectedAccount, - (selectedAccount) => selectedAccount + (selectedAccount) => selectedAccount, ) export const selectMainCurrencySymbol = createSelector( - () => null, - () => hardcodedMainCurrencySymbol + (_: RootState) => null, + () => hardcodedMainCurrencySymbol, ) export const selectMainCurrencySign = createSelector( - () => null, - () => hardcodedMainCurrencySign + (_: RootState) => null, + () => hardcodedMainCurrencySign, ) export const selectMainCurrency = createSelector( @@ -56,5 +56,5 @@ export const selectMainCurrency = createSelector( (state: RootState) => state.assets, (state: RootState) => selectMainCurrencySymbol(state), (_, assets, mainCurrencySymbol) => - assets.find((asset) => asset.symbol === mainCurrencySymbol) + assets.find((asset) => asset.symbol === mainCurrencySymbol), ) diff --git a/background/redux-slices/signing.ts b/background/redux-slices/signing.ts index 362f5648c4..e389064544 100644 --- a/background/redux-slices/signing.ts +++ b/background/redux-slices/signing.ts @@ -77,7 +77,7 @@ export const signTypedData = createBackgroundAsyncThunk( account, accountSigner, }) - } + }, ) export const signData = createBackgroundAsyncThunk( @@ -88,7 +88,7 @@ export const signData = createBackgroundAsyncThunk( ...request, accountSigner, }) - } + }, ) const signingSlice = createSlice({ @@ -102,14 +102,14 @@ const signingSlice = createSlice({ }), typedDataRequest: ( state, - { payload }: { payload: EnrichedSignTypedDataRequest } + { payload }: { payload: EnrichedSignTypedDataRequest }, ) => ({ ...state, typedDataRequest: payload, }), signDataRequest: ( state, - { payload }: { payload: MessageSigningRequest } + { payload }: { payload: MessageSigningRequest }, ) => ({ ...state, signDataRequest: payload, @@ -127,7 +127,7 @@ const signingSlice = createSlice({ }), updateAdditionalSigningStatus: ( state, - { payload }: { payload: "editing" | undefined } + { payload }: { payload: "editing" | undefined }, ) => ({ ...state, additionalSigningStatus: payload, @@ -148,17 +148,17 @@ export default signingSlice.reducer export const selectTypedData = createSelector( (state: { signing: SigningState }) => state.signing.typedDataRequest, - (signTypes) => signTypes + (signTypes) => signTypes, ) export const selectSigningData = createSelector( (state: { signing: SigningState }) => state.signing.signDataRequest, - (signTypes) => signTypes + (signTypes) => signTypes, ) export const selectAdditionalSigningStatus = createSelector( (state: { signing: SigningState }) => state.signing.additionalSigningStatus, - (additionalSigningStatus) => additionalSigningStatus + (additionalSigningStatus) => additionalSigningStatus, ) export const rejectDataSignature = createBackgroundAsyncThunk( @@ -167,5 +167,5 @@ export const rejectDataSignature = createBackgroundAsyncThunk( await signingSliceEmitter.emit("signatureRejected") // Provide a clean slate for future transactions. dispatch(signingSlice.actions.clearSigningState()) - } + }, ) diff --git a/background/redux-slices/tests/accounts.unit.test.ts b/background/redux-slices/tests/accounts.unit.test.ts index 8948513112..9ae0ae02a8 100644 --- a/background/redux-slices/tests/accounts.unit.test.ts +++ b/background/redux-slices/tests/accounts.unit.test.ts @@ -65,7 +65,7 @@ describe("Accounts redux slice", () => { updateAccountBalance({ balances, addressOnNetwork: { address: ADDRESS_MOCK, network: ETHEREUM }, - }) + }), ) const updatedAccountData = @@ -88,7 +88,7 @@ describe("Accounts redux slice", () => { updateAccountBalance({ balances, addressOnNetwork: { address: ADDRESS_MOCK, network: ETHEREUM }, - }) + }), ) const updatedAccountData = updated.accountsData.evm[ETHEREUM.chainID][ADDRESS_MOCK] @@ -116,7 +116,7 @@ describe("Accounts redux slice", () => { updateAccountBalance({ balances, addressOnNetwork: { address: ADDRESS_MOCK, network: ETHEREUM }, - }) + }), ) const updatedAccountData = @@ -147,7 +147,7 @@ describe("Accounts redux slice", () => { updateAccountBalance({ balances, addressOnNetwork: { address: ADDRESS_MOCK, network: ETHEREUM }, - }) + }), ) const updatedAccountData = updated.accountsData.evm[ETHEREUM.chainID][ADDRESS_MOCK] @@ -169,7 +169,7 @@ describe("Accounts redux slice", () => { { ...BALANCE_MOCK, assetAmount: { asset: ASSET_MOCK, amount: 5n } }, ], addressOnNetwork: { address: ADDRESS_MOCK, network: ETHEREUM }, - }) + }), ) const updated = reducer( initial, @@ -181,7 +181,7 @@ describe("Accounts redux slice", () => { }, ], addressOnNetwork: { address: ADDRESS_MOCK, network: ETHEREUM }, - }) + }), ) const updatedAccountData = @@ -190,7 +190,7 @@ describe("Accounts redux slice", () => { expect(updatedBalance?.[getFullAssetID(ETH)].assetAmount.amount).toBe(1n) expect( - updatedBalance?.[getFullAssetID(ASSET_MOCK)].assetAmount.amount + updatedBalance?.[getFullAssetID(ASSET_MOCK)].assetAmount.amount, ).toBe(10n) }) @@ -207,7 +207,7 @@ describe("Accounts redux slice", () => { updateAccountBalance({ balances: [BALANCE_MOCK], addressOnNetwork: { address: ADDRESS_MOCK, network: ETHEREUM }, - }) + }), ) const updated = reducer( @@ -225,7 +225,7 @@ describe("Accounts redux slice", () => { }, ], addressOnNetwork: { address: ADDRESS_MOCK, network: ETHEREUM }, - }) + }), ) const updatedAccountData = @@ -235,17 +235,17 @@ describe("Accounts redux slice", () => { expect(balances?.[getFullAssetID(ETH)].assetAmount.asset).toEqual(ETH) expect(balances?.[getFullAssetID(someToken)].assetAmount.asset).toEqual( - someToken + someToken, ) expect(balances?.[getFullAssetID(someToken)].assetAmount.amount).toEqual( - 1n + 1n, ) expect( - balances?.[getFullAssetID(someOtherToken)].assetAmount.asset + balances?.[getFullAssetID(someOtherToken)].assetAmount.asset, ).toEqual(someOtherToken) expect( - balances?.[getFullAssetID(someOtherToken)].assetAmount.amount + balances?.[getFullAssetID(someOtherToken)].assetAmount.amount, ).toEqual(2n) }) @@ -271,7 +271,7 @@ describe("Accounts redux slice", () => { }, ], addressOnNetwork: { address: ADDRESS_MOCK, network: ETHEREUM }, - }) + }), ) const secondAccountUpdate = reducer( @@ -288,7 +288,7 @@ describe("Accounts redux slice", () => { address: otherAccount.address, network: ETHEREUM, }, - }) + }), ) const firstAccountData = secondAccountUpdate.accountsData.evm[ @@ -301,11 +301,11 @@ describe("Accounts redux slice", () => { expect( firstAccountData.balances[getFullAssetID(asset)].assetAmount.asset - .metadata?.verified + .metadata?.verified, ).not.toBeDefined() expect( secondAccountData.balances[getFullAssetID(asset)].assetAmount.asset - .metadata?.verified + .metadata?.verified, ).not.toBeDefined() const updatedAsset = cloneDeep(asset) @@ -314,7 +314,7 @@ describe("Accounts redux slice", () => { const newState = reducer( secondAccountUpdate, - updateAssetReferences(updatedAsset) + updateAssetReferences(updatedAsset), ) const updatedFirstAccountData = newState.accountsData.evm[ @@ -327,11 +327,11 @@ describe("Accounts redux slice", () => { expect( updatedFirstAccountData.balances[getFullAssetID(asset)].assetAmount - .asset.metadata?.verified + .asset.metadata?.verified, ).toBe(true) expect( updatedSecondAccountData.balances[getFullAssetID(asset)].assetAmount - .asset.metadata?.verified + .asset.metadata?.verified, ).toBe(true) }) }) @@ -348,7 +348,7 @@ describe("Utilities", () => { { hideDust: true, showUnverifiedAssets: false, - } + }, ) expect(displayAsset).toBe(true) }) @@ -363,7 +363,7 @@ describe("Utilities", () => { { hideDust: true, showUnverifiedAssets: false, - } + }, ) expect(displayAsset).toBe(true) @@ -378,7 +378,7 @@ describe("Utilities", () => { { hideDust: false, showUnverifiedAssets: false, - } + }, ) expect(displayAsset).toBe(true) @@ -393,7 +393,7 @@ describe("Utilities", () => { { hideDust: false, showUnverifiedAssets: false, - } + }, ) expect(displayAsset).toBe(true) @@ -408,7 +408,7 @@ describe("Utilities", () => { { hideDust: true, showUnverifiedAssets: false, - } + }, ) expect(displayAsset).toBe(false) @@ -424,12 +424,12 @@ describe("Utilities", () => { { decimalAmount: 200, mainCurrencyAmount: 200, - } + }, ), { hideDust: true, showUnverifiedAssets: false, - } + }, ) expect(displayAsset).toBe(true) @@ -443,12 +443,12 @@ describe("Utilities", () => { { decimalAmount: 200, mainCurrencyAmount: 200, - } + }, ), { hideDust: true, showUnverifiedAssets: true, - } + }, ) expect(displayAsset).toBe(true) @@ -462,12 +462,12 @@ describe("Utilities", () => { { decimalAmount: 200, mainCurrencyAmount: 200, - } + }, ), { hideDust: true, showUnverifiedAssets: false, - } + }, ) expect(displayAsset).toBe(false) @@ -481,12 +481,12 @@ describe("Utilities", () => { { decimalAmount: 200, mainCurrencyAmount: 200, - } + }, ), { hideDust: true, showUnverifiedAssets: false, - } + }, ) expect(displayAsset).toBe(false) @@ -500,12 +500,12 @@ describe("Utilities", () => { { decimalAmount: 200, mainCurrencyAmount: 200, - } + }, ), { hideDust: true, showUnverifiedAssets: true, - } + }, ) expect(displayAsset).toBe(true) @@ -519,12 +519,12 @@ describe("Utilities", () => { { decimalAmount: 0, mainCurrencyAmount: 0, - } + }, ), { hideDust: true, showUnverifiedAssets: false, - } + }, ) expect(displayAsset).toBe(false) diff --git a/background/redux-slices/tests/assets-utils.unit.test.ts b/background/redux-slices/tests/assets-utils.unit.test.ts index 820745568c..8bbdc8293b 100644 --- a/background/redux-slices/tests/assets-utils.unit.test.ts +++ b/background/redux-slices/tests/assets-utils.unit.test.ts @@ -29,7 +29,7 @@ describe(sameNetworkBaseAsset, () => { chainID: "43114", name: "Avalanche", symbol: "AVAX", - }) + }), ).toBe(true) }) }) @@ -55,7 +55,7 @@ describe(enrichAssetAmountWithMainCurrencyValues, () => { const result = enrichAssetAmountWithMainCurrencyValues( assetAmount, pricePoint, - 2 + 2, ) expect(result).toMatchObject({ diff --git a/background/redux-slices/tests/assets.unit.test.ts b/background/redux-slices/tests/assets.unit.test.ts index d5637c8b92..a44a9f3813 100644 --- a/background/redux-slices/tests/assets.unit.test.ts +++ b/background/redux-slices/tests/assets.unit.test.ts @@ -35,7 +35,7 @@ describe("Reducers", () => { const newState = reducer( state, - assetsLoaded([{ ...asset, metadata: { verified: true } }]) + assetsLoaded([{ ...asset, metadata: { verified: true } }]), ) expect(newState[0].metadata?.verified).toBeTruthy() @@ -80,7 +80,7 @@ describe("Assets selectors", () => { const result = selectAssetPricePoint( pricesState, assetWithoutPricePoint, - "USD" + "USD", ) expect(result).toMatchObject(pricePoint) diff --git a/background/redux-slices/tests/nfts.integration.test.ts b/background/redux-slices/tests/nfts.integration.test.ts index b98bbfeccb..70f91ccf26 100644 --- a/background/redux-slices/tests/nfts.integration.test.ts +++ b/background/redux-slices/tests/nfts.integration.test.ts @@ -30,7 +30,7 @@ describe("NFTs redux slice", () => { it("should handle transfer even if collection is not saved in state", () => { const stateAfterTransfers = reducer( state, - deleteTransferredNFTs([TRANSFER_MOCK]) + deleteTransferredNFTs([TRANSFER_MOCK]), ) expect(stateAfterTransfers.nfts).toMatchObject({}) }) @@ -38,11 +38,11 @@ describe("NFTs redux slice", () => { it("should handle transfer if collection has many owned NFTs but none cached", () => { const stateWithCollections = reducer( state, - updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 10 }]) + updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 10 }]), ) const stateAfterTransfers = reducer( stateWithCollections, - deleteTransferredNFTs([TRANSFER_MOCK]) + deleteTransferredNFTs([TRANSFER_MOCK]), ) const collection = extractCollection(stateAfterTransfers) @@ -54,11 +54,11 @@ describe("NFTs redux slice", () => { it("should handle transfer if collection has single NFT owned but none cached", () => { const stateWithCollections = reducer( state, - updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 1 }]) + updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 1 }]), ) const stateAfterTransfers = reducer( stateWithCollections, - deleteTransferredNFTs([TRANSFER_MOCK]) + deleteTransferredNFTs([TRANSFER_MOCK]), ) const collection = extractCollection(stateAfterTransfers) @@ -68,11 +68,11 @@ describe("NFTs redux slice", () => { it("should handle transfer when there is unknown number of NFTs owned", () => { const stateWithCollections = reducer( state, - updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: undefined }]) + updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: undefined }]), ) expect(() => - reducer(stateWithCollections, deleteTransferredNFTs([TRANSFER_MOCK])) + reducer(stateWithCollections, deleteTransferredNFTs([TRANSFER_MOCK])), ).not.toThrow() }) @@ -81,18 +81,18 @@ describe("NFTs redux slice", () => { const stateWithCollections = reducer( state, - updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 3, owner }]) + updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 3, owner }]), ) const stateAfterTransfers = reducer( stateWithCollections, - deleteTransferredNFTs([{ ...TRANSFER_MOCK, from: owner }]) + deleteTransferredNFTs([{ ...TRANSFER_MOCK, from: owner }]), ) const collection = extractCollection( stateAfterTransfers, COLLECTION_MOCK.id, ETHEREUM.chainID, - normalizeEVMAddress(owner) + normalizeEVMAddress(owner), ) expect(collection).toBeDefined() @@ -102,11 +102,11 @@ describe("NFTs redux slice", () => { it("should handle transfer even if chainID is unknown", () => { const stateWithCollections = reducer( state, - updateNFTsCollections([COLLECTION_MOCK]) + updateNFTsCollections([COLLECTION_MOCK]), ) const stateAfterTransfers = reducer( stateWithCollections, - deleteTransferredNFTs([{ ...TRANSFER_MOCK, chainID: "12345" }]) + deleteTransferredNFTs([{ ...TRANSFER_MOCK, chainID: "12345" }]), ) const collection = extractCollection(stateAfterTransfers) @@ -120,7 +120,7 @@ describe("NFTs redux slice", () => { const stateWithCollections = reducer( state, - updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 2 }]) + updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 2 }]), ) const stateWithNFTs = reducer( stateWithCollections, @@ -132,11 +132,11 @@ describe("NFTs redux slice", () => { collectionID: COLLECTION_MOCK.id, hasNextPage: false, nfts: [NFT_MOCK, { ...NFT_MOCK, id: secondID, tokenId: secondID }], - }) + }), ) const stateAfterTransfers = reducer( stateWithNFTs, - deleteTransferredNFTs([TRANSFER_MOCK]) + deleteTransferredNFTs([TRANSFER_MOCK]), ) const collection = extractCollection(stateAfterTransfers) @@ -150,7 +150,7 @@ describe("NFTs redux slice", () => { it("should handle transfer when it is last NFT owned and cached", () => { const stateWithCollections = reducer( state, - updateNFTsCollections([COLLECTION_MOCK]) + updateNFTsCollections([COLLECTION_MOCK]), ) const stateWithNFTs = reducer( stateWithCollections, @@ -162,11 +162,11 @@ describe("NFTs redux slice", () => { collectionID: COLLECTION_MOCK.id, hasNextPage: false, nfts: [NFT_MOCK], - }) + }), ) const stateAfterTransfers = reducer( stateWithNFTs, - deleteTransferredNFTs([TRANSFER_MOCK]) + deleteTransferredNFTs([TRANSFER_MOCK]), ) const collection = extractCollection(stateAfterTransfers) @@ -180,7 +180,7 @@ describe("NFTs redux slice", () => { const stateWithCollections = reducer( state, - updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 3 }]) + updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 3 }]), ) const stateWithNFTs = reducer( stateWithCollections, @@ -192,11 +192,11 @@ describe("NFTs redux slice", () => { collectionID: COLLECTION_MOCK.id, hasNextPage: false, nfts: [NFT_MOCK, { ...NFT_MOCK, id: secondID, tokenId: secondID }], - }) + }), ) const stateAfterTransfers = reducer( stateWithNFTs, - deleteTransferredNFTs([{ ...TRANSFER_MOCK, id: thirdID }]) + deleteTransferredNFTs([{ ...TRANSFER_MOCK, id: thirdID }]), ) const collection = extractCollection(stateAfterTransfers) @@ -224,7 +224,7 @@ describe("NFTs redux slice", () => { id: secondCollectionID, name: "ABC", }, - ]) + ]), ) const stateWithNFTs1 = reducer( stateWithCollections, @@ -236,7 +236,7 @@ describe("NFTs redux slice", () => { collectionID: COLLECTION_MOCK.id, hasNextPage: false, nfts: [NFT_MOCK], - }) + }), ) const stateWithNFTs2 = reducer( stateWithNFTs1, @@ -263,7 +263,7 @@ describe("NFTs redux slice", () => { name: "ABC 2 NFT", }, ], - }) + }), ) const stateAfterTransfers = reducer( stateWithNFTs2, @@ -274,13 +274,13 @@ describe("NFTs redux slice", () => { id: secondNftID, collectionID: secondCollectionID, }, - ]) + ]), ) const firstCollection = extractCollection(stateAfterTransfers) const secondCollection = extractCollection( stateAfterTransfers, - secondCollectionID + secondCollectionID, ) const secondCollectionNFTs = secondCollection?.nfts.map((nft) => nft.id) @@ -297,7 +297,7 @@ describe("NFTs redux slice", () => { const stateWithCollections = reducer( state, - updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 3 }]) + updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 3 }]), ) const stateWithNFTs = reducer( stateWithCollections, @@ -318,14 +318,14 @@ describe("NFTs redux slice", () => { }, { ...NFT_MOCK, id: thirdID, tokenId: thirdID, name: "XYZ 3 NFT" }, ], - }) + }), ) const stateAfterTransfers = reducer( stateWithNFTs, deleteTransferredNFTs([ TRANSFER_MOCK, { ...TRANSFER_MOCK, id: secondID }, - ]) + ]), ) const collection = extractCollection(stateAfterTransfers) @@ -341,7 +341,7 @@ describe("NFTs redux slice", () => { const stateWithCollections = reducer( state, - updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 2 }]) + updateNFTsCollections([{ ...COLLECTION_MOCK, nftCount: 2 }]), ) const stateWithNFTs = reducer( stateWithCollections, @@ -361,14 +361,14 @@ describe("NFTs redux slice", () => { name: "XYZ 2 NFT", }, ], - }) + }), ) const stateAfterTransfers = reducer( stateWithNFTs, deleteTransferredNFTs([ TRANSFER_MOCK, { ...TRANSFER_MOCK, id: secondID }, - ]) + ]), ) const collection = extractCollection(stateAfterTransfers) diff --git a/background/redux-slices/tests/nfts.utils.ts b/background/redux-slices/tests/nfts.utils.ts index e18418575c..1af60799fd 100644 --- a/background/redux-slices/tests/nfts.utils.ts +++ b/background/redux-slices/tests/nfts.utils.ts @@ -48,6 +48,6 @@ export const extractCollection = ( state: NFTsSliceState, collectionID: string = COLLECTION_MOCK.id, chainID: string = ETHEREUM.chainID, - address: string = OWNER_MOCK + address: string = OWNER_MOCK, ): NFTCollectionCached | undefined => state.nfts?.[chainID]?.[address]?.[collectionID] diff --git a/background/redux-slices/transaction-construction.ts b/background/redux-slices/transaction-construction.ts index 413206d4eb..9cc70e150c 100644 --- a/background/redux-slices/transaction-construction.ts +++ b/background/redux-slices/transaction-construction.ts @@ -114,10 +114,10 @@ export const emitter = new Emittery() const makeBlockEstimate = ( type: number, - estimatedFeesPerGas: BlockPrices + estimatedFeesPerGas: BlockPrices, ): BlockEstimate => { let maxFeePerGas = estimatedFeesPerGas.estimatedPrices.find( - (el) => el.confidence === type + (el) => el.confidence === type, )?.maxFeePerGas if (typeof maxFeePerGas === "undefined") { @@ -145,7 +145,7 @@ export const updateTransactionData = createBackgroundAsyncThunk( "transaction-construction/update-transaction", async (payload: EnrichedEVMTransactionSignatureRequest) => { await emitter.emit("updateTransaction", payload) - } + }, ) export const signTransaction = createBackgroundAsyncThunk( @@ -153,14 +153,14 @@ export const signTransaction = createBackgroundAsyncThunk( async ( request: SignOperation< EIP1559TransactionRequest | LegacyEVMTransactionRequest - > + >, ) => { if (isEnabled(FeatureFlags.USE_MAINNET_FORK)) { request.request.chainID = FORK.chainID } await emitter.emit("requestSignature", request) - } + }, ) const transactionSlice = createSlice({ @@ -176,7 +176,7 @@ const transactionSlice = createSlice({ transactionRequest: TransactionRequest transactionLikelyFails: boolean } - } + }, ) => { const newState = { ...state, @@ -229,7 +229,7 @@ const transactionSlice = createSlice({ }, clearTransactionState: ( state, - { payload }: { payload: TransactionConstructionStatus } + { payload }: { payload: TransactionConstructionStatus }, ) => ({ estimatedFeesPerGas: state.estimatedFeesPerGas, status: payload, @@ -245,7 +245,7 @@ const transactionSlice = createSlice({ payload, }: { payload: { estimatedRollupFee: bigint; estimatedRollupGwei: bigint } - } + }, ) => { const { estimatedRollupFee, estimatedRollupGwei } = payload if ( @@ -258,7 +258,7 @@ const transactionSlice = createSlice({ }, setFeeType: ( immerState, - { payload }: { payload: NetworkFeeTypeChosen } + { payload }: { payload: NetworkFeeTypeChosen }, ) => { immerState.feeTypeSelected = payload }, @@ -280,13 +280,13 @@ const transactionSlice = createSlice({ immerState, { payload: { estimatedFeesPerGas, network }, - }: { payload: { estimatedFeesPerGas: BlockPrices; network: EVMNetwork } } + }: { payload: { estimatedFeesPerGas: BlockPrices; network: EVMNetwork } }, ) => { if (network.chainID === OPTIMISM.chainID) { // @TODO change up how we do block estimates since alchemy only gives us an `instant` estimate for optimism. const optimismBlockEstimate = makeBlockEstimate( INSTANT, - estimatedFeesPerGas + estimatedFeesPerGas, ) immerState.estimatedFeesPerGas = { ...(immerState.estimatedFeesPerGas ?? {}), @@ -318,7 +318,7 @@ const transactionSlice = createSlice({ maxPriorityFeePerGas: bigint maxFeePerGas: bigint } - } + }, ) => { immerState.customFeesPerGas = { maxPriorityFeePerGas, @@ -332,7 +332,7 @@ const transactionSlice = createSlice({ }, setCustomGasLimit: ( immerState, - { payload: gasLimit }: { payload: bigint | undefined } + { payload: gasLimit }: { payload: bigint | undefined }, ) => { if ( typeof gasLimit !== "undefined" && @@ -371,7 +371,7 @@ export const broadcastSignedTransaction = createBackgroundAsyncThunk( "transaction-construction/broadcast", async (transaction: SignedTransaction) => { await emitter.emit("broadcastSignedTransaction", transaction) - } + }, ) export const transactionSigned = createBackgroundAsyncThunk( @@ -386,7 +386,7 @@ export const transactionSigned = createBackgroundAsyncThunk( if (transactionConstruction.broadcastOnSign ?? false) { await dispatch(broadcastSignedTransaction(transaction)) } - } + }, ) export const rejectTransactionSignature = createBackgroundAsyncThunk( @@ -396,8 +396,8 @@ export const rejectTransactionSignature = createBackgroundAsyncThunk( // Provide a clean slate for future transactions. dispatch( transactionSlice.actions.clearTransactionState( - TransactionConstructionStatus.Idle - ) + TransactionConstructionStatus.Idle, + ), ) - } + }, ) diff --git a/background/redux-slices/ui.ts b/background/redux-slices/ui.ts index 60b1335bb2..2d56c0e179 100644 --- a/background/redux-slices/ui.ts +++ b/background/redux-slices/ui.ts @@ -84,31 +84,31 @@ const uiSlice = createSlice({ reducers: { toggleHideDust: ( immerState, - { payload: shouldHideDust }: { payload: boolean } + { payload: shouldHideDust }: { payload: boolean }, ): void => { immerState.settings.hideDust = shouldHideDust }, toggleTestNetworks: ( immerState, - { payload: showTestNetworks }: { payload: boolean } + { payload: showTestNetworks }: { payload: boolean }, ): void => { immerState.settings.showTestNetworks = showTestNetworks }, toggleShowUnverifiedAssets: ( immerState, - { payload: showUnverifiedAssets }: { payload: boolean } + { payload: showUnverifiedAssets }: { payload: boolean }, ): void => { immerState.settings.showUnverifiedAssets = showUnverifiedAssets }, toggleUseFlashbots: ( immerState, - { payload: useFlashbots }: { payload: boolean } + { payload: useFlashbots }: { payload: boolean }, ): void => { immerState.settings.useFlashbots = useFlashbots }, toggleCollectAnalytics: ( state, - { payload: collectAnalytics }: { payload: boolean } + { payload: collectAnalytics }: { payload: boolean }, ) => ({ ...state, settings: { @@ -119,7 +119,7 @@ const uiSlice = createSlice({ }), setShowAnalyticsNotification: ( state, - { payload: showAnalyticsNotification }: { payload: boolean } + { payload: showAnalyticsNotification }: { payload: boolean }, ) => ({ ...state, settings: { @@ -129,7 +129,7 @@ const uiSlice = createSlice({ }), toggleHideBanners: ( state, - { payload: hideBanners }: { payload: boolean } + { payload: hideBanners }: { payload: boolean }, ) => ({ ...state, settings: { @@ -139,14 +139,14 @@ const uiSlice = createSlice({ }), setShowingActivityDetail: ( state, - { payload: transactionID }: { payload: string | null } + { payload: transactionID }: { payload: string | null }, ): UIState => ({ ...state, showingActivityDetailID: transactionID, }), setSelectedAccount: ( immerState, - { payload: addressNetwork }: { payload: AddressOnNetwork } + { payload: addressNetwork }: { payload: AddressOnNetwork }, ) => { immerState.selectedAccount = addressNetwork }, @@ -156,7 +156,7 @@ const uiSlice = createSlice({ }), setSnackbarMessage: ( state, - { payload: snackbarMessage }: { payload: string } + { payload: snackbarMessage }: { payload: string }, ): UIState => ({ ...state, snackbarMessage, @@ -167,7 +167,7 @@ const uiSlice = createSlice({ }), setDefaultWallet: ( state, - { payload: defaultWallet }: { payload: boolean } + { payload: defaultWallet }: { payload: boolean }, ) => ({ ...state, settings: { @@ -177,14 +177,14 @@ const uiSlice = createSlice({ }), setShownDismissableItems: ( state, - { payload: shownDismissableItems }: { payload: DismissableItem[] } + { payload: shownDismissableItems }: { payload: DismissableItem[] }, ) => ({ ...state, shownDismissableItems, }), dismissableItemMarkedAsShown: ( state, - { payload: shownDismissableItem }: { payload: DismissableItem } + { payload: shownDismissableItem }: { payload: DismissableItem }, ) => ({ ...state, shownDismissableItems: [ @@ -194,21 +194,21 @@ const uiSlice = createSlice({ }), setRouteHistoryEntries: ( state, - { payload: routeHistoryEntries }: { payload: Partial[] } + { payload: routeHistoryEntries }: { payload: Partial[] }, ) => ({ ...state, routeHistoryEntries, }), setSlippageTolerance: ( state, - { payload: slippageTolerance }: { payload: number } + { payload: slippageTolerance }: { payload: number }, ) => ({ ...state, slippageTolerance, }), setAccountsSignerSettings: ( state, - { payload }: { payload: AccountSignerSettings[] } + { payload }: { payload: AccountSignerSettings[] }, ) => ({ ...state, accountSignerSettings: payload }), setAutoLockInterval: (state, { payload }: { payload: number }) => ({ ...state, @@ -247,14 +247,14 @@ export const updateAnalyticsPreferences = createBackgroundAsyncThunk( await emitter.emit("updateAnalyticsPreferences", { isEnabled: collectAnalytics, }) - } + }, ) export const deleteAnalyticsData = createBackgroundAsyncThunk( "ui/deleteAnalyticsData", async () => { await emitter.emit("deleteAnalyticsData") - } + }, ) // Async thunk to bubble the setNewDefaultWalletValue action from store to emitter. @@ -264,7 +264,7 @@ export const setNewDefaultWalletValue = createBackgroundAsyncThunk( await emitter.emit("newDefaultWalletValue", defaultWallet) // Once the default value has persisted, propagate to the store. dispatch(uiSlice.actions.setDefaultWallet(defaultWallet)) - } + }, ) // TBD @Antonio: It would be good to have a consistent naming strategy @@ -276,32 +276,32 @@ export const setNewSelectedAccount = createBackgroundAsyncThunk( dispatch(uiSlice.actions.setSelectedAccount(addressNetwork)) // Do async work needed after the account is switched await emitter.emit("newSelectedAccountSwitched", addressNetwork) - } + }, ) export const updateSignerTitle = createBackgroundAsyncThunk( "ui/updateSignerTitle", async ([signer, title]: [AccountSignerWithId, string], { extra: { main } }) => - main.updateSignerTitle(signer, title) + main.updateSignerTitle(signer, title), ) export const markDismissableItemAsShown = createBackgroundAsyncThunk( "ui/markDismissableItemAsShown", async (item: DismissableItem, { extra: { main } }) => - main.markDismissableItemAsShown(item) + main.markDismissableItemAsShown(item), ) export const getAddNetworkRequestDetails = createBackgroundAsyncThunk( "ui/getAddNetworkRequestDetails", async (requestId: string, { extra: { main } }) => - main.getAddNetworkRequestDetails(requestId) + main.getAddNetworkRequestDetails(requestId), ) export const addNetworkUserResponse = createBackgroundAsyncThunk( "ui/handleAddNetworkConfirmation", async ([requestId, result]: [string, boolean]) => { emitter.emit("addCustomNetworkResponse", [requestId, result]) - } + }, ) export const updateAutoLockInterval = createBackgroundAsyncThunk( @@ -314,14 +314,14 @@ export const updateAutoLockInterval = createBackgroundAsyncThunk( } emitter.emit("updateAutoLockInterval", parsedValue) - } + }, ) export const userActivityEncountered = createBackgroundAsyncThunk( "ui/userActivityEncountered", async (addressNetwork: AddressOnNetwork) => { await emitter.emit("userActivityEncountered", addressNetwork) - } + }, ) export const setSelectedNetwork = createBackgroundAsyncThunk( @@ -338,24 +338,24 @@ export const setSelectedNetwork = createBackgroundAsyncThunk( if (!account.accountsData.evm[network.chainID]?.[address]) { dispatch(addAddressNetwork({ address, network })) } - } + }, ) dispatch(setNewSelectedAccount({ ...ui.selectedAccount, network })) - } + }, ) export const refreshBackgroundPage = createBackgroundAsyncThunk( "ui/refreshBackgroundPage", async () => { await emitter.emit("refreshBackgroundPage", null) - } + }, ) export const sendEvent = createBackgroundAsyncThunk( "ui/sendEvent", async (event: AnalyticsEvent | OneTimeAnalyticsEvent) => { await emitter.emit("sendEvent", event) - } + }, ) export const toggleFlashbots = createBackgroundAsyncThunk( @@ -363,85 +363,85 @@ export const toggleFlashbots = createBackgroundAsyncThunk( async (value: boolean, { dispatch, extra: { main } }) => { await main.toggleFlashbotsProvider(value) dispatch(toggleUseFlashbots(value)) - } + }, ) export const toggleUsingFlashbotsForGivenTx = createBackgroundAsyncThunk( "ui/toggleUsingFlashbotsForGivenTx", async (value: boolean, { extra: { main } }) => { await main.toggleFlashbotsProvider(value) - } + }, ) export const selectUI = createSelector( (state: { ui: UIState }): UIState => state.ui, - (uiState) => uiState + (uiState) => uiState, ) export const selectSettings = createSelector(selectUI, (ui) => ui.settings) export const selectHideDust = createSelector( selectSettings, - (settings) => settings?.hideDust + (settings) => settings?.hideDust, ) export const selectAutoLockTimer = createSelector( selectSettings, - (settings) => settings.autoLockInterval + (settings) => settings.autoLockInterval, ) export const selectSnackbarMessage = createSelector( selectUI, - (ui) => ui.snackbarMessage + (ui) => ui.snackbarMessage, ) export const selectDefaultWallet = createSelector( selectSettings, - (settings) => settings?.defaultWallet + (settings) => settings?.defaultWallet, ) export const selectShowAnalyticsNotification = createSelector( selectSettings, - (settings) => settings?.showAnalyticsNotification + (settings) => settings?.showAnalyticsNotification, ) export const selectSlippageTolerance = createSelector( selectUI, - (ui) => ui.slippageTolerance + (ui) => ui.slippageTolerance, ) export const selectInitializationTimeExpired = createSelector( selectUI, - (ui) => ui.initializationLoadingTimeExpired + (ui) => ui.initializationLoadingTimeExpired, ) export const selectShowTestNetworks = createSelector( selectSettings, - (settings) => settings?.showTestNetworks + (settings) => settings?.showTestNetworks, ) export const selectShowUnverifiedAssets = createSelector( selectSettings, - (settings) => settings?.showUnverifiedAssets + (settings) => settings?.showUnverifiedAssets, ) export const selectCollectAnalytics = createSelector( selectSettings, - (settings) => settings?.collectAnalytics + (settings) => settings?.collectAnalytics, ) export const selectHideBanners = createSelector( selectSettings, - (settings) => settings?.hideBanners + (settings) => settings?.hideBanners, ) export const selectUseFlashbots = createSelector( selectSettings, - (settings) => settings?.useFlashbots + (settings) => settings?.useFlashbots, ) export function selectShouldShowDismissableItem( - dismissableItem: DismissableItem + dismissableItem: DismissableItem, ) { return (state: { ui: UIState }): boolean => { const itemWasShown = diff --git a/background/redux-slices/utils.ts b/background/redux-slices/utils.ts index f572b32ea6..f55ccedeb6 100644 --- a/background/redux-slices/utils.ts +++ b/background/redux-slices/utils.ts @@ -68,6 +68,31 @@ const asyncThunkProperties = (() => { return exhaustiveList })() +declare const BackgroundAsyncThunkReturnTypeSymbol: unique symbol + +/** + * Special type used to represent Actions produced by BackgroundAsyncThunks + * while preserving their return types. These return types are later extracted + * to properly type useDispatch values so that thunks are handled properly in + * the type system. + */ +export type BackgroundAsyncThunkAction< + TypePrefix extends string, + Returned, +> = Action & { + readonly [BackgroundAsyncThunkReturnTypeSymbol]?: Returned +} + +export type BackgroundAsyncThunk< + TypePrefix extends string, + Returned, + ThunkArg = void, + ThunkApiConfig extends AsyncThunkConfig = { extra: { main: Main } }, +> = (( + payload: ThunkArg, +) => BackgroundAsyncThunkAction & { payload: ThunkArg }) & + Pick, AsyncThunkProps> + // Extracts a @reduxjs/toolkit internal type for type alignment in the below // function types. type AsyncThunkConfig = ReturnType extends AsyncThunk< @@ -118,13 +143,12 @@ export function createBackgroundAsyncThunk< TypePrefix extends string, Returned, ThunkArg = void, - ThunkApiConfig extends AsyncThunkConfig = { extra: { main: Main } } + ThunkApiConfig extends AsyncThunkConfig = { extra: { main: Main } }, >( typePrefix: TypePrefix, payloadCreator: AsyncThunkPayloadCreator, - options?: AsyncThunkOptions -): ((payload: ThunkArg) => Action & { payload: ThunkArg }) & - Pick, AsyncThunkProps> { + options?: AsyncThunkOptions, +): BackgroundAsyncThunk { // Exit early if this type prefix is already aliased for handling in the // background script. if (allAliases[typePrefix]) { @@ -132,9 +156,14 @@ export function createBackgroundAsyncThunk< } // Use reduxtools' createAsyncThunk to build the infrastructure. - const baseThunkActionCreator = createAsyncThunk( + const baseThunkActionCreator = createAsyncThunk< + ReturnType, + ThunkArg + >( typePrefix, - async (...args: Parameters) => { + async ( + ...args: Parameters + ): Promise> => { try { return await payloadCreator(...args) } catch (error) { @@ -142,7 +171,7 @@ export function createBackgroundAsyncThunk< throw error } }, - options + options, ) // Wrap the top-level action creator to make it compatible with webext-redux. @@ -153,8 +182,8 @@ export function createBackgroundAsyncThunk< }), // Copy the utility props on the redux-tools version to our version. Object.fromEntries( - asyncThunkProperties.map((prop) => [prop, baseThunkActionCreator[prop]]) - ) as Pick, AsyncThunkProps> + asyncThunkProperties.map((prop) => [prop, baseThunkActionCreator[prop]]), + ) as Pick, AsyncThunkProps>, ) // Register the alias to ensure it will always get proxied back to the diff --git a/background/redux-slices/utils/0x-swap-utils.ts b/background/redux-slices/utils/0x-swap-utils.ts index 16fe2231a8..3a216c34d2 100644 --- a/background/redux-slices/utils/0x-swap-utils.ts +++ b/background/redux-slices/utils/0x-swap-utils.ts @@ -45,7 +45,7 @@ export type PriceDetails = { export async function getAssetPricePoint( asset: SwappableAsset, assets: AssetsState, - network: EVMNetwork + network: EVMNetwork, ): Promise { // FIXME: review const assetPricesNetworks = assets @@ -53,7 +53,7 @@ export async function getAssetPricePoint( (assetItem) => "contractAddress" in assetItem && assetItem.contractAddress && - assetItem.symbol === asset.symbol + assetItem.symbol === asset.symbol, ) .map((assetItem) => { const { contractAddress } = assetItem as SingleAssetState & { @@ -63,7 +63,7 @@ export async function getAssetPricePoint( }) const [unitPricePoint] = Object.values( - await getTokenPrices(assetPricesNetworks, USD, network) + await getTokenPrices(assetPricesNetworks, USD, network), ) return unitPricePoint === undefined @@ -76,7 +76,7 @@ export async function getAssetAmount( prices: PricesState, asset: SwappableAsset, amount: string, - network: EVMNetwork + network: EVMNetwork, ): Promise< | ({ asset: SwappableAsset @@ -90,13 +90,13 @@ export async function getAssetAmount( } const decimalMatched = convertFixedPointNumber( fixedPointAmount, - asset.decimals + asset.decimals, ) const assetPricePoint = selectAssetPricePoint( prices, asset, - hardcodedMainCurrencySymbol + hardcodedMainCurrencySymbol, ) return enrichAssetAmountWithMainCurrencyValues( @@ -105,7 +105,7 @@ export async function getAssetAmount( amount: decimalMatched.amount, }, assetPricePoint ?? (await getAssetPricePoint(asset, assets, network)), - 2 + 2, ) } @@ -120,7 +120,7 @@ export async function checkCurrencyAmount( assets: AssetsState, prices: PricesState, amount: string, - network: EVMNetwork + network: EVMNetwork, ): Promise { const currencyAmount = tokenToEthRate >= 0.1 @@ -133,7 +133,7 @@ export async function checkCurrencyAmount( amount: BigInt(amount), decimals: asset.decimals, }), - network + network, ) )?.localizedMainCurrencyAmount : undefined diff --git a/background/redux-slices/utils/activities-utils.ts b/background/redux-slices/utils/activities-utils.ts index ae57ec8edc..7ffe2887e5 100644 --- a/background/redux-slices/utils/activities-utils.ts +++ b/background/redux-slices/utils/activities-utils.ts @@ -45,7 +45,7 @@ export type ActivityDetail = { const ACTIVITY_DECIMALS = 2 function isEnrichedTransaction( - transaction: Transaction | EnrichedEVMTransaction + transaction: Transaction | EnrichedEVMTransaction, ): transaction is EnrichedEVMTransaction { return "annotation" in transaction } @@ -116,7 +116,7 @@ const getValue = (transaction: Transaction | EnrichedEVMTransaction) => { asset, amount: value, }, - ACTIVITY_DECIMALS + ACTIVITY_DECIMALS, ).toLocaleString("default", { maximumFractionDigits: ACTIVITY_DECIMALS, }) @@ -139,7 +139,7 @@ const getValue = (transaction: Transaction | EnrichedEVMTransaction) => { } export const getActivity = ( - transaction: Transaction | EnrichedEVMTransaction + transaction: Transaction | EnrichedEVMTransaction, ): Activity => { const { to, from, blockHeight, nonce, hash, blockHash, asset } = transaction @@ -210,7 +210,7 @@ export const sortActivities = (a: Activity, b: Activity): number => { } export function getActivityDetails( - tx: EnrichedEVMTransaction + tx: EnrichedEVMTransaction, ): ActivityDetail[] { const { annotation } = tx const assetTransfers = @@ -253,6 +253,6 @@ export function getActivityDetails( transfer.direction === "in" ? transfer.localizedDecimalAmount : `-${transfer.localizedDecimalAmount}`, - })) + })), ) } diff --git a/background/redux-slices/utils/asset-utils.ts b/background/redux-slices/utils/asset-utils.ts index bc631d8235..98d1b6032f 100644 --- a/background/redux-slices/utils/asset-utils.ts +++ b/background/redux-slices/utils/asset-utils.ts @@ -91,7 +91,7 @@ function isPolygonBaseAsset(asset: AnyAsset) { */ export function isBaseAssetForNetwork( asset: AnyAsset, - network: AnyNetwork + network: AnyNetwork, ): asset is NetworkBaseAsset { if (network.chainID === OPTIMISM.chainID && isOptimismBaseAsset(asset)) { return true @@ -114,10 +114,10 @@ export function isBaseAssetForNetwork( */ export function getBuiltInNetworkBaseAsset( symbol: string, - chainID: string + chainID: string, ): (NetworkBaseAsset & Required) | undefined { return BUILT_IN_NETWORK_BASE_ASSETS.find( - (asset) => asset.symbol === symbol && asset.chainID === chainID + (asset) => asset.symbol === symbol && asset.chainID === chainID, ) } @@ -128,7 +128,7 @@ export function getBuiltInNetworkBaseAsset( */ export function sameNetworkBaseAsset( asset1: AnyAsset, - asset2: AnyAsset + asset2: AnyAsset, ): boolean { // for base assets with possible homeNetwork field if (isOptimismBaseAsset(asset1) && isOptimismBaseAsset(asset2)) return true @@ -157,12 +157,12 @@ export function sameNetworkBaseAsset( */ export function sameBuiltInNetworkBaseAsset( asset1: AnyAsset, - asset2: AnyAsset + asset2: AnyAsset, ): boolean { return BUILT_IN_NETWORK_BASE_ASSETS.some( (baseAsset) => sameNetworkBaseAsset(baseAsset, asset1) && - sameNetworkBaseAsset(baseAsset, asset2) + sameNetworkBaseAsset(baseAsset, asset2), ) } @@ -182,7 +182,7 @@ export function sameBuiltInNetworkBaseAsset( export function formatCurrencyAmount( currencySymbol: string, currencyAmount: number, - desiredDecimals: number + desiredDecimals: number, ): string { return ( new Intl.NumberFormat("default", { @@ -225,15 +225,15 @@ export function formatCurrencyAmount( * localized string based on the user's locale. */ export function enrichAssetAmountWithMainCurrencyValues< - T extends AnyAssetAmount + T extends AnyAssetAmount, >( assetAmount: T, assetPricePoint: PricePoint | undefined, - desiredDecimals: number + desiredDecimals: number, ): T & AssetMainCurrencyAmount { const convertedAssetAmount = convertAssetAmountViaPricePoint( assetAmount, - assetPricePoint + assetPricePoint, ) const { unitPrice } = unitPricePointForPricePoint(assetPricePoint) ?? { unitPrice: undefined, @@ -242,7 +242,7 @@ export function enrichAssetAmountWithMainCurrencyValues< if (typeof convertedAssetAmount !== "undefined") { const convertedDecimalValue = assetAmountToDesiredDecimals( convertedAssetAmount, - desiredDecimals + desiredDecimals, ) const unitPriceDecimalValue = typeof unitPrice === "undefined" @@ -255,7 +255,7 @@ export function enrichAssetAmountWithMainCurrencyValues< localizedMainCurrencyAmount: formatCurrencyAmount( convertedAssetAmount.asset.symbol, convertedDecimalValue, - desiredDecimals + desiredDecimals, ), unitPrice: unitPriceDecimalValue, localizedUnitPrice: @@ -264,7 +264,7 @@ export function enrichAssetAmountWithMainCurrencyValues< : formatCurrencyAmount( convertedAssetAmount.asset.symbol, unitPriceDecimalValue, - desiredDecimals + desiredDecimals, ), } } @@ -280,7 +280,7 @@ export function enrichAssetAmountWithMainCurrencyValues< */ export function enrichAssetAmountWithDecimalValues( assetAmount: T, - desiredDecimals: number + desiredDecimals: number, ): T & AssetDecimalAmount { const decimalAmount = isFungibleAssetAmount(assetAmount) ? assetAmountToDesiredDecimals(assetAmount, desiredDecimals) @@ -288,7 +288,7 @@ export function enrichAssetAmountWithDecimalValues( // precision. assetAmountToDesiredDecimals( { ...assetAmount, asset: { ...assetAmount.asset, decimals: 0 } }, - desiredDecimals + desiredDecimals, ) return { @@ -320,7 +320,7 @@ export function enrichAssetAmountWithDecimalValues( */ export function heuristicDesiredDecimalsForUnitPrice( minimumDesiredDecimals: number, - unitPrice: UnitPricePoint | number | undefined + unitPrice: UnitPricePoint | number | undefined, ): number { const numericUnitPrice = typeof unitPrice === "undefined" || typeof unitPrice === "number" @@ -330,7 +330,7 @@ export function heuristicDesiredDecimalsForUnitPrice( amount: unitPrice.unitPrice.amount, decimals: unitPrice.unitPrice.asset.decimals, }, - 10 + 10, ) return Math.max( @@ -338,7 +338,7 @@ export function heuristicDesiredDecimalsForUnitPrice( // desired decimals. Supporting this makes it easier for callers to // special-case unit prices that could not be resolved. Math.ceil(Math.log10(numericUnitPrice ?? 0)), - minimumDesiredDecimals + minimumDesiredDecimals, ) } @@ -408,7 +408,7 @@ type ChainID = string export type FullAssetID = `${ChainID}/${AssetID}` export const getFullAssetID = ( - asset: NetworkBaseAsset | SmartContractFungibleAsset + asset: NetworkBaseAsset | SmartContractFungibleAsset, ): FullAssetID => { if (isNetworkBaseAsset(asset)) { return `${asset.chainID}/base` diff --git a/background/redux-slices/utils/contract-utils.ts b/background/redux-slices/utils/contract-utils.ts index a83315b744..6fd981a71c 100644 --- a/background/redux-slices/utils/contract-utils.ts +++ b/background/redux-slices/utils/contract-utils.ts @@ -39,7 +39,7 @@ export function getProvider(this: unknown): TallyWeb3Provider { export const getContract = async ( address: string, - abi: ContractInterface + abi: ContractInterface, ): Promise => { const provider = getProvider() const signer = provider.getSigner() diff --git a/background/redux-slices/utils/nfts-utils.ts b/background/redux-slices/utils/nfts-utils.ts index 9f71de46a0..9f958ecf6f 100644 --- a/background/redux-slices/utils/nfts-utils.ts +++ b/background/redux-slices/utils/nfts-utils.ts @@ -28,7 +28,7 @@ const isETHPrice = (collection: NFTCollectionCached): boolean => export const getAdditionalDataForFilter = ( id: string, - accounts: AccountTotal[] + accounts: AccountTotal[], ): { name?: string; thumbnailURL?: string } => { const a = accounts.find(({ address }) => address === id) return a ? { name: a.name ?? a.address, thumbnailURL: a.avatarURL } : {} @@ -38,7 +38,7 @@ export const getAdditionalDataForFilter = ( export const sortByPrice = ( type: "asc" | "desc", collection1: NFTCollectionEnriched, - collection2: NFTCollectionEnriched + collection2: NFTCollectionEnriched, ): number => { if (collection1.floorPrice?.valueUSD === undefined) return 1 if (collection2.floorPrice?.valueUSD === undefined) return -1 @@ -52,14 +52,14 @@ export const sortByPrice = ( const sortByDate = ( type: "new" | "old", collection1: NFTCollectionCached, - collection2: NFTCollectionCached + collection2: NFTCollectionCached, ): number => { // NFTs are already sorted with current sort type const transferDate1 = new Date( - collection1.nfts[0]?.transferDate ?? "" + collection1.nfts[0]?.transferDate ?? "", ).getTime() const transferDate2 = new Date( - collection2.nfts[0]?.transferDate ?? "" + collection2.nfts[0]?.transferDate ?? "", ).getTime() if (type === "new") { @@ -71,12 +71,12 @@ const sortByDate = ( const sortNFTsByDate = ( type: "new" | "old", - nfts: NFTCached[] + nfts: NFTCached[], ): NFTCached[] => { const sorted = nfts.sort( (nft1, nft2) => new Date(nft2.transferDate ?? "").getTime() - - new Date(nft1.transferDate ?? "").getTime() + new Date(nft1.transferDate ?? "").getTime(), ) return type === "new" ? sorted : sorted.reverse() @@ -84,14 +84,14 @@ const sortNFTsByDate = ( const sortByNFTCount = ( collection1: NFTCollectionCached, - collection2: NFTCollectionCached + collection2: NFTCollectionCached, ): number => (Number(collection2?.nftCount) || 0) - (Number(collection1?.nftCount) || 0) export const sortCollections = ( collection1: NFTCollectionCached, collection2: NFTCollectionCached, - type: SortType + type: SortType, ): number => { switch (type) { case "asc": @@ -111,7 +111,7 @@ export const sortCollections = ( const sortNFTs = ( collection: NFTCollectionCached, - type: SortType + type: SortType, ): NFTCollectionCached => { switch (type) { case "new": @@ -132,7 +132,7 @@ const sortNFTs = ( type TotalFloorPriceMap = { [symbol: string]: number } export const getTotalFloorPrice = ( - collections: NFTCollectionCached[] + collections: NFTCollectionCached[], ): TotalFloorPriceMap => collections.reduce( (acc, collection) => { @@ -149,7 +149,7 @@ export const getTotalFloorPrice = ( return acc }, - { ETH: 0 } as TotalFloorPriceMap + { ETH: 0 } as TotalFloorPriceMap, ) export const getNFTsCount = (collections: NFTCollectionCached[]): number => @@ -158,7 +158,7 @@ export const getNFTsCount = (collections: NFTCollectionCached[]): number => export function enrichCollectionWithUSDFloorPrice( collection: NFTCollectionCached, prices: PricesState, - mainCurrencySymbol: string + mainCurrencySymbol: string, ): NFTCollectionEnriched { if (!collection.floorPrice) return collection @@ -166,7 +166,7 @@ export function enrichCollectionWithUSDFloorPrice( const symbol = isETHPrice(collection) ? "ETH" : tokenSymbol const baseAsset = BUILT_IN_NETWORK_BASE_ASSETS.find( - (asset) => symbol === asset.symbol + (asset) => symbol === asset.symbol, ) if (!baseAsset) return collection @@ -174,7 +174,7 @@ export function enrichCollectionWithUSDFloorPrice( const pricePoint = selectAssetPricePoint( prices, baseAsset, - mainCurrencySymbol + mainCurrencySymbol, ) const valueUSD = @@ -184,7 +184,7 @@ export function enrichCollectionWithUSDFloorPrice( amount: BigInt(Math.round(value * 10 ** baseAsset.decimals)), }, pricePoint, - 2 + 2, ).mainCurrencyAmount ?? 0 return { @@ -201,7 +201,7 @@ export const getFilteredCollections = ( collections: NFTCollectionCached[], filters: FiltersState, prices: PricesState, - mainCurrencySymbol: string + mainCurrencySymbol: string, ): NFTCollectionCached[] => { const applyPriceSort = filters.type === "asc" || filters.type === "desc" @@ -209,7 +209,7 @@ export const getFilteredCollections = ( .filter( (collection) => isEnabledFilter(collection.id, filters.collections) && - isEnabledFilter(collection.owner, filters.accounts) + isEnabledFilter(collection.owner, filters.accounts), ) .map((collection) => { const collectionWithSortedNFTs = sortNFTs(collection, filters.type) @@ -218,11 +218,11 @@ export const getFilteredCollections = ( ? enrichCollectionWithUSDFloorPrice( collectionWithSortedNFTs, prices, - mainCurrencySymbol + mainCurrencySymbol, ) : collectionWithSortedNFTs }) .sort((collection1, collection2) => - sortCollections(collection1, collection2, filters.type) + sortCollections(collection1, collection2, filters.type), ) } diff --git a/background/redux-slices/utils/tests/abilities-utils.unit.test.ts b/background/redux-slices/utils/tests/abilities-utils.unit.test.ts index 1f0c424760..df66c37943 100644 --- a/background/redux-slices/utils/tests/abilities-utils.unit.test.ts +++ b/background/redux-slices/utils/tests/abilities-utils.unit.test.ts @@ -7,7 +7,7 @@ import { } from "../abilities-utils" const ADDRESS = normalizeEVMAddress( - "0x208e94d5661a73360d9387d3ca169e5c130090cd" + "0x208e94d5661a73360d9387d3ca169e5c130090cd", ) const ABILITY_DEFAULT: Ability = { diff --git a/background/redux-slices/utils/tests/asset-utils.unit.test.ts b/background/redux-slices/utils/tests/asset-utils.unit.test.ts index 25f6692356..8920dd5528 100644 --- a/background/redux-slices/utils/tests/asset-utils.unit.test.ts +++ b/background/redux-slices/utils/tests/asset-utils.unit.test.ts @@ -49,8 +49,8 @@ describe("Asset utils", () => { expect(isVerifiedAsset(createSmartContractAsset())).toBe(false) expect( isVerifiedAsset( - createSmartContractAsset({ metadata: { verified: false } }) - ) + createSmartContractAsset({ metadata: { verified: false } }), + ), ).toBe(false) }) }) @@ -103,14 +103,14 @@ describe("Asset utils", () => { isSameAsset(smartContractAsset, { ...smartContractAsset, homeNetwork: { ...smartContractAsset.homeNetwork, chainID: "222" }, - }) + }), ).toBe(false) expect( isSameAsset(smartContractAsset, { ...smartContractAsset, contractAddress: "0x", - }) + }), ).toBe(false) }) @@ -135,7 +135,7 @@ describe("Asset utils", () => { expect(isSameAsset(ETH, ETH)).toBe(true) expect(isSameAsset(baseAsset, ETH)).toBe(false) expect(isSameAsset(baseAsset, { ...baseAsset, chainID: "999" })).toBe( - false + false, ) }) }) diff --git a/background/redux-slices/utils/tests/nfts-utils.unit.test.ts b/background/redux-slices/utils/tests/nfts-utils.unit.test.ts index ef08e79ce8..9cb5dab4ba 100644 --- a/background/redux-slices/utils/tests/nfts-utils.unit.test.ts +++ b/background/redux-slices/utils/tests/nfts-utils.unit.test.ts @@ -146,7 +146,7 @@ describe("NFTs utils", () => { expect( enrichCollectionWithUSDFloorPrice(collection, pricesState, USD.symbol) - .floorPrice + .floorPrice, ).toMatchObject({ value: 1, valueUSD: 2000, @@ -164,7 +164,7 @@ describe("NFTs utils", () => { expect( enrichCollectionWithUSDFloorPrice(collection, pricesState, USD.symbol) - .floorPrice + .floorPrice, ).toMatchObject({ value: 0.5, valueUSD: 1000, @@ -182,7 +182,7 @@ describe("NFTs utils", () => { expect( enrichCollectionWithUSDFloorPrice(collection, pricesState, USD.symbol) - .floorPrice + .floorPrice, ).toMatchObject({ value: 2, valueUSD: 30, @@ -200,7 +200,7 @@ describe("NFTs utils", () => { expect( enrichCollectionWithUSDFloorPrice(collection, pricesState, USD.symbol) - .floorPrice + .floorPrice, ).toMatchObject({ value: 0.5, valueUSD: 25, @@ -218,7 +218,7 @@ describe("NFTs utils", () => { expect( enrichCollectionWithUSDFloorPrice(collection, pricesState, USD.symbol) - .floorPrice + .floorPrice, ).toMatchObject({ value: 0.5, tokenSymbol: "MATIC", @@ -228,7 +228,7 @@ describe("NFTs utils", () => { const collection = COLLECTION_MOCK expect( enrichCollectionWithUSDFloorPrice(collection, pricesState, USD.symbol) - .floorPrice + .floorPrice, ).toBeUndefined() }) test("shouldn't add floor price if price is not using base assets", () => { @@ -242,7 +242,7 @@ describe("NFTs utils", () => { expect( enrichCollectionWithUSDFloorPrice(collection, pricesState, USD.symbol) - .floorPrice + .floorPrice, ).toMatchObject({ value: 0.5, tokenSymbol: "XYZ", @@ -277,14 +277,14 @@ describe("NFTs utils", () => { expect( collections .sort((a, b) => sortByPrice("asc", a, b)) - .map((collection) => collection.id) + .map((collection) => collection.id), ).toMatchObject(["zero", "cheap", "expensive", "undefined"]) }) test("should sort collection by descending floor price", () => { expect( collections .sort((a, b) => sortByPrice("desc", a, b)) - .map((collection) => collection.id) + .map((collection) => collection.id), ).toMatchObject(["expensive", "cheap", "zero", "undefined"]) }) }) diff --git a/background/services/abilities/db.ts b/background/services/abilities/db.ts index 025ca1df84..e033e37ad7 100644 --- a/background/services/abilities/db.ts +++ b/background/services/abilities/db.ts @@ -1,4 +1,4 @@ -import Dexie, { IndexableTypeArrayReadonly } from "dexie" +import Dexie from "dexie" import { ABILITY_TYPES, Ability } from "../../abilities" import { HexString, NormalizedEVMAddress } from "../../types" @@ -23,7 +23,7 @@ export class AbilitiesDatabase extends Dexie { const abilities = await tx.table("abilities").toArray() // Remove abilities from the db whose types are not supported const filteredAbilities = abilities.filter(({ type }) => - ABILITY_TYPES.includes(type) + ABILITY_TYPES.includes(type), ) await tx.table("abilitiesTemp").bulkAdd(filteredAbilities) }) @@ -44,10 +44,10 @@ export class AbilitiesDatabase extends Dexie { } async removeAbilities(abilities: Ability[]): Promise { - const keys = abilities.map(({ abilityId, address }) => [ + const keys = abilities.map(({ abilityId, address }): [string, string] => [ abilityId, address, - ]) as unknown as IndexableTypeArrayReadonly + ]) await this.abilities.bulkDelete(keys) } @@ -61,14 +61,14 @@ export class AbilitiesDatabase extends Dexie { async getAbility( address: NormalizedEVMAddress, - abilityId: string + abilityId: string, ): Promise { return this.abilities.get({ address, abilityId }) } async markAsCompleted( address: NormalizedEVMAddress, - abilityId: string + abilityId: string, ): Promise { const ability = await this.getAbility(address, abilityId) if (ability) { @@ -84,7 +84,7 @@ export class AbilitiesDatabase extends Dexie { async markAsRemoved( address: NormalizedEVMAddress, - abilityId: string + abilityId: string, ): Promise { const ability = await this.getAbility(address, abilityId) if (ability) { diff --git a/background/services/abilities/index.ts b/background/services/abilities/index.ts index df76c95c47..7156b3a50e 100644 --- a/background/services/abilities/index.ts +++ b/background/services/abilities/index.ts @@ -15,7 +15,7 @@ import LedgerService from "../ledger" import { HOUR } from "../../constants" const normalizeDaylightRequirements = ( - requirement: DaylightAbilityRequirement + requirement: DaylightAbilityRequirement, ): AbilityRequirement => { if (requirement.type === "hasTokenBalance") { return { @@ -44,7 +44,7 @@ const normalizeDaylightRequirements = ( export const normalizeDaylightAbilities = ( daylightAbilities: DaylightAbility[], - address: NormalizedEVMAddress + address: NormalizedEVMAddress, ): Ability[] => { const normalizedAbilities: Ability[] = [] @@ -64,7 +64,7 @@ export const normalizeDaylightAbilities = ( address, requirement: normalizeDaylightRequirements( // Just take the 1st requirement for now - daylightAbility.requirements[0] + daylightAbility.requirements[0], ), interestRank: idx, }) @@ -85,7 +85,7 @@ export default class AbilitiesService extends BaseService { constructor( private db: AbilitiesDatabase, private chainService: ChainService, - private ledgerService: LedgerService + private ledgerService: LedgerService, ) { super() } @@ -121,7 +121,7 @@ export default class AbilitiesService extends BaseService { private async syncAbilities(latestAbilities: Ability[]): Promise { const cachedAbilities = await this.db.getAbilities() const cachedAbilitiesById = Object.fromEntries( - cachedAbilities.map((ability) => [ability.abilityId, ability]) + cachedAbilities.map((ability) => [ability.abilityId, ability]), ) const syncedAbilities = latestAbilities.map((latestAbility) => { @@ -153,7 +153,7 @@ export default class AbilitiesService extends BaseService { const latestDaylightAbilities = await getDaylightAbilities(address) const latestAbilities = normalizeDaylightAbilities( latestDaylightAbilities, - address + address, ) const updatedAbilities = await this.syncAbilities(latestAbilities) @@ -166,7 +166,7 @@ export default class AbilitiesService extends BaseService { async markAbilityAsCompleted( address: NormalizedEVMAddress, - abilityId: string + abilityId: string, ): Promise { const ability = await this.db.markAsCompleted(address, abilityId) @@ -177,7 +177,7 @@ export default class AbilitiesService extends BaseService { async markAbilityAsRemoved( address: NormalizedEVMAddress, - abilityId: string + abilityId: string, ): Promise { const ability = await this.db.markAsRemoved(address, abilityId) @@ -190,7 +190,7 @@ export default class AbilitiesService extends BaseService { localStorage.setItem(this.ABILITY_TIME_KEY, Date.now().toString()) const accountsToTrack = await this.chainService.getAccountsToTrack() const addresses = new Set( - accountsToTrack.map((account) => normalizeEVMAddress(account.address)) + accountsToTrack.map((account) => normalizeEVMAddress(account.address)), ) // 1-by-1 decreases likelihood of hitting rate limit @@ -213,7 +213,7 @@ export default class AbilitiesService extends BaseService { address: NormalizedEVMAddress, abilitySlug: string, abilityId: string, - reason: string + reason: string, ): Promise { await createSpamReport(address, abilitySlug, reason) this.markAbilityAsRemoved(address, abilityId) diff --git a/background/services/abilities/tests/index.integration.test.ts b/background/services/abilities/tests/index.integration.test.ts index dcd7e3e8ec..64e5023370 100644 --- a/background/services/abilities/tests/index.integration.test.ts +++ b/background/services/abilities/tests/index.integration.test.ts @@ -13,12 +13,12 @@ import { AbilitiesDatabase } from "../db" import { normalizeEVMAddress } from "../../../lib/utils" const address = normalizeEVMAddress( - "0x208e94d5661a73360d9387d3ca169e5c130090cd" + "0x208e94d5661a73360d9387d3ca169e5c130090cd", ) const sortAbilities = (abilities: Ability[]) => abilities.sort( - (ability1, ability2) => ability1.interestRank - ability2.interestRank + (ability1, ability2) => ability1.interestRank - ability2.interestRank, ) type AbilitiesServiceExternalized = Omit & { @@ -133,7 +133,7 @@ describe("AbilitiesService", () => { // We use the updated state because it should be the same in the cache const abilities = normalizeDaylightAbilities( updatedDaylightAbilities, - address + address, ) expect(stubGetAbilities.called).toBe(true) @@ -144,7 +144,7 @@ describe("AbilitiesService", () => { { address, abilities, - } + }, ) }) @@ -166,7 +166,7 @@ describe("AbilitiesService", () => { // We use the updated state because it should be the same in the cache const abilities = normalizeDaylightAbilities( updatedDaylightAbilities, - address + address, ) expect(stubGetAbilities.called).toBe(true) @@ -177,7 +177,7 @@ describe("AbilitiesService", () => { { address, abilities, - } + }, ) }) @@ -192,7 +192,7 @@ describe("AbilitiesService", () => { // Mark second ability as completed await abilitiesServiceExternalized.db.markAsCompleted( address, - daylightAbilities[1].uid + daylightAbilities[1].uid, ) await abilitiesServiceExternalized.pollForAbilities(address) @@ -209,7 +209,7 @@ describe("AbilitiesService", () => { { address, abilities, - } + }, ) }) @@ -224,7 +224,7 @@ describe("AbilitiesService", () => { // Mark second ability as removed await abilitiesServiceExternalized.db.markAsRemoved( address, - daylightAbilities[1].uid + daylightAbilities[1].uid, ) await abilitiesServiceExternalized.pollForAbilities(address) @@ -241,7 +241,7 @@ describe("AbilitiesService", () => { { address, abilities, - } + }, ) }) @@ -263,7 +263,7 @@ describe("AbilitiesService", () => { // Normalized abilities that should be returned for redux status updates const abilities = sortAbilities( - normalizeDaylightAbilities(updatedDaylightAbilities, address) + normalizeDaylightAbilities(updatedDaylightAbilities, address), ) expect(stubGetAbilities.called).toBe(true) @@ -274,7 +274,7 @@ describe("AbilitiesService", () => { { address, abilities, - } + }, ) }) }) diff --git a/background/services/analytics/index.ts b/background/services/analytics/index.ts index 7e2c8a6f33..962ed33bde 100644 --- a/background/services/analytics/index.ts +++ b/background/services/analytics/index.ts @@ -41,7 +41,7 @@ export default class AnalyticsService extends BaseService { private constructor( private db: AnalyticsDatabase, - private preferenceService: PreferenceService + private preferenceService: PreferenceService, ) { super() } @@ -74,7 +74,7 @@ export default class AnalyticsService extends BaseService { browser.runtime.setUninstallURL( process.env.NODE_ENV === "development" ? "about:blank" - : `${process.env.WEBSITE_ORIGIN}/goodbye?uuid=${uuid}` + : `${process.env.WEBSITE_ORIGIN}/goodbye?uuid=${uuid}`, ) if (isNew) { @@ -91,7 +91,7 @@ export default class AnalyticsService extends BaseService { async sendAnalyticsEvent( eventName: AnalyticsEvent, - payload?: Record + payload?: Record, ): Promise { // @TODO: implement event batching @@ -109,7 +109,7 @@ export default class AnalyticsService extends BaseService { async sendOneTimeAnalyticsEvent( eventName: OneTimeAnalyticsEvent, - payload?: Record + payload?: Record, ): Promise { const { isEnabled } = await this.preferenceService.getAnalyticsPreferences() if (!isEnabled) { diff --git a/background/services/analytics/tests/index.integration.test.ts b/background/services/analytics/tests/index.integration.test.ts index b696c7c03e..8e8e116fee 100644 --- a/background/services/analytics/tests/index.integration.test.ts +++ b/background/services/analytics/tests/index.integration.test.ts @@ -64,11 +64,11 @@ describe("AnalyticsService", () => { expect(analyticsService.emitter.emit).toBeCalledTimes(2) expect(analyticsService.emitter.emit).toHaveBeenCalledWith( "enableDefaultOn", - undefined + undefined, ) expect(analyticsService.emitter.emit).toHaveBeenCalledWith( "serviceStarted", - undefined + undefined, ) expect(preferenceService.emitter.emit).toBeCalledTimes(1) @@ -77,7 +77,7 @@ describe("AnalyticsService", () => { { isEnabled: true, hasDefaultOnBeenTurnedOn: true, - } + }, ) expect(preferenceService.updateAnalyticsPreferences).toBeCalledTimes(1) }) @@ -98,7 +98,7 @@ describe("AnalyticsService", () => { expect(posthog.sendPosthogEvent).toHaveBeenCalledWith( expect.anything(), "New install", - undefined + undefined, ) }) }) @@ -112,7 +112,7 @@ describe("AnalyticsService", () => { Promise.resolve({ isEnabled: true, hasDefaultOnBeenTurnedOn: true, - }) + }), ) // Initialize analytics uuid @@ -123,17 +123,17 @@ describe("AnalyticsService", () => { it("should not run the initialization flow", async () => { // uuid should be already present expect(await analyticsService["getOrCreateAnalyticsUUID"]()).toEqual( - expect.objectContaining({ isNew: false }) + expect.objectContaining({ isNew: false }), ) expect(analyticsService.sendAnalyticsEvent).not.toHaveBeenCalledWith( expect.anything(), AnalyticsEvent.NEW_INSTALL, - undefined + undefined, ) expect( - preferenceService.updateAnalyticsPreferences + preferenceService.updateAnalyticsPreferences, ).not.toHaveBeenCalled() }) @@ -151,7 +151,7 @@ describe("AnalyticsService", () => { Promise.resolve({ isEnabled: false, hasDefaultOnBeenTurnedOn: true, - }) + }), ) // Initialize analytics uuid diff --git a/background/services/base.ts b/background/services/base.ts index e625a5245a..91d0887086 100644 --- a/background/services/base.ts +++ b/background/services/base.ts @@ -108,7 +108,7 @@ export default abstract class BaseService * are not added until `startService` is called. */ protected constructor( - protected readonly alarmSchedules: AlarmHandlerScheduleMap = {} + protected readonly alarmSchedules: AlarmHandlerScheduleMap = {}, ) {} /** diff --git a/background/services/chain/asset-data-helper.ts b/background/services/chain/asset-data-helper.ts index 03694c347a..c39bd6e7c9 100644 --- a/background/services/chain/asset-data-helper.ts +++ b/background/services/chain/asset-data-helper.ts @@ -38,29 +38,29 @@ export default class AssetDataHelper { async getTokenBalance( addressOnNetwork: AddressOnNetwork, - smartContractAddress: HexString + smartContractAddress: HexString, ): Promise { const provider = this.providerTracker.providerForNetwork( - addressOnNetwork.network + addressOnNetwork.network, ) if (!provider) { throw logger.buildError( "Could not find a provider for network", - addressOnNetwork.network + addressOnNetwork.network, ) } const balances = await getTokenBalances( addressOnNetwork, [smartContractAddress], - provider + provider, ) if (balances.length < 1) { throw logger.buildError( "Unable to retrieve balances for contract", - smartContractAddress + smartContractAddress, ) } @@ -69,10 +69,10 @@ export default class AssetDataHelper { async getTokenBalances( addressOnNetwork: AddressOnNetwork, - smartContractAddresses?: HexString[] + smartContractAddresses?: HexString[], ): Promise { const provider = this.providerTracker.providerForNetwork( - addressOnNetwork.network + addressOnNetwork.network, ) if (typeof provider === "undefined") { return [] @@ -85,12 +85,12 @@ export default class AssetDataHelper { return await getTokenBalances( addressOnNetwork, smartContractAddresses || [], - provider + provider, ) } catch (error) { logger.debug( "Problem resolving asset balances; network may not support it.", - error + error, ) } @@ -114,7 +114,7 @@ export default class AssetDataHelper { const balance = await getBalance( provider, token, - addressOnNetwork.address + addressOnNetwork.address, ) return { smartContract: { @@ -131,10 +131,10 @@ export default class AssetDataHelper { } async getTokenMetadata( - tokenSmartContract: SmartContract + tokenSmartContract: SmartContract, ): Promise { const provider = this.providerTracker.providerForNetwork( - tokenSmartContract.homeNetwork + tokenSmartContract.homeNetwork, ) if (typeof provider === "undefined") { return undefined @@ -155,10 +155,10 @@ export default class AssetDataHelper { addressOnNetwork: AddressOnNetwork, startBlock: number, endBlock?: number, - incomingOnly = false + incomingOnly = false, ): Promise { const provider = this.providerTracker.providerForNetwork( - addressOnNetwork.network + addressOnNetwork.network, ) if (typeof provider === "undefined") { return [] @@ -172,7 +172,7 @@ export default class AssetDataHelper { addressOnNetwork, "incoming", startBlock, - endBlock + endBlock, ), ] if (!incomingOnly) { @@ -182,8 +182,8 @@ export default class AssetDataHelper { addressOnNetwork, "outgoing", startBlock, - endBlock - ) + endBlock, + ), ) } return (await Promise.all(promises)).flat() @@ -192,7 +192,7 @@ export default class AssetDataHelper { logger.warn( "Problem resolving asset transfers via Alchemy helper; network may " + "not support it.", - error + error, ) // Rethrow as consumers like ChainService need the exception to manage diff --git a/background/services/chain/db.ts b/background/services/chain/db.ts index 07db3777b2..bf5d77dbe2 100644 --- a/background/services/chain/db.ts +++ b/background/services/chain/db.ts @@ -154,8 +154,8 @@ export class ChainDatabase extends Dexie { const filteredModifications = Object.fromEntries( Object.entries(modifications).filter(([k]) => - allowedVariants.includes(k) - ) + allowedVariants.includes(k), + ), ) // If there is an attempt to modify `firstSeen`, prefer the earliest @@ -165,13 +165,13 @@ export class ChainDatabase extends Dexie { ...filteredModifications, firstSeen: Math.min( chainTransaction.firstSeen, - filteredModifications.firstSeen + filteredModifications.firstSeen, ), } } return filteredModifications - } + }, ) this.version(5).stores({ @@ -235,7 +235,7 @@ export class ChainDatabase extends Dexie { async getTransaction( network: Network, - txHash: string + txHash: string, ): Promise { return ( ( @@ -306,7 +306,7 @@ export class ChainDatabase extends Dexie { .toCollection() .filter((account) => account.network.chainID === chainID) return accountsToTrack.delete() - } + }, ) } @@ -315,10 +315,10 @@ export class ChainDatabase extends Dexie { } async getEVMNetworkByChainID( - chainID: string + chainID: string, ): Promise { return (await this.networks.where("family").equals("EVM").toArray()).find( - (network) => network.chainID === chainID + (network) => network.chainID === chainID, ) } @@ -326,7 +326,7 @@ export class ChainDatabase extends Dexie { name: string, symbol: string, chainID: string, - decimals: number + decimals: number, ) { await this.baseAssets.put({ decimals, @@ -358,8 +358,8 @@ export class ChainDatabase extends Dexie { if (rpcUrls) { await this.addRpcUrls(chainId, rpcUrls) } - } - ) + }, + ), ) } @@ -374,13 +374,13 @@ export class ChainDatabase extends Dexie { async (defaultNetwork) => { if ( !existingNetworks.some((network) => - sameNetwork(network, defaultNetwork) + sameNetwork(network, defaultNetwork), ) ) { await this.networks.put(defaultNetwork) } - } - ) + }, + ), ) } @@ -408,7 +408,7 @@ export class ChainDatabase extends Dexie { async addCustomRpcUrl( chainID: string, rpcUrl: string, - supportedMethods: string[] = [] + supportedMethods: string[] = [], ): Promise { return this.customRpcConfig.put({ chainID, @@ -438,7 +438,7 @@ export class ChainDatabase extends Dexie { } async getTransactionsForNetworkQuery( - network: Network + network: Network, ): Promise> { return this.chainTransactions.where("network.name").equals(network.name) } @@ -451,21 +451,21 @@ export class ChainDatabase extends Dexie { * Looks up and returns all pending transactions for the given network. */ async getNetworkPendingTransactions( - network: Network + network: Network, ): Promise<(AnyEVMTransaction & { firstSeen: UNIXTime })[]> { const transactions = await this.getTransactionsForNetworkQuery(network) return transactions .filter( (transaction) => !("status" in transaction) && - (transaction.blockHash === null || transaction.blockHeight === null) + (transaction.blockHash === null || transaction.blockHeight === null), ) .toArray() } async getBlock( network: Network, - blockHash: string + blockHash: string, ): Promise { return ( ( @@ -479,21 +479,21 @@ export class ChainDatabase extends Dexie { async addOrUpdateTransaction( tx: AnyEVMTransaction, - dataSource: Transaction["dataSource"] + dataSource: Transaction["dataSource"], ): Promise { await this.transaction("rw", this.chainTransactions, () => this.chainTransactions.put({ ...tx, firstSeen: Date.now(), dataSource, - }) + }), ) } async getLatestAccountBalance( address: string, network: Network, - asset: FungibleAsset + asset: FungibleAsset, ): Promise { // TODO this needs to be tightened up, both for performance and specificity const balanceCandidates = await this.balances @@ -503,7 +503,7 @@ export class ChainDatabase extends Dexie { (balance) => balance.address === address && balance.assetAmount.asset.symbol === asset.symbol && - balance.network.name === network.name + balance.network.name === network.name, ) .reverse() .sortBy("retrievedAt") @@ -520,7 +520,7 @@ export class ChainDatabase extends Dexie { } async getOldestAccountAssetTransferLookup( - addressNetwork: AddressOnNetwork + addressNetwork: AddressOnNetwork, ): Promise { // TODO this is inefficient, make proper use of indexing const lookups = await this.accountAssetTransferLookups @@ -532,12 +532,12 @@ export class ChainDatabase extends Dexie { oldestBlock === null || lookup.startBlock < oldestBlock ? lookup.startBlock : oldestBlock, - null + null, ) } async getNewestAccountAssetTransferLookup( - addressNetwork: AddressOnNetwork + addressNetwork: AddressOnNetwork, ): Promise { // TODO this is inefficient, make proper use of indexing const lookups = await this.accountAssetTransferLookups @@ -550,14 +550,14 @@ export class ChainDatabase extends Dexie { newestBlock === null || lookup.endBlock > newestBlock ? lookup.endBlock : newestBlock, - null + null, ) } async recordAccountAssetTransferLookup( addressNetwork: AddressOnNetwork, startBlock: bigint, - endBlock: bigint + endBlock: bigint, ): Promise { await this.accountAssetTransferLookups.add({ addressNetwork, @@ -586,7 +586,7 @@ export class ChainDatabase extends Dexie { } async getTrackedAddressesOnNetwork( - network: EVMNetwork + network: EVMNetwork, ): Promise { return this.accountsToTrack .where("network.name") @@ -614,8 +614,8 @@ export class ChainDatabase extends Dexie { .keys() return new Set( chainIDs.filter( - (chainID): chainID is string => typeof chainID === "string" - ) + (chainID): chainID is string => typeof chainID === "string", + ), ) } } diff --git a/background/services/chain/index.ts b/background/services/chain/index.ts index 1fd02bc0f8..34e201e5b6 100644 --- a/background/services/chain/index.ts +++ b/background/services/chain/index.ts @@ -242,7 +242,7 @@ export default class ChainService extends BaseService { private constructor( private db: ChainDatabase, private preferenceService: PreferenceService, - private internalSignerService: InternalSignerService + private internalSignerService: InternalSignerService, ) { super({ queuedTransactions: { @@ -342,16 +342,16 @@ export default class ChainService extends BaseService { .then((pendingTransactions) => { pendingTransactions.forEach(({ hash, firstSeen }) => { logger.debug( - `Queuing pending transaction ${hash} for status lookup.` + `Queuing pending transaction ${hash} for status lookup.`, ) this.queueTransactionHashToRetrieve(network, hash, firstSeen) }) }) .catch((e) => { logger.error(e) - }) - ) - ) + }), + ), + ), ) } @@ -363,7 +363,7 @@ export default class ChainService extends BaseService { this.lastUserActivityOnNetwork = Object.fromEntries( - this.supportedNetworks.map((network) => [network.chainID, 0]) + this.supportedNetworks.map((network) => [network.chainID, 0]), ) || {} this.providers = { @@ -373,9 +373,9 @@ export default class ChainService extends BaseService { makeSerialFallbackProvider( network.chainID, rpcUrls.find((v) => v.chainID === network.chainID)?.rpcUrls || [], - customRpcUrls.find((v) => v.chainID === network.chainID) + customRpcUrls.find((v) => v.chainID === network.chainID), ), - ]) + ]), ), } } @@ -393,12 +393,12 @@ export default class ChainService extends BaseService { async addCustomProvider( chainID: string, rpcUrl: string, - customProviderCreator: ProviderCreator + customProviderCreator: ProviderCreator, ): Promise { await this.db.addCustomRpcUrl( chainID, rpcUrl, - customProviderCreator.supportedMethods + customProviderCreator.supportedMethods, ) this.providers.evm[chainID]?.addCustomProvider(customProviderCreator) } @@ -425,8 +425,8 @@ export default class ChainService extends BaseService { await Promise.allSettled( networksToTrack.map(async (network) => - this.startTrackingNetworkOrThrow(network.chainID) - ) + this.startTrackingNetworkOrThrow(network.chainID), + ), ) return this.trackedNetworks @@ -451,18 +451,18 @@ export default class ChainService extends BaseService { */ async startTrackingNetworkOrThrow(chainID: string): Promise { const trackedNetwork = this.trackedNetworks.find((network) => - sameChainID(network.chainID, chainID) + sameChainID(network.chainID, chainID), ) if (trackedNetwork) { logger.warn( - `${trackedNetwork.name} already being tracked - no need to activate it` + `${trackedNetwork.name} already being tracked - no need to activate it`, ) return trackedNetwork } const networkToTrack = this.supportedNetworks.find((ntwrk) => - sameChainID(ntwrk.chainID, chainID) + sameChainID(ntwrk.chainID, chainID), ) if (!networkToTrack) { @@ -473,13 +473,13 @@ export default class ChainService extends BaseService { const existingSubscription = this.subscribedNetworks.find( (networkSubscription) => - networkSubscription.network.chainID === networkToTrack.chainID + networkSubscription.network.chainID === networkToTrack.chainID, ) if (!existingSubscription) { this.subscribeToNetworkEvents(networkToTrack) const addressesToTrack = new Set( - (await this.getAccountsToTrack()).map((account) => account.address) + (await this.getAccountsToTrack()).map((account) => account.address), ) addressesToTrack.forEach((address) => { this.addAccountToTrack({ @@ -504,10 +504,10 @@ export default class ChainService extends BaseService { "Request received for operation on an inactive network", network, "expected", - this.trackedNetworks + this.trackedNetworks, ) throw new Error( - `Unexpected network ${network.name}, id: ${network.chainID}` + `Unexpected network ${network.name}, id: ${network.chainID}`, ) } return provider @@ -524,7 +524,7 @@ export default class ChainService extends BaseService { */ private async populatePartialLegacyEVMTransactionRequest( network: EVMNetwork, - partialRequest: EnrichedLegacyTransactionSignatureRequest + partialRequest: EnrichedLegacyTransactionSignatureRequest, ): Promise<{ transactionRequest: EnrichedLegacyTransactionRequest gasEstimationError: string | undefined @@ -558,7 +558,7 @@ export default class ChainService extends BaseService { transactionRequest.estimatedRollupFee = await this.estimateL1RollupFeeForOptimism( network, - unsignedTransactionFromEVMTransaction(transactionRequest) + unsignedTransactionFromEVMTransaction(transactionRequest), ) } @@ -568,7 +568,7 @@ export default class ChainService extends BaseService { try { estimatedGasLimit = await this.estimateGasLimit( network, - transactionRequest + transactionRequest, ) } catch (error) { logger.error("Error estimating gas limit: ", error) @@ -612,7 +612,7 @@ export default class ChainService extends BaseService { */ private async populatePartialEIP1559TransactionRequest( network: EVMNetwork, - partialRequest: EnrichedEIP1559TransactionSignatureRequest + partialRequest: EnrichedEIP1559TransactionSignatureRequest, ): Promise<{ transactionRequest: EnrichedEIP1559TransactionRequest gasEstimationError: string | undefined @@ -651,7 +651,7 @@ export default class ChainService extends BaseService { try { estimatedGasLimit = await this.estimateGasLimit( network, - transactionRequest + transactionRequest, ) } catch (error) { // Try to identify unpredictable gas errors to bubble that information @@ -687,7 +687,7 @@ export default class ChainService extends BaseService { async populatePartialTransactionRequest( network: EVMNetwork, partialRequest: EnrichedEVMTransactionSignatureRequest, - defaults: { maxFeePerGas: bigint; maxPriorityFeePerGas: bigint } + defaults: { maxFeePerGas: bigint; maxPriorityFeePerGas: bigint }, ): Promise<{ transactionRequest: EnrichedEVMTransactionRequest gasEstimationError: string | undefined @@ -704,7 +704,7 @@ export default class ChainService extends BaseService { ...(partialRequest as EnrichedEIP1559TransactionSignatureRequest), maxFeePerGas, maxPriorityFeePerGas, - } + }, ) return populated } @@ -713,7 +713,7 @@ export default class ChainService extends BaseService { network, { ...(partialRequest as EnrichedLegacyTransactionRequest), - } + }, ) return populated } @@ -729,7 +729,7 @@ export default class ChainService extends BaseService { * for signing by a signer. */ async populateEVMTransactionNonce( - transactionRequest: TransactionRequest + transactionRequest: TransactionRequest, ): Promise { if (typeof transactionRequest.nonce !== "undefined") { // TS undefined checks don't narrow the containing object's type, so we @@ -744,7 +744,7 @@ export default class ChainService extends BaseService { // https://docs.ethers.io/v5/single-page/#/v5/api/providers/provider/-%23-Provider-getTransactionCount const chainTransactionCount = await provider.getTransactionCount( transactionRequest.from, - "latest" + "latest", ) let knownNextNonce @@ -787,7 +787,7 @@ export default class ChainService extends BaseService { "existing nonce", existingNonce, "using", - knownNextNonce + knownNextNonce, ) } @@ -807,7 +807,7 @@ export default class ChainService extends BaseService { transactionRequest: | TransactionRequestWithNonce | SignedTransaction - | AnyEVMTransaction + | AnyEVMTransaction, ): void { const chainID = "chainID" in transactionRequest @@ -853,21 +853,21 @@ export default class ChainService extends BaseService { } async getAccountsToTrack( - onlyActiveAccounts = false + onlyActiveAccounts = false, ): Promise { const accounts = await this.db.getAccountsToTrack() if (onlyActiveAccounts) { return accounts.filter( ({ address, network }) => this.isCurrentlyActiveAddress(address) && - this.isCurrentlyActiveChainID(network.chainID) + this.isCurrentlyActiveChainID(network.chainID), ) } return accounts } async getTrackedAddressesOnNetwork( - network: EVMNetwork + network: EVMNetwork, ): Promise { return this.db.getTrackedAddressesOnNetwork(network) } @@ -886,7 +886,7 @@ export default class ChainService extends BaseService { return this.db.getEVMNetworkByChainID(chainID) } return network - }) + }), ) return networks.filter((network): network is EVMNetwork => !!network) } @@ -901,13 +901,14 @@ export default class ChainService extends BaseService { }: AddressOnNetwork): Promise { const normalizedAddress = normalizeEVMAddress(address) - const balance = await this.providerForNetworkOrThrow(network).getBalance( - normalizedAddress - ) + const balance = + await this.providerForNetworkOrThrow(network).getBalance( + normalizedAddress, + ) const trackedAccounts = await this.getAccountsToTrack() const allTrackedAddresses = new Set( - trackedAccounts.map((account) => account.address) + trackedAccounts.map((account) => account.address), ) const accountBalance: AccountBalance = { @@ -940,7 +941,7 @@ export default class ChainService extends BaseService { async addAccountToTrack(addressNetwork: AddressOnNetwork): Promise { const source = this.internalSignerService.getSignerSourceForAddress( - addressNetwork.address + addressNetwork.address, ) const isAccountOnNetworkAlreadyTracked = await this.db.getTrackedAccountOnNetwork(addressNetwork) @@ -953,20 +954,20 @@ export default class ChainService extends BaseService { this.subscribeToAccountTransactions(addressNetwork).catch((e) => { logger.error( "chainService/addAccountToTrack: Error subscribing to account transactions", - e + e, ) }) this.getLatestBaseAccountBalance(addressNetwork).catch((e) => { logger.error( "chainService/addAccountToTrack: Error getting latestBaseAccountBalance", - e + e, ) }) if (source !== SignerImportSource.internal) { this.loadHistoricAssetTransfers(addressNetwork).catch((e) => { logger.error( "chainService/addAccountToTrack: Error loading historic asset transfers", - e + e, ) }) } @@ -991,7 +992,7 @@ export default class ChainService extends BaseService { */ async getBlockData( network: EVMNetwork, - blockHash: string + blockHash: string, ): Promise { const cachedBlock = await this.db.getBlock(network, blockHash) if (cachedBlock) { @@ -999,9 +1000,8 @@ export default class ChainService extends BaseService { } // Looking for new block - const resultBlock = await this.providerForNetworkOrThrow(network).getBlock( - blockHash - ) + const resultBlock = + await this.providerForNetworkOrThrow(network).getBlock(blockHash) const block = blockFromEthersBlock(network, resultBlock) @@ -1022,15 +1022,14 @@ export default class ChainService extends BaseService { */ async getTransaction( network: EVMNetwork, - txHash: HexString + txHash: HexString, ): Promise { const cachedTx = await this.db.getTransaction(network, txHash) if (cachedTx) { return cachedTx } - const gethResult = await this.providerForNetworkOrThrow( - network - ).getTransaction(txHash) + const gethResult = + await this.providerForNetworkOrThrow(network).getTransaction(txHash) const newTransaction = transactionFromEthersTransaction(gethResult, network) if (!newTransaction.blockHash && !newTransaction.blockHeight) { @@ -1060,7 +1059,7 @@ export default class ChainService extends BaseService { network: EVMNetwork, txHash: HexString, firstSeen: UNIXTime, - priority = 0 + priority = 0, ): void { const newElement: PriorityQueuedTxToRetrieve = { transaction: { hash: txHash, network, firstSeen }, @@ -1070,13 +1069,13 @@ export default class ChainService extends BaseService { if (!seen) { // @TODO Interleave initial transaction retrieval by network const existingTransactionIndex = this.transactionsToRetrieve.findIndex( - ({ priority: txPriority }) => newElement.priority > txPriority + ({ priority: txPriority }) => newElement.priority > txPriority, ) if (existingTransactionIndex >= 0) { this.transactionsToRetrieve.splice( existingTransactionIndex, 0, - newElement + newElement, ) } else { this.transactionsToRetrieve.push(newElement) @@ -1094,7 +1093,7 @@ export default class ChainService extends BaseService { return this.transactionsToRetrieve.some( ({ transaction }) => transaction.hash === txHash && - txNetwork.chainID === transaction.network.chainID + txNetwork.chainID === transaction.network.chainID, ) } @@ -1111,7 +1110,7 @@ export default class ChainService extends BaseService { // Let's clean up the tx queue if the hash is present. // The pending tx hash should be on chain as soon as it's broadcasted. this.transactionsToRetrieve = this.transactionsToRetrieve.filter( - ({ transaction }) => transaction.hash !== txHash + ({ transaction }) => transaction.hash !== txHash, ) } } @@ -1122,13 +1121,13 @@ export default class ChainService extends BaseService { */ async estimateGasLimit( network: EVMNetwork, - transactionRequest: TransactionRequest + transactionRequest: TransactionRequest, ): Promise { if (isEnabled(FeatureFlags.USE_MAINNET_FORK)) { return 350000n } const estimate = await this.providerForNetworkOrThrow(network).estimateGas( - ethersTransactionFromTransactionRequest(transactionRequest) + ethersTransactionFromTransactionRequest(transactionRequest), ) // Add 10% more gas as a safety net @@ -1149,7 +1148,7 @@ export default class ChainService extends BaseService { async estimateL1RollupFeeForOptimism( network: EVMNetwork, - transaction: UnsignedTransaction | EnrichedEVMTransactionRequest + transaction: UnsignedTransaction | EnrichedEVMTransactionRequest, ): Promise { // Optimism-specific implementation // https://community.optimism.io/docs/developers/build/transaction-fees/#displaying-fees-to-users @@ -1167,7 +1166,7 @@ export default class ChainService extends BaseService { const GasOracle = new ethers.Contract( OPTIMISM_GAS_ORACLE_ADDRESS, OPTIMISM_GAS_ORACLE_ABI, - provider + provider, ) const l1Fee = await GasOracle.getL1Fee(unsignedRLPEncodedTransaction) @@ -1193,12 +1192,12 @@ export default class ChainService extends BaseService { * it needs to include all gas limit and price params. */ async broadcastSignedTransaction( - transaction: SignedTransaction + transaction: SignedTransaction, ): Promise { try { const serialized = utils.serializeTransaction( ethersTransactionFromSignedTransaction(transaction), - { r: transaction.r, s: transaction.s, v: transaction.v } + { r: transaction.r, s: transaction.s, v: transaction.v }, ) await Promise.all([ @@ -1211,19 +1210,19 @@ export default class ChainService extends BaseService { logger.debug( "Broadcast error caught, saving failed status and releasing nonce...", transaction, - error + error, ) // Failure to broadcast needs to be registered. this.saveTransaction( { ...transaction, status: 0, error: error.toString() }, - "alchemy" + "alchemy", ) // the reject here will release the nonce in the following catch return Promise.reject(error) }), this.subscribeToTransactionConfirmation( transaction.network, - transaction + transaction, ), this.saveTransaction(transaction, "local"), ]) @@ -1281,20 +1280,25 @@ export default class ChainService extends BaseService { async pollBlockPrices(): Promise { // Schedule next N polls at even interval for (let i = 1; i < GAS_POLLS_PER_PERIOD; i += 1) { - setTimeout(async () => { - await Promise.allSettled( - this.subscribedNetworks.map(async ({ network }) => - this.pollBlockPricesForNetwork(network.chainID) + setTimeout( + async () => { + await Promise.allSettled( + this.subscribedNetworks.map(async ({ network }) => + this.pollBlockPricesForNetwork(network.chainID), + ), ) - ) - }, (GAS_POLLING_PERIOD / GAS_POLLS_PER_PERIOD) * (GAS_POLLING_PERIOD * MINUTE) * i) + }, + (GAS_POLLING_PERIOD / GAS_POLLS_PER_PERIOD) * + (GAS_POLLING_PERIOD * MINUTE) * + i, + ) } // Immediately run the first poll await Promise.allSettled( this.subscribedNetworks.map(async ({ network }) => - this.pollBlockPricesForNetwork(network.chainID) - ) + this.pollBlockPricesForNetwork(network.chainID), + ), ) } @@ -1304,19 +1308,19 @@ export default class ChainService extends BaseService { } const subscription = this.subscribedNetworks.find( - ({ network }) => toHexChainID(network.chainID) === toHexChainID(chainID) + ({ network }) => toHexChainID(network.chainID) === toHexChainID(chainID), ) if (!subscription) { logger.warn( - `Can't fetch block prices for unsubscribed chainID ${chainID}` + `Can't fetch block prices for unsubscribed chainID ${chainID}`, ) return } const blockPrices = await getBlockPrices( subscription.network, - subscription.provider + subscription.provider, ) this.emitter.emit("blockPrices", { blockPrices, @@ -1329,7 +1333,7 @@ export default class ChainService extends BaseService { */ private async pollLatestBlock( network: EVMNetwork, - provider: SerialFallbackProvider + provider: SerialFallbackProvider, ): Promise { const ethersBlock = await provider.getBlock("latest") // add new head to database @@ -1344,7 +1348,7 @@ export default class ChainService extends BaseService { async send( method: string, params: unknown[], - network: EVMNetwork + network: EVMNetwork, ): Promise { return this.providerForNetworkOrThrow(network).send(method, params) } @@ -1362,14 +1366,14 @@ export default class ChainService extends BaseService { */ async getOrCancelTransaction( network: EVMNetwork, - hash: string + hash: string, ): Promise { const provider = this.providerForNetworkOrThrow(network) const result = await provider.getTransaction(hash) if (!result) { logger.warn( - `Tx hash ${hash} is found in our local registry but not on chain.` + `Tx hash ${hash} is found in our local registry but not on chain.`, ) this.removeTransactionHashFromQueue(network, hash) @@ -1388,7 +1392,7 @@ export default class ChainService extends BaseService { blockHash: null, blockHeight: null, }, - "alchemy" + "alchemy", ) // Let's also release the nonce from our bookkeeping. @@ -1412,7 +1416,7 @@ export default class ChainService extends BaseService { */ private async loadRecentAssetTransfers( addressNetwork: AddressOnNetwork, - incomingOnly = false + incomingOnly = false, ): Promise { const blockHeight = (await this.getBlockHeight(addressNetwork.network)) - @@ -1424,13 +1428,13 @@ export default class ChainService extends BaseService { addressNetwork, BigInt(fromBlock), BigInt(blockHeight), - incomingOnly + incomingOnly, ) } catch (err) { logger.error( "Failed loaded recent assets, retrying with shorter block range", addressNetwork, - err + err, ) } @@ -1444,7 +1448,7 @@ export default class ChainService extends BaseService { * @param addressNetwork The account whose asset transfers are being loaded. */ private async loadHistoricAssetTransfers( - addressNetwork: AddressOnNetwork + addressNetwork: AddressOnNetwork, ): Promise { const oldest = (await this.db.getOldestAccountAssetTransferLookup(addressNetwork)) ?? @@ -1466,17 +1470,17 @@ export default class ChainService extends BaseService { addressOnNetwork: AddressOnNetwork, startBlock: bigint, endBlock: bigint, - incomingOnly = false + incomingOnly = false, ): Promise { if ( this.supportedNetworks.every( - (network) => network.chainID !== addressOnNetwork.network.chainID + (network) => network.chainID !== addressOnNetwork.network.chainID, ) ) { logger.error( `Asset transfer check not supported on network ${JSON.stringify( - addressOnNetwork.network - )}` + addressOnNetwork.network, + )}`, ) } @@ -1484,13 +1488,13 @@ export default class ChainService extends BaseService { addressOnNetwork, Number(startBlock), Number(endBlock), - incomingOnly + incomingOnly, ) await this.db.recordAccountAssetTransferLookup( addressOnNetwork, startBlock, - endBlock + endBlock, ) this.emitter.emit("assetTransfers", { @@ -1501,7 +1505,7 @@ export default class ChainService extends BaseService { const firstSeen = Date.now() const savedTransactionHashes = new Set( - await this.db.getAllSavedTransactionHashes() + await this.db.getAllSavedTransactionHashes(), ) /// send all new tx hashes into a queue to retrieve + cache assetTransfers.forEach((a, idx) => { @@ -1510,7 +1514,7 @@ export default class ChainService extends BaseService { addressOnNetwork.network, a.txHash, firstSeen, - idx <= TRANSACTIONS_WITH_PRIORITY_MAX_COUNT ? 0 : 1 + idx <= TRANSACTIONS_WITH_PRIORITY_MAX_COUNT ? 0 : 1, ) } }) @@ -1520,13 +1524,13 @@ export default class ChainService extends BaseService { * Check for any incoming asset transfers involving tracked accounts. */ private async handleRecentIncomingAssetTransferAlarm( - onlyActiveAccounts = false + onlyActiveAccounts = false, ): Promise { const accountsToTrack = await this.getAccountsToTrack(onlyActiveAccounts) await Promise.allSettled( accountsToTrack.map(async (addressNetwork) => - this.loadRecentAssetTransfers(addressNetwork, true) - ) + this.loadRecentAssetTransfers(addressNetwork, true), + ), ) } @@ -1548,14 +1552,14 @@ export default class ChainService extends BaseService { * Check for any incoming or outgoing asset transfers involving tracked accounts. */ private async handleRecentAssetTransferAlarm( - onlyActiveAccounts = false + onlyActiveAccounts = false, ): Promise { const accountsToTrack = await this.getAccountsToTrack(onlyActiveAccounts) await Promise.allSettled( accountsToTrack.map((addressNetwork) => - this.loadRecentAssetTransfers(addressNetwork) - ) + this.loadRecentAssetTransfers(addressNetwork), + ), ) } @@ -1563,7 +1567,7 @@ export default class ChainService extends BaseService { const accountsToTrack = await this.getAccountsToTrack() await Promise.allSettled( - accountsToTrack.map((an) => this.loadHistoricAssetTransfers(an)) + accountsToTrack.map((an) => this.loadHistoricAssetTransfers(an)), ) } @@ -1587,7 +1591,7 @@ export default class ChainService extends BaseService { const { transaction } = this.transactionsToRetrieve[0] this.removeTransactionHashFromQueue( transaction.network, - transaction.hash + transaction.hash, ) this.retrieveTransaction(transaction) }, 2 * SECOND) @@ -1630,7 +1634,7 @@ export default class ChainService extends BaseService { // It's a pending tx, let's subscribe to events. this.subscribeToTransactionConfirmation( transaction.network, - transaction + transaction, ) } else if (transaction.blockHash) { // Get relevant block data. @@ -1645,21 +1649,21 @@ export default class ChainService extends BaseService { } else { logger.warn( `Transaction ${hash} is too old to keep looking for it; treating ` + - "it as expired." + "it as expired.", ) this.db.getTransaction(network, hash).then((existingTransaction) => { if (existingTransaction !== null) { logger.debug( "Found existing transaction for expired lookup; marking as " + - "failed if no other status exists." + "failed if no other status exists.", ) this.saveTransaction( // Don't override an already-persisted successful status with // an expiration-based failed status, but do set status to // failure if no transaction was seen. { status: 0, ...existingTransaction } as AnyEVMTransaction, - "local" + "local", ) } }) @@ -1676,14 +1680,14 @@ export default class ChainService extends BaseService { */ private async saveTransaction( transaction: AnyEVMTransaction, - dataSource: "local" | "alchemy" + dataSource: "local" | "alchemy", ): Promise { // Merge existing data into the updated transaction data. This handles // cases where an existing transaction has been enriched by e.g. a receipt, // and new data comes in. const existing = await this.db.getTransaction( transaction.network, - transaction.hash + transaction.hash, ) const finalTransaction = { ...existing, @@ -1699,7 +1703,7 @@ export default class ChainService extends BaseService { ...existing, ...finalTransaction, }, - dataSource + dataSource, ) } catch (err) { error = err @@ -1712,7 +1716,7 @@ export default class ChainService extends BaseService { .filter( ({ address }) => sameEVMAddress(finalTransaction.from, address) || - sameEVMAddress(finalTransaction.to, address) + sameEVMAddress(finalTransaction.to, address), ) .map(({ address }) => normalizeEVMAddress(address)) @@ -1735,14 +1739,13 @@ export default class ChainService extends BaseService { async emitSavedTransactions(account: AddressOnNetwork): Promise { const { address, network } = account - const transactionsForNetwork = await this.db.getTransactionsForNetwork( - network - ) + const transactionsForNetwork = + await this.db.getTransactionsForNetwork(network) const transactions = transactionsForNetwork.filter( (transaction) => sameEVMAddress(transaction.from, address) || - sameEVMAddress(transaction.to, address) + sameEVMAddress(transaction.to, address), ) this.emitter.emit("initializeActivitiesForAccount", { @@ -1756,7 +1759,7 @@ export default class ChainService extends BaseService { * are currently being tracked. */ async filterTrackedAddressesOnNetworks( - addressesOnNetworks: AddressOnNetwork[] + addressesOnNetworks: AddressOnNetwork[], ): Promise { const accounts = await this.getAccountsToTrack() @@ -1764,8 +1767,8 @@ export default class ChainService extends BaseService { accounts.some( ({ address: trackedAddress, network: trackedNetwork }) => sameEVMAddress(trackedAddress, address) && - network.name === trackedNetwork.name - ) + network.name === trackedNetwork.name, + ), ) } @@ -1818,7 +1821,7 @@ export default class ChainService extends BaseService { const provider = this.providerForNetworkOrThrow(network) await provider.subscribeFullPendingTransactions( { address, network }, - this.handlePendingTransaction.bind(this) + this.handlePendingTransaction.bind(this), ) this.subscribedAccounts.push({ @@ -1833,7 +1836,7 @@ export default class ChainService extends BaseService { * @param transaction The pending transaction */ private async handlePendingTransaction( - transaction: AnyEVMTransaction + transaction: AnyEVMTransaction, ): Promise { try { const { network } = transaction @@ -1875,13 +1878,13 @@ export default class ChainService extends BaseService { */ private async subscribeToTransactionConfirmation( network: EVMNetwork, - transaction: AnyEVMTransaction + transaction: AnyEVMTransaction, ): Promise { const provider = this.providerForNetworkOrThrow(network) provider.once(transaction.hash, (confirmedReceipt: TransactionReceipt) => { this.saveTransaction( enrichTransactionWithReceipt(transaction, confirmedReceipt), - "alchemy" + "alchemy", ) this.removeTransactionHashFromQueue(network, transaction.hash) @@ -1900,14 +1903,14 @@ export default class ChainService extends BaseService { */ private async retrieveTransactionReceipt( network: EVMNetwork, - transaction: AnyEVMTransaction + transaction: AnyEVMTransaction, ): Promise { const provider = this.providerForNetworkOrThrow(network) const receipt = await provider.getTransactionReceipt(transaction.hash) if (receipt) { await this.saveTransaction( enrichTransactionWithReceipt(transaction, receipt), - "alchemy" + "alchemy", ) } } @@ -1918,7 +1921,7 @@ export default class ChainService extends BaseService { // Used to add non-default chains via wallet_addEthereumChain async addCustomChain( - chainInfo: ValidatedAddEthereumChainParameter + chainInfo: ValidatedAddEthereumChainParameter, ): Promise { const network = await this.db.addEVMNetwork({ chainName: chainInfo.chainName, @@ -1933,7 +1936,7 @@ export default class ChainService extends BaseService { this.providers.evm[chainInfo.chainId] = makeSerialFallbackProvider( chainInfo.chainId, - chainInfo.rpcUrls + chainInfo.rpcUrls, ) await this.startTrackingNetworkOrThrow(chainInfo.chainId) @@ -1944,7 +1947,7 @@ export default class ChainService extends BaseService { async removeCustomChain(chainID: string): Promise { this.trackedNetworks = this.trackedNetworks.filter( - (network) => network.chainID !== chainID + (network) => network.chainID !== chainID, ) await this.db.removeEVMNetwork(chainID) @@ -1961,13 +1964,13 @@ export default class ChainService extends BaseService { async queryAccountTokenDetails( contractAddress: NormalizedEVMAddress, addressOnNetwork: AddressOnNetwork, - existingAsset?: SmartContractFungibleAsset + existingAsset?: SmartContractFungibleAsset, ): Promise> { const { network } = addressOnNetwork const balance = await this.assetData.getTokenBalance( addressOnNetwork, - contractAddress + contractAddress, ) if (existingAsset) { @@ -1989,7 +1992,7 @@ export default class ChainService extends BaseService { "Unable to retrieve metadata for custom asset", contractAddress, "on chain:", - network.chainID + network.chainID, ) } diff --git a/background/services/chain/serial-fallback-provider.ts b/background/services/chain/serial-fallback-provider.ts index 0965788f67..20262d37ca 100644 --- a/background/services/chain/serial-fallback-provider.ts +++ b/background/services/chain/serial-fallback-provider.ts @@ -82,7 +82,7 @@ const PROVIDER_REQUEST_TIMEOUT = 5 * SECOND */ function waitAnd>( waitMs: number, - fn: () => E + fn: () => E, ): Promise { return new Promise((resolve) => { // TODO setTimeout rather than browser.alarms here could mean this would @@ -107,7 +107,7 @@ function backedOffMs(): number { * this information, nor does it attempt to reconnect in these cases. */ function isClosedOrClosingWebSocketProvider( - provider: JsonRpcProvider + provider: JsonRpcProvider, ): boolean { if (provider instanceof WebSocketProvider) { // Digging into the innards of Ethers here because there's no @@ -153,17 +153,17 @@ function isConnectingWebSocketProvider(provider: JsonRpcProvider): boolean { function alchemyOrDefaultProvider(chainID: string, method: string): boolean { return ( ALCHEMY_RPC_METHOD_PROVIDER_ROUTING.everyChain.some((m: string) => - method.startsWith(m) + method.startsWith(m), ) || (ALCHEMY_RPC_METHOD_PROVIDER_ROUTING[Number(chainID)] ?? []).some( - (m: string) => method.startsWith(m) + (m: string) => method.startsWith(m), ) ) } function customOrDefaultProvider( method: string, - supportedMethods: string[] = [] + supportedMethods: string[] = [], ): boolean { // Alchemy's methods have to go through Alchemy if (method.startsWith("alchemy_")) { @@ -195,7 +195,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { // order. private providerCreators: [ () => WebSocketProvider | JsonRpcProvider, - ...(() => JsonRpcProvider)[] + ...(() => JsonRpcProvider)[], ] // The currently-used provider, produced by the provider-creator at @@ -288,14 +288,14 @@ export default class SerialFallbackProvider extends JsonRpcProvider { // Internal network type useful for helper calls, but not exposed to avoid // clashing with Ethers's own `network` stuff. private chainID: string, - providerCreators: Array + providerCreators: Array, ) { const customProviderCreator = providerCreators.find( - (creator) => creator.type === "custom" + (creator) => creator.type === "custom", ) const alchemyProviderCreator = providerCreators.find( - (creator) => creator.type === "alchemy" + (creator) => creator.type === "alchemy", ) const [firstProviderCreator, ...remainingProviderCreators] = @@ -365,7 +365,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { if (isConnectingWebSocketProvider(this.currentProvider)) { // If the websocket is still connecting, wait and try to send again. return await waitAnd(WAIT_BEFORE_SEND_AGAIN, async () => - this.routeRpcCall(messageId) + this.routeRpcCall(messageId), ) } @@ -417,7 +417,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { * used for invalid responses from the server, which we can retry on */ stringifiedError.match( - /WebSocket is already in CLOSING|bad response|missing response|we can't execute this request|failed response|TIMEOUT|NETWORK_ERROR/ + /WebSocket is already in CLOSING|bad response|missing response|we can't execute this request|failed response|TIMEOUT|NETWORK_ERROR/, ) ) { // If there is another provider to try - try to send the message on that provider @@ -454,7 +454,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { backoff, "and retrying: ", method, - params + params, ) return await waitAnd(backoff, async () => { @@ -471,7 +471,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { "Skipping fallback for unidentified error", error, "for provider", - this.currentProvider + this.currentProvider, ) delete this.messagesToSend[messageId] @@ -501,7 +501,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { */ private conditionallyCacheResult( result: unknown, - { method, params }: { method: string; params: unknown } + { method, params }: { method: string; params: unknown }, ): void { if (method === "eth_getBalance" && (params as string[])[1] === "latest") { const address = (params as string[])[0] @@ -530,7 +530,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { */ private checkForCachedResult( method: string, - params: unknown + params: unknown, ): string | boolean | undefined { // @TODO Remove once initial activity load is refactored. if (method === "eth_getBalance" && (params as string[])[1] === "latest") { @@ -562,7 +562,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { const hasCodeCache = Object.keys(this.latestHasCodeCache) if (balanceCache.length > 0) { logger.info( - `Cleaning up ${this.network.chainId} balance cache, ${balanceCache.length} entries` + `Cleaning up ${this.network.chainId} balance cache, ${balanceCache.length} entries`, ) const now = Date.now() balanceCache.forEach(([address, balance]) => { @@ -574,7 +574,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { if (hasCodeCache.length > 0) { logger.info( - `Cleaning up ${this.network.chainId} hasCode cache, ${hasCodeCache.length} entries` + `Cleaning up ${this.network.chainId} hasCode cache, ${hasCodeCache.length} entries`, ) this.latestHasCodeCache = {} @@ -589,7 +589,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { * @returns The result of sending the message via the next provider */ private async attemptToSendMessageOnNewProvider( - messageId: symbol + messageId: symbol, ): Promise { this.disconnectCurrentProvider() this.currentProviderIndex += 1 @@ -650,7 +650,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { async subscribe( tag: string, param: Array, - processFunc: (result: unknown) => void + processFunc: (result: unknown) => void, ): Promise { const subscription = { tag, param, processFunc } @@ -661,7 +661,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { } else { logger.warn( "Current provider is not a WebSocket provider; subscription " + - "will not work until a WebSocket provider connects." + "will not work until a WebSocket provider connects.", ) } } @@ -674,7 +674,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { */ async subscribeFullPendingTransactions( { address, network }: AddressOnNetwork, - handler: (pendingTransaction: AnyEVMTransaction) => void + handler: (pendingTransaction: AnyEVMTransaction) => void, ): Promise { if ( this.chainID !== network.chainID && @@ -683,14 +683,14 @@ export default class SerialFallbackProvider extends JsonRpcProvider { logger.error( "Tried to subscribe to pending transactions for chain id " + `${network.chainID} but provider was on ` + - `${this.chainID}` + `${this.chainID}`, ) return } const alchemySubscription = await this.alchemySubscribeFullPendingTransactions( { address, network }, - handler + handler, ) if (alchemySubscription === "unsupported") { @@ -701,7 +701,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { if (typeof transactionHash === "string") { const transaction = transactionFromEthersTransaction( await this.getTransaction(transactionHash), - network + network, ) handler(transaction) @@ -709,7 +709,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { } catch (innerError) { logger.error( `Error handling incoming pending transaction hash: ${transactionHash}`, - innerError + innerError, ) } }) @@ -780,7 +780,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { } return false - } + }, ) this.currentProvider.off(eventName, listenerToRemove) @@ -802,7 +802,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { logger.debug( "Disconnecting current provider; websocket: ", this.currentProvider instanceof WebSocketProvider, - "." + ".", ) if (this.currentProvider instanceof WebSocketProvider) { this.currentProvider.destroy() @@ -812,7 +812,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { // in between, but if we're considering the current provider dead, let's // assume we would lose them anyway. this.eventSubscriptions.forEach(({ eventName }) => - this.removeAllListeners(eventName) + this.removeAllListeners(eventName), ) } } @@ -823,7 +823,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { */ private listenerWithCleanup( eventName: EventType, - listenerToWrap: Listener + listenerToWrap: Listener, ): Listener & { wrappedListener: Listener } { const wrappedListener = ( ...params: Parameters @@ -835,7 +835,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { ({ eventName: storedEventName, listener, once }) => eventName !== storedEventName || listener !== wrappedListener || - once !== true + once !== true, ) } } @@ -858,7 +858,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { logger.debug( "Reconnecting provider at index", this.currentProviderIndex, - "..." + "...", ) const cachedProvider = @@ -909,10 +909,10 @@ export default class SerialFallbackProvider extends JsonRpcProvider { // Direct subscriptions are internal, but we want to be able to // restore them. // eslint-disable-next-line no-underscore-dangle - websocketProvider._subscribe(tag, param, processFunc) - ) + websocketProvider._subscribe(tag, param, processFunc), + ), ), - Promise.resolve() + Promise.resolve(), ) } @@ -1006,7 +1006,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { */ private async alchemySubscribeFullPendingTransactions( { address, network }: AddressOnNetwork, - handler: (pendingTransaction: AnyEVMTransaction) => void + handler: (pendingTransaction: AnyEVMTransaction) => void, ): Promise<"subscribed" | "unsupported"> { try { await this.subscribe( @@ -1021,17 +1021,17 @@ export default class SerialFallbackProvider extends JsonRpcProvider { try { const transaction = transactionFromAlchemyWebsocketTransaction( result, - network + network, ) handler(transaction) } catch (error) { logger.error( `Error handling incoming pending transaction: ${result}`, - error + error, ) } - } + }, ) return "subscribed" @@ -1047,7 +1047,7 @@ export default class SerialFallbackProvider extends JsonRpcProvider { } function getProviderCreator( - rpcUrl: string + rpcUrl: string, ): JsonRpcProvider | WebSocketProvider { const url = new URL(rpcUrl) if (/^wss?/.test(url.protocol)) { @@ -1080,7 +1080,7 @@ export function makeFlashbotsProviderCreator(): ProviderCreator { export function makeSerialFallbackProvider( chainID: string, rpcUrls: string[], - customRpc?: RpcConfig + customRpc?: RpcConfig, ): SerialFallbackProvider { if (isEnabled(FeatureFlags.USE_MAINNET_FORK)) { return new SerialFallbackProvider(FORK.chainID, [ @@ -1104,7 +1104,7 @@ export function makeSerialFallbackProvider( creator: () => new AlchemyWebSocketProvider( getNetwork(Number(chainID)), - ALCHEMY_KEY + ALCHEMY_KEY, ), }, ] diff --git a/background/services/chain/tests/db.integration.test.ts b/background/services/chain/tests/db.integration.test.ts index 3279d5d517..5257c911bb 100644 --- a/background/services/chain/tests/db.integration.test.ts +++ b/background/services/chain/tests/db.integration.test.ts @@ -29,7 +29,7 @@ describe("Chain Database ", () => { await db.addAccountToTrack(account2) const accountsToTrack = await db.getAccountsToTrack() expect(accountsToTrack).toEqual( - expect.arrayContaining([account1, account2]) + expect.arrayContaining([account1, account2]), ) }) @@ -74,12 +74,12 @@ describe("Chain Database ", () => { const getEthTransaction = await db.getTransaction( addTransactionEth.network, - addTransactionEth.hash + addTransactionEth.hash, ) const getOptTransaction = await db.getTransaction( addTransactionOpt.network, - addTransactionOpt.hash + addTransactionOpt.hash, ) expect(getEthTransaction?.hash).toEqual(addTransactionEth.hash) @@ -94,12 +94,12 @@ describe("Chain Database ", () => { const getEthTransaction = await db.getTransaction( addTransactionEth.network, - addTransactionEth.hash + addTransactionEth.hash, ) const getOptTransaction = await db.getTransaction( addTransactionOpt.network, - addTransactionOpt.hash + addTransactionOpt.hash, ) expect(getEthTransaction).toBeTruthy() @@ -131,7 +131,7 @@ describe("Chain Database ", () => { const accountsToTrack = await db.getAccountsToTrack() expect(accountsToTrack).toEqual( - expect.arrayContaining([account1, account2]) + expect.arrayContaining([account1, account2]), ) }) }) @@ -183,7 +183,7 @@ describe("Chain Database ", () => { expect(await db.getChainIDsToTrack()).toEqual(new Set(ETHEREUM.chainID)) await db.addAccountToTrack(account2) expect(await db.getChainIDsToTrack()).toEqual( - new Set([ETHEREUM.chainID, POLYGON.chainID]) + new Set([ETHEREUM.chainID, POLYGON.chainID]), ) }) it("should disallow duplicate chain ids", async () => { @@ -211,7 +211,7 @@ describe("Chain Database ", () => { const latest = await db.getLatestAccountBalance( accountBalance.address, accountBalance.network, - ETH + ETH, ) expect(latest?.assetAmount.amount).toEqual(4n) }) @@ -221,7 +221,7 @@ describe("Chain Database ", () => { const latest = await db.getLatestAccountBalance( accountBalance.address, accountBalance.network, - ETH + ETH, ) expect(latest).toBeNull() }) @@ -261,30 +261,28 @@ describe("Chain Database ", () => { await db.addOrUpdateTransaction(completeEthTx, "alchemy") await db.addOrUpdateTransaction(pendingOptimismTx1, "alchemy") - const ethPendingTransactions = await db.getNetworkPendingTransactions( - ETHEREUM - ) + const ethPendingTransactions = + await db.getNetworkPendingTransactions(ETHEREUM) - const opPendingTransactions = await db.getNetworkPendingTransactions( - OPTIMISM - ) + const opPendingTransactions = + await db.getNetworkPendingTransactions(OPTIMISM) // Should pick up pending transactions expect(ethPendingTransactions.length).toEqual(2) expect( - ethPendingTransactions.find((tx) => tx.hash === pendingEthTx1.hash) + ethPendingTransactions.find((tx) => tx.hash === pendingEthTx1.hash), ).toBeTruthy() expect( - ethPendingTransactions.find((tx) => tx.hash === pendingEthTx2.hash) + ethPendingTransactions.find((tx) => tx.hash === pendingEthTx2.hash), ).toBeTruthy() // Should not pick up complete transactions expect( - ethPendingTransactions.find((tx) => tx.hash === completeEthTx.hash) + ethPendingTransactions.find((tx) => tx.hash === completeEthTx.hash), ).toBeFalsy() // Should pick up pending transactions on different networks separately expect(opPendingTransactions.length).toEqual(1) expect( - opPendingTransactions.find((tx) => tx.hash === pendingOptimismTx1.hash) + opPendingTransactions.find((tx) => tx.hash === pendingOptimismTx1.hash), ).toBeTruthy() }) }) @@ -351,8 +349,8 @@ describe("Chain Database ", () => { expect(await db.getEVMNetworkByChainID("12345")).toBeTruthy() expect( (await db.getAllRpcUrls()).find((rpcUrl) => - rpcUrl.rpcUrls.includes("https://foo.com") - ) + rpcUrl.rpcUrls.includes("https://foo.com"), + ), ).toBeTruthy() expect(await db.getBaseAssetForNetwork("12345")).toBeTruthy() diff --git a/background/services/chain/tests/index.integration.test.ts b/background/services/chain/tests/index.integration.test.ts index 8c24907045..5d419bb312 100644 --- a/background/services/chain/tests/index.integration.test.ts +++ b/background/services/chain/tests/index.integration.test.ts @@ -18,7 +18,7 @@ type ChainServiceExternalized = Omit & { db: ChainDatabase handlePendingTransaction: (transaction: AnyEVMTransaction) => void populateEVMTransactionNonce: ( - transactionRequest: TransactionRequest + transactionRequest: TransactionRequest, ) => Promise evmChainLastSeenNoncesByNormalizedAddress: { [chainID: string]: { [normalizedAddress: string]: number } @@ -44,8 +44,8 @@ describe("ChainService", () => { // Startup is simulated in the `beforeEach` expect( chainService.subscribedNetworks.filter( - ({ network }) => network.chainID === ETHEREUM.chainID - ) + ({ network }) => network.chainID === ETHEREUM.chainID, + ), ).toHaveLength(1) }) @@ -57,20 +57,20 @@ describe("ChainService", () => { const initializeBaseAssets = sandbox.spy( chainServiceInstance.db, - "initializeBaseAssets" as keyof ChainDatabase + "initializeBaseAssets" as keyof ChainDatabase, ) const initializeRPCs = sandbox.spy( chainServiceInstance.db, - "initializeRPCs" as keyof ChainDatabase + "initializeRPCs" as keyof ChainDatabase, ) const initializeEVMNetworks = sandbox.spy( chainServiceInstance.db, - "initializeEVMNetworks" as keyof ChainDatabase + "initializeEVMNetworks" as keyof ChainDatabase, ) const initializeNetworks = sandbox.spy( chainServiceInstance, - "initializeNetworks" + "initializeNetworks", ) await chainServiceInstance.internalStartService() @@ -96,7 +96,7 @@ describe("ChainService", () => { ({ getTransactionCount: async () => CHAIN_NONCE, once: onceSpy, - } as unknown as SerialFallbackProvider) + }) as unknown as SerialFallbackProvider, ) const transactionRequestWithoutNonce = createLegacyTransactionRequest({ @@ -107,7 +107,7 @@ describe("ChainService", () => { // Populate EVM Transaction Nonce await chainServiceExternalized.populateEVMTransactionNonce( - transactionRequestWithoutNonce + transactionRequestWithoutNonce, ) const { from, network } = transactionRequestWithoutNonce @@ -120,7 +120,7 @@ describe("ChainService", () => { }) await chainServiceExternalized.handlePendingTransaction( - validOptimismEVMTransaction + validOptimismEVMTransaction, ) // provider.once should be called inside of subscribeToTransactionConfirmation @@ -140,7 +140,7 @@ describe("ChainService", () => { ({ getTransactionCount: async () => CHAIN_NONCE, once: onceSpy, - } as unknown as SerialFallbackProvider) + }) as unknown as SerialFallbackProvider, ) const transactionRequestWithoutNonce = createLegacyTransactionRequest({ @@ -151,7 +151,7 @@ describe("ChainService", () => { // Populate EVM Transaction Nonce await chainServiceExternalized.populateEVMTransactionNonce( - transactionRequestWithoutNonce + transactionRequestWithoutNonce, ) const { chainID, from, network } = transactionRequestWithoutNonce @@ -164,7 +164,7 @@ describe("ChainService", () => { }) await chainServiceExternalized.handlePendingTransaction( - validOptimismEVMTransaction + validOptimismEVMTransaction, ) // provider.once should be called inside of subscribeToTransactionConfirmation @@ -174,22 +174,22 @@ describe("ChainService", () => { expect( chainServiceExternalized.evmChainLastSeenNoncesByNormalizedAddress[ chainID - ][from] + ][from], ).toBe(CHAIN_NONCE + 1) // Handling a pending transaction should update the last seem EVM transaction nonce expect( chainServiceExternalized.evmChainLastSeenNoncesByNormalizedAddress[ chainID - ][validOptimismEVMTransaction.from] + ][validOptimismEVMTransaction.from], ).toBe(validOptimismEVMTransaction.nonce) // Transaction should be persisted to the db expect( await chainServiceExternalized.getTransaction( POLYGON, - validOptimismEVMTransaction.hash - ) + validOptimismEVMTransaction.hash, + ), ).toBeTruthy() }) @@ -214,7 +214,7 @@ describe("ChainService", () => { expect(chainService.providers.evm["250"]).toBe(undefined) await chainService.addCustomChain(FANTOM_CHAIN_PARAMS) expect(chainService.providers.evm["250"]).toBeInstanceOf( - SerialFallbackProvider + SerialFallbackProvider, ) }) @@ -236,7 +236,7 @@ describe("ChainService", () => { () => ({ getTransactionCount: async () => TRANSACTION_COUNT, - } as unknown as SerialFallbackProvider) + }) as unknown as SerialFallbackProvider, ) }) @@ -255,7 +255,7 @@ describe("ChainService", () => { const transactionWithNonce = await chainServiceExternalized.populateEVMTransactionNonce( - transactionRequest + transactionRequest, ) expect(transactionWithNonce.nonce).toBe(CHAIN_NONCE) @@ -272,7 +272,7 @@ describe("ChainService", () => { const transactionWithNonce = await chainServiceExternalized.populateEVMTransactionNonce( - transactionRequest + transactionRequest, ) expect(transactionWithNonce.nonce).toBe(CHAIN_NONCE) @@ -288,13 +288,13 @@ describe("ChainService", () => { }) await chainServiceExternalized.populateEVMTransactionNonce( - transactionRequest + transactionRequest, ) expect( chainServiceExternalized.evmChainLastSeenNoncesByNormalizedAddress[ transactionRequest.chainID - ] + ], ).toBe(undefined) }) @@ -309,7 +309,7 @@ describe("ChainService", () => { const transactionWithNonce = await chainServiceExternalized.populateEVMTransactionNonce( - transactionRequest + transactionRequest, ) expect(transactionWithNonce.nonce).toBe(CHAIN_NONCE) @@ -326,7 +326,7 @@ describe("ChainService", () => { const transactionWithNonce = await chainServiceExternalized.populateEVMTransactionNonce( - transactionRequest + transactionRequest, ) expect(transactionWithNonce.nonce).toBe(CHAIN_NONCE) @@ -342,13 +342,13 @@ describe("ChainService", () => { }) await chainServiceExternalized.populateEVMTransactionNonce( - transactionRequest + transactionRequest, ) expect( chainServiceExternalized.evmChainLastSeenNoncesByNormalizedAddress[ transactionRequest.chainID - ][transactionRequest.from] + ][transactionRequest.from], ).toBe(CHAIN_NONCE) }) @@ -362,13 +362,13 @@ describe("ChainService", () => { }) await chainServiceExternalized.populateEVMTransactionNonce( - transactionRequest + transactionRequest, ) expect( chainServiceExternalized.evmChainLastSeenNoncesByNormalizedAddress[ transactionRequest.chainID - ] + ], ).toBe(undefined) }) }) @@ -404,13 +404,13 @@ describe("ChainService", () => { ][from] = LAST_SEEN_NONCE await chainServiceExternalized.releaseEVMTransactionNonce( - transactionRequest + transactionRequest, ) expect( chainServiceExternalized.evmChainLastSeenNoncesByNormalizedAddress[ chainID - ][from] + ][from], ).toBe(CHAIN_NONCE) }) @@ -436,13 +436,13 @@ describe("ChainService", () => { ][from] = LAST_SEEN_NONCE await chainServiceExternalized.releaseEVMTransactionNonce( - transactionRequest + transactionRequest, ) expect( chainServiceExternalized.evmChainLastSeenNoncesByNormalizedAddress[ chainID - ][from] + ][from], ).toBe(CHAIN_NONCE) }) }) @@ -483,7 +483,7 @@ describe("ChainService", () => { const networksToTrack = await chainService.getNetworksToTrack() expect( - networksToTrack.find((network) => network.chainID === "12345") + networksToTrack.find((network) => network.chainID === "12345"), ).toBeTruthy() }) }) diff --git a/background/services/chain/tests/index.unit.test.ts b/background/services/chain/tests/index.unit.test.ts index 8aff021c01..9f01968429 100644 --- a/background/services/chain/tests/index.unit.test.ts +++ b/background/services/chain/tests/index.unit.test.ts @@ -32,7 +32,7 @@ type ChainServiceExternalized = Omit & { } loadRecentAssetTransfers: ( addressNetwork: AddressOnNetwork, - incomingOnly: boolean + incomingOnly: boolean, ) => Promise retrieveTransaction: (queuedTx: QueuedTxToRetrieve) => Promise transactionsToRetrieve: PriorityQueuedTxToRetrieve[] @@ -71,13 +71,13 @@ describe("Chain Service", () => { const stub = sandbox.stub( chainService as unknown as ChainServiceExternalized, - "populatePartialEIP1559TransactionRequest" + "populatePartialEIP1559TransactionRequest", ) await chainService.populatePartialTransactionRequest( ETHEREUM, partialTransactionRequest, - { maxFeePerGas: 100n, maxPriorityFeePerGas: 1000n } + { maxFeePerGas: 100n, maxPriorityFeePerGas: 1000n }, ) expect(stub.callCount).toBe(1) @@ -85,7 +85,7 @@ describe("Chain Service", () => { await chainService.populatePartialTransactionRequest( POLYGON, { ...partialTransactionRequest, network: POLYGON }, - { maxFeePerGas: 100n, maxPriorityFeePerGas: 1000n } + { maxFeePerGas: 100n, maxPriorityFeePerGas: 1000n }, ) expect(stub.callCount).toBe(2) @@ -102,13 +102,13 @@ describe("Chain Service", () => { const stub = sandbox.stub( chainService as unknown as ChainServiceExternalized, - "populatePartialLegacyEVMTransactionRequest" + "populatePartialLegacyEVMTransactionRequest", ) await chainService.populatePartialTransactionRequest( OPTIMISM, partialTransactionRequest, - { maxFeePerGas: 100n, maxPriorityFeePerGas: 1000n } + { maxFeePerGas: 100n, maxPriorityFeePerGas: 1000n }, ) expect(stub.callCount).toBe(1) @@ -139,7 +139,7 @@ describe("Chain Service", () => { expect(lastUserActivity).toBeLessThan( (chainService as unknown as ChainServiceExternalized) - .lastUserActivityOnNetwork[ETHEREUM.chainID] + .lastUserActivityOnNetwork[ETHEREUM.chainID], ) jest.useRealTimers() @@ -175,7 +175,7 @@ describe("Chain Service", () => { .callsFake(async () => {}) chainService.markAccountActivity( - createAddressOnNetwork({ network: ETHEREUM }) + createAddressOnNetwork({ network: ETHEREUM }), ) expect(stub.calledWith(ETHEREUM.chainID)).toEqual(true) @@ -191,12 +191,12 @@ describe("Chain Service", () => { const stub = sandbox .stub( chainService as unknown as ChainServiceExternalized, - "loadRecentAssetTransfers" + "loadRecentAssetTransfers", ) .callsFake(async () => {}) await chainService.markAccountActivity( - createAddressOnNetwork({ network: ETHEREUM }) + createAddressOnNetwork({ network: ETHEREUM }), ) expect(stub.called).toEqual(true) }) @@ -209,7 +209,7 @@ describe("Chain Service", () => { sandbox .stub( chainService as unknown as ChainServiceExternalized, - "getNetworksToTrack" + "getNetworksToTrack", ) .resolves([ETHEREUM, POLYGON]) @@ -218,7 +218,7 @@ describe("Chain Service", () => { sandbox .stub( chainService as unknown as ChainServiceExternalized, - "startTrackingNetworkOrThrow" + "startTrackingNetworkOrThrow", ) .onFirstCall() .callsFake(() => { @@ -254,7 +254,7 @@ describe("Chain Service", () => { retrieveTransactionStub = sandbox.stub( chainServiceExternalized, - "retrieveTransaction" + "retrieveTransaction", ) }) afterEach(() => { @@ -298,7 +298,7 @@ describe("Chain Service", () => { expect(retrieveTransactionStub.callCount).toBe(txRetrievedCount) expect(chainServiceExternalized.transactionsToRetrieve.length).toBe( - txInQueueCount - txRetrievedCount + txInQueueCount - txRetrievedCount, ) }) it("should clean up the timer after the queue is emptied", async () => { @@ -321,7 +321,7 @@ describe("Chain Service", () => { expect(clearIntervalSpy.calledOnce).toBe(true) expect( - chainServiceExternalized.transactionToRetrieveGranularTimer + chainServiceExternalized.transactionToRetrieveGranularTimer, ).toBe(undefined) }) }) @@ -349,9 +349,9 @@ describe("Chain Service", () => { ETHEREUM, txHash, Date.now(), - idx < PRIORITY_MAX_COUNT ? 1 : 0 - ) - ) + idx < PRIORITY_MAX_COUNT ? 1 : 0, + ), + ), ) transactionsToRetrieve = chainServiceExternalized.transactionsToRetrieve @@ -364,7 +364,7 @@ describe("Chain Service", () => { it(`the first ${PRIORITY_MAX_COUNT} transactions have a higher priority and should come from the first account`, async () => { Array(PRIORITY_MAX_COUNT).forEach((idx) => { expect(transactionsToRetrieve[idx].transaction.hash).toBe( - hashesForFirstAccount[idx] + hashesForFirstAccount[idx], ) }) }) @@ -372,7 +372,7 @@ describe("Chain Service", () => { it(`another ${PRIORITY_MAX_COUNT} transactions have a higher priority and should come from the second account`, async () => { Array(PRIORITY_MAX_COUNT).forEach((idx) => { expect( - transactionsToRetrieve[idx + PRIORITY_MAX_COUNT].transaction.hash + transactionsToRetrieve[idx + PRIORITY_MAX_COUNT].transaction.hash, ).toBe(hashesForSecondAccount[idx]) }) }) @@ -381,7 +381,7 @@ describe("Chain Service", () => { Array(NUMBER_OF_TX - PRIORITY_MAX_COUNT).forEach((idx) => { expect( transactionsToRetrieve[idx + PRIORITY_MAX_COUNT * 2].transaction - .hash + .hash, ).toBe(hashesForFirstAccount[idx + PRIORITY_MAX_COUNT]) }) }) @@ -390,7 +390,7 @@ describe("Chain Service", () => { Array(NUMBER_OF_TX - PRIORITY_MAX_COUNT).forEach((idx) => { expect( transactionsToRetrieve[idx + PRIORITY_MAX_COUNT + NUMBER_OF_TX] - .transaction.hash + .transaction.hash, ).toBe(hashesForSecondAccount[idx + PRIORITY_MAX_COUNT]) }) }) diff --git a/background/services/chain/tests/serial-fallback-provider.integration.test.ts b/background/services/chain/tests/serial-fallback-provider.integration.test.ts index 37837691ba..c4e37e20b2 100644 --- a/background/services/chain/tests/serial-fallback-provider.integration.test.ts +++ b/background/services/chain/tests/serial-fallback-provider.integration.test.ts @@ -79,7 +79,7 @@ describe("Serial Fallback Provider", () => { await waitFor(() => expect(genericSendStub.called).toEqual(true)) await expect( - fallbackProvider.send("eth_getBalance", []) + fallbackProvider.send("eth_getBalance", []), ).resolves.toEqual("success") // eth_chainId is called once in the constructor @@ -95,7 +95,7 @@ describe("Serial Fallback Provider", () => { await waitFor(() => expect(genericSendStub.called).toEqual(true)) await expect( - fallbackProvider.send("eth_getBalance", []) + fallbackProvider.send("eth_getBalance", []), ).resolves.toEqual("success") // eth_chainId is called once in the constructor @@ -111,7 +111,7 @@ describe("Serial Fallback Provider", () => { await waitFor(() => expect(genericSendStub.called).toEqual(true)) await expect( - fallbackProvider.send("eth_getBalance", []) + fallbackProvider.send("eth_getBalance", []), ).resolves.toEqual("success") // eth_chainId is called once in the constructor @@ -127,17 +127,17 @@ describe("Serial Fallback Provider", () => { await waitFor(() => expect(genericSendStub.called).toEqual(true)) await expect( - fallbackProvider.send("eth_getBalance", []) + fallbackProvider.send("eth_getBalance", []), ).resolves.toEqual("success") expect( genericSendStub.args.filter((args) => args[0] === "eth_getBalance") - .length + .length, ).toEqual(4) // 1 try of eth_getBalance expect( alchemySendStub.args.filter((args) => args[0] === "eth_getBalance") - .length + .length, ).toEqual(1) }) @@ -146,7 +146,7 @@ describe("Serial Fallback Provider", () => { genericSendStub.throws(error) alchemySendStub.throws(error) await expect(fallbackProvider.send("eth_getBalance", [])).rejects.toEqual( - error + error, ) expect(genericSendStub.called).toEqual(true) expect(alchemySendStub.called).toEqual(true) @@ -220,7 +220,7 @@ describe("Serial Fallback Provider", () => { await waitFor(() => expect(genericSendStub.called).toEqual(true)) await expect( - fallbackProvider.send("eth_getBalance", []) + fallbackProvider.send("eth_getBalance", []), ).resolves.toEqual("success") // Accessing private property // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/background/services/chain/utils/index.ts b/background/services/chain/utils/index.ts index ec53fc0c30..ed3121a83b 100644 --- a/background/services/chain/utils/index.ts +++ b/background/services/chain/utils/index.ts @@ -32,7 +32,7 @@ import type { PartialTransactionRequestWithFrom } from "../../enrichment" */ export function blockFromEthersBlock( network: EVMNetwork, - gethResult: EthersBlock + gethResult: EthersBlock, ): AnyEVMBlock { return { hash: gethResult.hash, @@ -56,7 +56,7 @@ export function blockFromEthersBlock( */ export function blockFromProviderBlock( network: EVMNetwork, - incomingGethResult: unknown + incomingGethResult: unknown, ): AnyEVMBlock { const gethResult = incomingGethResult as { hash: string @@ -82,7 +82,7 @@ export function blockFromProviderBlock( } export function ethersTransactionRequestFromEIP1559TransactionRequest( - transaction: EIP1559TransactionRequest + transaction: EIP1559TransactionRequest, ): EthersTransactionRequest { return { to: transaction.to, @@ -99,7 +99,7 @@ export function ethersTransactionRequestFromEIP1559TransactionRequest( } export function ethersTransactionRequestFromLegacyTransactionRequest( - transaction: LegacyEVMTransactionRequest + transaction: LegacyEVMTransactionRequest, ): EthersTransactionRequest { const { to, input, type, nonce, gasPrice, value, chainID, gasLimit, from } = transaction @@ -118,21 +118,21 @@ export function ethersTransactionRequestFromLegacyTransactionRequest( } export function ethersTransactionFromTransactionRequest( - transactionRequest: TransactionRequest + transactionRequest: TransactionRequest, ): EthersTransactionRequest { if (isEIP1559TransactionRequest(transactionRequest)) { return ethersTransactionRequestFromEIP1559TransactionRequest( - transactionRequest + transactionRequest, ) } // Legacy Transaction return ethersTransactionRequestFromLegacyTransactionRequest( - transactionRequest + transactionRequest, ) } function eip1559TransactionRequestFromEthersTransactionRequest( - transaction: EthersTransactionRequest + transaction: EthersTransactionRequest, ): Partial { return { to: transaction.to, @@ -164,7 +164,7 @@ function eip1559TransactionRequestFromEthersTransactionRequest( } function legacyEVMTransactionRequestFromEthersTransactionRequest( - transaction: EthersTransactionRequest + transaction: EthersTransactionRequest, ): Partial { return { to: transaction.to, @@ -192,20 +192,20 @@ function legacyEVMTransactionRequestFromEthersTransactionRequest( } export function transactionRequestFromEthersTransactionRequest( - ethersTransactionRequest: EthersTransactionRequest + ethersTransactionRequest: EthersTransactionRequest, ): Partial { if (isEIP1559TransactionRequest(ethersTransactionRequest)) { return eip1559TransactionRequestFromEthersTransactionRequest( - ethersTransactionRequest + ethersTransactionRequest, ) } return legacyEVMTransactionRequestFromEthersTransactionRequest( - ethersTransactionRequest + ethersTransactionRequest, ) } export function unsignedTransactionFromEVMTransaction( - tx: AnyEVMTransaction | PartialTransactionRequestWithFrom + tx: AnyEVMTransaction | PartialTransactionRequestWithFrom, ): UnsignedTransaction { const unsignedTransaction: UnsignedTransaction = { to: tx.to, @@ -217,7 +217,7 @@ export function unsignedTransactionFromEVMTransaction( isEnabled(FeatureFlags.USE_MAINNET_FORK) ? FORK.chainID : tx.network.chainID, - 10 + 10, ), type: tx.type, } @@ -225,7 +225,7 @@ export function unsignedTransactionFromEVMTransaction( if (isEIP1559TransactionRequest(tx)) { unsignedTransaction.maxFeePerGas = BigNumber.from(tx.maxFeePerGas) unsignedTransaction.maxPriorityFeePerGas = BigNumber.from( - tx.maxPriorityFeePerGas + tx.maxPriorityFeePerGas, ) } else if ("gasPrice" in tx) { unsignedTransaction.gasPrice = BigNumber.from(tx?.gasPrice ?? 0) @@ -234,7 +234,7 @@ export function unsignedTransactionFromEVMTransaction( } export function ethersTransactionFromSignedTransaction( - tx: SignedTransaction + tx: SignedTransaction, ): EthersTransaction { const baseTx: EthersTransaction = { nonce: Number(tx.nonce), @@ -246,7 +246,7 @@ export function ethersTransactionFromSignedTransaction( isEnabled(FeatureFlags.USE_MAINNET_FORK) ? FORK.chainID : tx.network.chainID, - 10 + 10, ), value: BigNumber.from(tx.value), gasLimit: BigNumber.from(tx.gasLimit), @@ -272,7 +272,7 @@ export function ethersTransactionFromSignedTransaction( */ export function enrichTransactionWithReceipt( transaction: AnyEVMTransaction, - receipt: EthersTransactionReceipt + receipt: EthersTransactionReceipt, ): ConfirmedEVMTransaction { const gasUsed = receipt.gasUsed.toBigInt() @@ -315,7 +315,7 @@ export function transactionFromEthersTransaction( blockNumber?: number type?: number | null }, - network: EVMNetwork + network: EVMNetwork, ): AnyEVMTransaction { if (!tx || tx.hash === undefined) { throw new Error("Malformed transaction") diff --git a/background/services/doggo/contracts.ts b/background/services/doggo/contracts.ts index 0ed46ed543..b33b966fee 100644 --- a/background/services/doggo/contracts.ts +++ b/background/services/doggo/contracts.ts @@ -278,5 +278,5 @@ export const CLAIM_WITH_FRIENDS_ABI = [ export const ClaimWithFriends = new ethers.Contract( VOTE_WITH_FRIENDS_ADDRESS, // "** address from calling DoggoDeployer.VOTE_WITH_FRIENDS(), this should probably be a function **", - CLAIM_WITH_FRIENDS_ABI + CLAIM_WITH_FRIENDS_ABI, ) diff --git a/background/services/doggo/db.ts b/background/services/doggo/db.ts index 6b35876623..c103101833 100644 --- a/background/services/doggo/db.ts +++ b/background/services/doggo/db.ts @@ -25,7 +25,7 @@ export class DoggoDatabase extends Dexie { async addReferralBonus( claimant: AddressOnNetwork, referredBy: AddressOnNetwork, - bonus: bigint + bonus: bigint, ): Promise { this.referralBonuses.put({ ...claimant, referredBy, referralBonus: bonus }) } @@ -40,7 +40,7 @@ export class DoggoDatabase extends Dexie { .filter( ({ network: claimantNetwork }) => claimantNetwork.name === network.name && - claimantNetwork.chainID === network.chainID + claimantNetwork.chainID === network.chainID, ) .toArray() @@ -48,7 +48,7 @@ export class DoggoDatabase extends Dexie { referredUsers: allReferrals.length, bonusTotal: allReferrals.reduce( (bonusTotal, { referralBonus }) => bonusTotal + referralBonus, - 0n + 0n, ), } } diff --git a/background/services/doggo/defaults.ts b/background/services/doggo/defaults.ts index 092f6f5e8d..ea1bdc4484 100644 --- a/background/services/doggo/defaults.ts +++ b/background/services/doggo/defaults.ts @@ -3,7 +3,7 @@ import { Claim, Eligible } from "./types" const defaultClaim: Claim = { eligibles: eligibles.map( - (item): Eligible => ({ ...item, amount: BigInt(item.amount) }) + (item): Eligible => ({ ...item, amount: BigInt(item.amount) }), ), } diff --git a/background/services/doggo/index.ts b/background/services/doggo/index.ts index db88821803..233d7b03de 100644 --- a/background/services/doggo/index.ts +++ b/background/services/doggo/index.ts @@ -38,7 +38,7 @@ export default class DoggoService extends BaseService { private constructor( private db: DoggoDatabase, private chainService: ChainService, - private indexingService: IndexingService + private indexingService: IndexingService, ) { super() } @@ -51,7 +51,7 @@ export default class DoggoService extends BaseService { const ethereumProvider = this.chainService.providerForNetwork(ETHEREUM) if (ethereumProvider === undefined) { logger.error( - "No Ethereum provider available, not setting up DOGGO monitoring..." + "No Ethereum provider available, not setting up DOGGO monitoring...", ) } @@ -81,7 +81,7 @@ export default class DoggoService extends BaseService { ;(await this.chainService.getAccountsToTrack()).forEach( (addressOnNetwork) => { this.trackReferrals(addressOnNetwork) - } + }, ) } } @@ -94,7 +94,7 @@ export default class DoggoService extends BaseService { const fileHash = await getFileHashProspect(address) const { account, amount, index, proof } = await getClaimFromFileHash( address, - fileHash + fileHash, ) const claim = { @@ -130,23 +130,23 @@ export default class DoggoService extends BaseService { const providedClaimWithFriends = ClaimWithFriends.connect(provider) const referralFilter = ClaimWithFriends.filters.ClaimedWithCommunityCode( null, - address + address, ) const referralHandler: Parameters< - typeof providedClaimWithFriends["on"] + (typeof providedClaimWithFriends)["on"] >[1] = (...args) => { if (args.length !== 6) { logger.error( "Malformed event, got an unexpected number of ClaimedWithCommunityCode parameters:", - args + args, ) return } this.registerReferral( { address: normalizeEVMAddress(address), network }, - [args[0], args[1], args[2], args[3], args[4], args[5]] + [args[0], args[1], args[2], args[3], args[4], args[5]], ) } @@ -156,7 +156,7 @@ export default class DoggoService extends BaseService { if (event.args === undefined) { logger.error( "Malformed event lookup, got no decoded ClaimedWithCommunityCode parameters:", - event + event, ) return } @@ -167,9 +167,9 @@ export default class DoggoService extends BaseService { event.args.amountClaimed, event.args.claimedBonus, event.args.communityRef, - event.args.communityBonus + event.args.communityBonus, ) - } + }, ) } } @@ -182,8 +182,8 @@ export default class DoggoService extends BaseService { BigNumber, BigNumber, HexString, - BigNumber - ] + BigNumber, + ], ): Promise { const referrer = { address: normalizeEVMAddress(communityRef), @@ -192,7 +192,7 @@ export default class DoggoService extends BaseService { await this.db.addReferralBonus( claimant, referrer, - communityBonus.toBigInt() + communityBonus.toBigInt(), ) // emit event to inform referrer that their referral link was used diff --git a/background/services/doggo/types.ts b/background/services/doggo/types.ts index b39ea1179c..8f84aea037 100644 --- a/background/services/doggo/types.ts +++ b/background/services/doggo/types.ts @@ -3,7 +3,7 @@ import { HexString } from "../../types" export interface Eligible { index: HexString account: HexString - amount: BigInt + amount: bigint proof: HexString[] } diff --git a/background/services/doggo/utils.ts b/background/services/doggo/utils.ts index 46b41d859a..b7e7936b79 100644 --- a/background/services/doggo/utils.ts +++ b/background/services/doggo/utils.ts @@ -19,15 +19,15 @@ export const IPFSHTTPGet = "https://ipfs.io/api/v0/dag/get?arg=" * To find which file to look in, we reference claim-index.json */ export async function getFileHashProspect( - targetAddress: string + targetAddress: string, ): Promise { const numericTargetAddress = BigInt(targetAddress) const IPFSFileDirectory = await fetchWithTimeout( - `${IPFSHTTPGet}${IPFSFileDirectoryIPFSHash}` + `${IPFSHTTPGet}${IPFSFileDirectoryIPFSHash}`, ) const partGlossary = await fetchWithTimeout( - `${IPFSHTTPGatewayPrefix}${partGlossaryIPFSHash}` + `${IPFSHTTPGatewayPrefix}${partGlossaryIPFSHash}`, ) const IPFSFileDirectoryJson = await IPFSFileDirectory.json() @@ -38,12 +38,12 @@ export async function getFileHashProspect( .map((item: { startAddress: string; file: string }) => item.startAddress) .findIndex( (startAddress: string) => - BigInt(startAddress ?? 0) > numericTargetAddress + BigInt(startAddress ?? 0) > numericTargetAddress, ) - 1 const inClaimFileName = partGlossaryJson[fileIndex]?.file const IPFSHashForFoundFile = IPFSFileDirectoryJson.Links.find( - (linkItem: IPFSLinkItem) => linkItem.Name === inClaimFileName + (linkItem: IPFSLinkItem) => linkItem.Name === inClaimFileName, ) return IPFSHashForFoundFile?.Hash["/"] @@ -51,7 +51,7 @@ export async function getFileHashProspect( export async function getClaimFromFileHash( targetAddress: string, - hash: string + hash: string, ): Promise<{ account: HexString amount: string | number diff --git a/background/services/enrichment/addresses.ts b/background/services/enrichment/addresses.ts index 5410f199dd..bb6ba2c4d7 100644 --- a/background/services/enrichment/addresses.ts +++ b/background/services/enrichment/addresses.ts @@ -11,7 +11,7 @@ import { AddressOnNetworkAnnotation, EnrichedAddressOnNetwork } from "./types" export async function resolveAddressAnnotation( chainService: ChainService, nameService: NameService, - addressOnNetwork: AddressOnNetwork + addressOnNetwork: AddressOnNetwork, ): Promise { const { address, network } = addressOnNetwork const provider = chainService.providerForNetworkOrThrow(network) @@ -31,14 +31,14 @@ export async function resolveAddressAnnotation( export async function enrichAddressOnNetwork( chainService: ChainService, nameService: NameService, - addressOnNetwork: AddressOnNetwork + addressOnNetwork: AddressOnNetwork, ): Promise { return { ...addressOnNetwork, annotation: await resolveAddressAnnotation( chainService, nameService, - addressOnNetwork + addressOnNetwork, ), } } diff --git a/background/services/enrichment/index.ts b/background/services/enrichment/index.ts index 0a91438113..48e5862c04 100644 --- a/background/services/enrichment/index.ts +++ b/background/services/enrichment/index.ts @@ -64,7 +64,7 @@ export default class EnrichmentService extends BaseService { private constructor( private chainService: ChainService, private indexingService: IndexingService, - private nameService: NameService + private nameService: NameService, ) { super({}) } @@ -84,7 +84,7 @@ export default class EnrichmentService extends BaseService { transaction: enrichedTransaction, forAccounts: getRelevantTransactionAddresses( enrichedTransaction, - accounts + accounts, ), }) }) @@ -93,7 +93,7 @@ export default class EnrichmentService extends BaseService { async enrichTransactionSignature( network: EVMNetwork, transaction: PartialTransactionRequestWithFrom, - desiredDecimals: number + desiredDecimals: number, ): Promise { const enrichedTxSignatureRequest = { ...transaction, @@ -104,20 +104,20 @@ export default class EnrichmentService extends BaseService { this.nameService, network, transaction, - desiredDecimals + desiredDecimals, ), } this.emitter.emit( "enrichedEVMTransactionSignatureRequest", - enrichedTxSignatureRequest + enrichedTxSignatureRequest, ) return enrichedTxSignatureRequest } async enrichSignTypedDataRequest( - signTypedDataRequest: SignTypedDataRequest + signTypedDataRequest: SignTypedDataRequest, ): Promise { let annotation: SignTypedDataAnnotation | undefined @@ -137,12 +137,12 @@ export default class EnrichmentService extends BaseService { ) } return false - } + }, ) annotation = await enrichEIP2612SignTypedDataRequest( typedData, this.nameService, - correspondingAsset + correspondingAsset, ) } @@ -153,7 +153,7 @@ export default class EnrichmentService extends BaseService { this.emitter.emit( "enrichedSignTypedDataRequest", - enrichedSignTypedDataRequest + enrichedSignTypedDataRequest, ) return enrichedSignTypedDataRequest @@ -161,7 +161,7 @@ export default class EnrichmentService extends BaseService { async enrichTransaction( transaction: AnyEVMTransaction, - desiredDecimals: number + desiredDecimals: number, ): Promise { return { ...transaction, @@ -171,7 +171,7 @@ export default class EnrichmentService extends BaseService { this.nameService, transaction.network, transaction, - desiredDecimals + desiredDecimals, ), } } diff --git a/background/services/enrichment/tests/transactions.integration.test.ts b/background/services/enrichment/tests/transactions.integration.test.ts index 13c6814fbc..72dbefd434 100644 --- a/background/services/enrichment/tests/transactions.integration.test.ts +++ b/background/services/enrichment/tests/transactions.integration.test.ts @@ -72,7 +72,7 @@ describe("Enrichment Service Transactions", () => { ETHEREUM, 2, Date.now(), - createAnyEVMBlock() + createAnyEVMBlock(), ) expect(subannotations.length).toBe(2) diff --git a/background/services/enrichment/transactions.ts b/background/services/enrichment/transactions.ts index 939ad70dba..e081ab82a2 100644 --- a/background/services/enrichment/transactions.ts +++ b/background/services/enrichment/transactions.ts @@ -49,7 +49,7 @@ async function buildSubannotations( network: EVMNetwork, desiredDecimals: number, resolvedTime: number, - block: AnyEVMBlock | undefined + block: AnyEVMBlock | undefined, ) { const subannotations = ( await Promise.allSettled( @@ -64,7 +64,7 @@ async function buildSubannotations( const matchingFungibleAsset = assets.find( (asset): asset is SmartContractFungibleAsset => isSmartContractFungibleAsset(asset) && - sameEVMAddress(asset.contractAddress, contractAddress) + sameEVMAddress(asset.contractAddress, contractAddress), ) if (!matchingFungibleAsset) { @@ -94,15 +94,15 @@ async function buildSubannotations( asset: matchingFungibleAsset, amount, }, - desiredDecimals + desiredDecimals, ), sender, recipient, timestamp: resolvedTime, blockTimestamp: block?.timestamp, } - } - ) + }, + ), ) ) .filter(isFulfilledPromise) @@ -120,12 +120,12 @@ export async function annotationsFromLogs( network: EVMNetwork, desiredDecimals: number, resolvedTime: number, - block: AnyEVMBlock | undefined + block: AnyEVMBlock | undefined, ): Promise { const assets = indexingService.getCachedAssets(network) const accountAddresses = (await chainService.getAccountsToTrack()).map( - (account) => account.address + (account) => account.address, ) const tokenTransferLogs = [ @@ -135,12 +135,12 @@ export async function annotationsFromLogs( const relevantTransferLogs = getERC20LogsForAddresses( tokenTransferLogs, - accountAddresses + accountAddresses, ) const relevantAddresses = getDistinctRecipentAddressesFromERC20Logs(relevantTransferLogs).map( - normalizeEVMAddress + normalizeEVMAddress, ) // Look up transfer log names, then flatten to an address -> name map. @@ -155,13 +155,13 @@ export async function annotationsFromLogs( address, network, }), - ] as const - ) + ] as const, + ), ) ) .filter(isFulfilledPromise) .map(({ value }) => value) - .filter(([, annotation]) => isDefined(annotation)) + .filter(([, annotation]) => isDefined(annotation)), ) const subannotations = await buildSubannotations( @@ -173,7 +173,7 @@ export async function annotationsFromLogs( network, desiredDecimals, resolvedTime, - block + block, ) return subannotations @@ -196,7 +196,7 @@ export default async function resolveTransactionAnnotation( | (EnrichedEVMTransactionRequest & { blockHash?: string }), - desiredDecimals: number + desiredDecimals: number, ): Promise { const assets = await indexingService.getCachedAssets(network) @@ -212,7 +212,7 @@ export default async function resolveTransactionAnnotation( transactionLogoURL: assets.find( (asset) => asset.metadata?.logoURL && - asset.symbol === transaction.network.baseAsset.symbol + asset.symbol === transaction.network.baseAsset.symbol, )?.metadata?.logoURL, } @@ -231,7 +231,7 @@ export default async function resolveTransactionAnnotation( network.chainID === OPTIMISM.chainID ? await chainService.estimateL1RollupFeeForOptimism( network, - unsignedTransactionFromEVMTransaction(transaction) + unsignedTransactionFromEVMTransaction(transaction), ) : 0n @@ -250,7 +250,7 @@ export default async function resolveTransactionAnnotation( } } else { txAnnotation.warnings = txAnnotation.warnings.filter( - (warning) => warning !== "insufficient-funds" + (warning) => warning !== "insufficient-funds", ) } @@ -272,7 +272,7 @@ export default async function resolveTransactionAnnotation( { address: transaction.to, network, - } + }, ) txAnnotation = @@ -286,7 +286,7 @@ export default async function resolveTransactionAnnotation( { address: transaction.to, network, - } + }, ), } : // Don't replace prepopulated annotations. @@ -348,7 +348,7 @@ export default async function resolveTransactionAnnotation( asset: network.baseAsset, amount: transaction.value, }, - desiredDecimals + desiredDecimals, ), } } @@ -359,7 +359,7 @@ export default async function resolveTransactionAnnotation( const matchingFungibleAsset = assets.find( (asset): asset is SmartContractFungibleAsset => isSmartContractFungibleAsset(asset) && - sameEVMAddress(asset.contractAddress, transaction.to) + sameEVMAddress(asset.contractAddress, transaction.to), ) const transactionLogoURL = matchingFungibleAsset?.metadata?.logoURL @@ -393,7 +393,7 @@ export default async function resolveTransactionAnnotation( asset: matchingFungibleAsset, amount: BigInt(erc20Tx.args.amount), }, - desiredDecimals + desiredDecimals, ), } // Warn if we're sending the token to its own contract @@ -427,7 +427,7 @@ export default async function resolveTransactionAnnotation( { address: erc20Tx.args.spender, network, - } + }, ) // Warn if we're approving spending to a likely EOA. Note this will also // sweep up CREATE2 contracts that haven't yet been deployed @@ -445,7 +445,7 @@ export default async function resolveTransactionAnnotation( asset: matchingFungibleAsset, amount: BigInt(erc20Tx.args.value), }, - desiredDecimals + desiredDecimals, ), } } @@ -462,7 +462,7 @@ export default async function resolveTransactionAnnotation( network, desiredDecimals, txAnnotation.timestamp, - block + block, ) if (subannotations.length > 0) { diff --git a/background/services/enrichment/types.ts b/background/services/enrichment/types.ts index 2f920abde2..31fd98856e 100644 --- a/background/services/enrichment/types.ts +++ b/background/services/enrichment/types.ts @@ -121,10 +121,10 @@ export type EnrichedEVMTransactionRequest = | EnrichedLegacyTransactionRequest type PartialEIP1559TransactionRequestWithFrom = - | Partial & { from: string; network: EVMNetwork } + Partial & { from: string; network: EVMNetwork } type PartialLegacyEVMTransactionRequestWithFrom = - | Partial & { from: string; network: EVMNetwork } + Partial & { from: string; network: EVMNetwork } export type PartialTransactionRequestWithFrom = | PartialEIP1559TransactionRequestWithFrom diff --git a/background/services/enrichment/utils.ts b/background/services/enrichment/utils.ts index 942f3e0a3b..2aafe86fed 100644 --- a/background/services/enrichment/utils.ts +++ b/background/services/enrichment/utils.ts @@ -10,7 +10,7 @@ import { normalizeEVMAddress, sameEVMAddress } from "../../lib/utils" import { AddressOnNetwork } from "../../accounts" export function isEIP2612TypedData( - typedData: EIP712TypedData + typedData: EIP712TypedData, ): typedData is EIP2612TypedData { if (typeof typedData.message.spender === "string") { if ( @@ -20,7 +20,7 @@ export function isEIP2612TypedData( // Must have all expected fields // @TODO use AJV validation ["owner", "spender", "value", "nonce", "deadline"].every( - (key) => key in typedData.message + (key) => key in typedData.message, ) ) { return true @@ -32,7 +32,7 @@ export function isEIP2612TypedData( export async function enrichEIP2612SignTypedDataRequest( typedData: EIP2612TypedData, nameService: NameService, - asset: SmartContractFungibleAsset | undefined + asset: SmartContractFungibleAsset | undefined, ): Promise { const { message, domain } = typedData const { value, owner, spender, nonce } = message @@ -54,11 +54,11 @@ export async function enrichEIP2612SignTypedDataRequest( }), await nameService.lookUpName( { address: owner, network: ETHEREUM }, - false + false, ), await nameService.lookUpName( { address: spender, network: ETHEREUM }, - false + false, ), ]) ).map((nameOnNetwork) => nameOnNetwork?.resolved?.nameOnNetwork.name) @@ -79,21 +79,21 @@ export async function enrichEIP2612SignTypedDataRequest( } export function getDistinctRecipentAddressesFromERC20Logs( - logs: ERC20TransferLog[] + logs: ERC20TransferLog[], ): string[] { return [...new Set([...logs.map(({ recipientAddress }) => recipientAddress)])] } export const getERC20LogsForAddresses = ( logs: ERC20TransferLog[], - addresses: string[] + addresses: string[], ): ERC20TransferLog[] => { const relevantAddresses = new Set(addresses) return logs.filter( (log) => relevantAddresses.has(normalizeEVMAddress(log.recipientAddress)) || - relevantAddresses.has(normalizeEVMAddress(log.senderAddress)) + relevantAddresses.has(normalizeEVMAddress(log.senderAddress)), ) } @@ -147,7 +147,7 @@ export function getSender(transaction: EnrichedEVMTransaction): { export function getRelevantTransactionAddresses( transaction: EnrichedEVMTransaction, - trackedAccounts: AddressOnNetwork[] + trackedAccounts: AddressOnNetwork[], ): string[] { const { address: recipientAddress } = getRecipient(transaction) const { address: senderAddress } = getSender(transaction) @@ -156,7 +156,7 @@ export function getRelevantTransactionAddresses( .filter( ({ address }) => sameEVMAddress(recipientAddress, address) || - sameEVMAddress(senderAddress, address) + sameEVMAddress(senderAddress, address), ) .map(({ address }) => normalizeEVMAddress(address)) } diff --git a/background/services/indexing/db.ts b/background/services/indexing/db.ts index ab498e26f9..27f3e6ad33 100644 --- a/background/services/indexing/db.ts +++ b/background/services/indexing/db.ts @@ -172,10 +172,10 @@ export class IndexingDatabase extends Dexie { // This is how migrations are expected to work // eslint-disable-next-line no-param-reassign storedTokenList.list.tokens = fixPolygonWETHIssue( - storedTokenList.list.tokens + storedTokenList.list.tokens, ) } - }) + }), ) this.version(4).upgrade(async (tx) => { @@ -185,7 +185,7 @@ export class IndexingDatabase extends Dexie { record: SmartContractFungibleAsset & { chainId?: unknown address?: string - } + }, ) => { const normalizedAddress = normalizeEVMAddress(record.contractAddress) // These properties are not included after parsing @@ -251,7 +251,7 @@ export class IndexingDatabase extends Dexie { .modify((customAsset: CustomAsset) => { // eslint-disable-next-line no-param-reassign delete customAsset.metadata?.discoveryTxHash - }) + }), ) } @@ -259,7 +259,7 @@ export class IndexingDatabase extends Dexie { pricePoint: PricePoint, retrievedAt: number, dataSource: PriceMeasurement["dataSource"], - exchange?: string + exchange?: string, ): Promise { const measurement = { ...normalizePricePoint(pricePoint), @@ -273,7 +273,7 @@ export class IndexingDatabase extends Dexie { async getLatestAccountBalance( address: string, network: EVMNetwork, - asset: FungibleAsset + asset: FungibleAsset, ): Promise { // TODO this needs to be tightened up, both for performance and specificity const balanceCandidates = await this.balances @@ -283,7 +283,7 @@ export class IndexingDatabase extends Dexie { (balance) => balance.address === address && balance.assetAmount.asset.symbol === asset.symbol && - balance.network.name === network.name + balance.network.name === network.name, ) .reverse() .sortBy("retrievedAt") @@ -305,7 +305,7 @@ export class IndexingDatabase extends Dexie { return ( (await this.getTrackedAssetByAddressAndNetwork( asset.homeNetwork, - asset.contractAddress + asset.contractAddress, )) !== undefined ) } @@ -315,7 +315,7 @@ export class IndexingDatabase extends Dexie { } async getActiveCustomAssetsByNetworks( - networks: EVMNetwork[] + networks: EVMNetwork[], ): Promise { return ( await this.customAssets @@ -327,7 +327,7 @@ export class IndexingDatabase extends Dexie { async getCustomAssetByAddressAndNetwork( network: EVMNetwork, - contractAddress: string + contractAddress: string, ): Promise { return this.customAssets .where("[contractAddress+homeNetwork.name]") @@ -337,7 +337,7 @@ export class IndexingDatabase extends Dexie { async getTrackedAssetByAddressAndNetwork( network: EVMNetwork, - contractAddress: string + contractAddress: string, ): Promise { return this.assetsToTrack .where("[contractAddress+homeNetwork.name]") @@ -346,7 +346,7 @@ export class IndexingDatabase extends Dexie { } async addOrUpdateCustomAsset( - asset: SmartContractFungibleAsset + asset: SmartContractFungibleAsset, ): Promise { this.customAssets.put(asset) } @@ -379,34 +379,37 @@ export class IndexingDatabase extends Dexie { } async getLatestTokenLists( - urls: string[] + urls: string[], ): Promise<{ url: string; tokenList: TokenList }[]> { const candidateLists = (await this.tokenLists .where("url") .anyOf(urls) .toArray()) as CachedTokenList[] return Object.entries( - candidateLists.reduce((acc, cachedList) => { - if (!(cachedList.url in acc)) { - acc[cachedList.url] = cachedList.list - } else { - const orig = acc[cachedList.url] - const origV = [ - orig.version.major, - orig.version.minor, - orig.version.patch, - ] - const cachedV = [ - cachedList.list.version.major, - cachedList.list.version.minor, - cachedList.list.version.patch, - ] - if (numberArrayCompare(origV, cachedV) < 0) { + candidateLists.reduce( + (acc, cachedList) => { + if (!(cachedList.url in acc)) { acc[cachedList.url] = cachedList.list + } else { + const orig = acc[cachedList.url] + const origV = [ + orig.version.major, + orig.version.minor, + orig.version.patch, + ] + const cachedV = [ + cachedList.list.version.major, + cachedList.list.version.minor, + cachedList.list.version.patch, + ] + if (numberArrayCompare(origV, cachedV) < 0) { + acc[cachedList.url] = cachedList.list + } } - } - return { ...acc } - }, {} as { [url: string]: TokenList }) + return { ...acc } + }, + {} as { [url: string]: TokenList }, + ), ).map(([k, v]) => ({ url: k, tokenList: v as TokenList, @@ -415,7 +418,7 @@ export class IndexingDatabase extends Dexie { } export async function getOrCreateDb( - options?: DexieOptions + options?: DexieOptions, ): Promise { return new IndexingDatabase(options) } diff --git a/background/services/indexing/index.ts b/background/services/indexing/index.ts index d20d538e5b..af09e63fcc 100644 --- a/background/services/indexing/index.ts +++ b/background/services/indexing/index.ts @@ -81,23 +81,26 @@ interface Events extends ServiceLifecycleEvents { } const getAssetsByAddress = (assets: SmartContractFungibleAsset[]) => { - const activeAssetsByAddress = assets.reduce((agg, t) => { - const newAgg = { - ...agg, - } - newAgg[t.contractAddress.toLowerCase()] = t - return newAgg - }, {} as { [address: string]: SmartContractFungibleAsset }) + const activeAssetsByAddress = assets.reduce( + (agg, t) => { + const newAgg = { + ...agg, + } + newAgg[t.contractAddress.toLowerCase()] = t + return newAgg + }, + {} as { [address: string]: SmartContractFungibleAsset }, + ) return activeAssetsByAddress } const getActiveAssetsByAddressForNetwork = ( network: EVMNetwork, - activeAssetsToTrack: SmartContractFungibleAsset[] + activeAssetsToTrack: SmartContractFungibleAsset[], ) => { const networkActiveAssets = activeAssetsToTrack.filter( - (asset) => asset.homeNetwork.chainID === network.chainID + (asset) => asset.homeNetwork.chainID === network.chainID, ) return getAssetsByAddress(networkActiveAssets) @@ -105,7 +108,7 @@ const getActiveAssetsByAddressForNetwork = ( function allowVerifyAssetByManualImport( asset: SmartContractFungibleAsset, - verified?: boolean + verified?: boolean, ): boolean { // Only not baseline trusted and unverified assets can be verified. if (!isBaselineTrustedAsset(asset) && isUnverifiedAsset(asset)) { @@ -135,7 +138,7 @@ export default class IndexingService extends BaseService { private cachedAssets: Record = Object.fromEntries( - Object.keys(NETWORK_BY_CHAIN_ID).map((network) => [network, []]) + Object.keys(NETWORK_BY_CHAIN_ID).map((network) => [network, []]), ) /** @@ -155,13 +158,13 @@ export default class IndexingService extends BaseService { new this( await getOrCreateDb(dexieOptions), await preferenceService, - await chainService + await chainService, ) private constructor( private db: IndexingDatabase, private preferenceService: PreferenceService, - private chainService: ChainService + private chainService: ChainService, ) { super({ balance: { @@ -210,7 +213,7 @@ export default class IndexingService extends BaseService { trackedNetworks.map(async (network) => { await this.cacheAssetsForNetwork(network) this.emitter.emit("assets", this.getCachedAssets(network)) - }) + }), // Load balances after token lists load and after assets are cached, otherwise // we will not load balances on initial balance query ).then(() => tokenListLoad.then(() => this.loadAccountBalances())) @@ -244,7 +247,7 @@ export default class IndexingService extends BaseService { * @param asset The custom asset */ async addOrUpdateCustomAsset( - asset: SmartContractFungibleAsset + asset: SmartContractFungibleAsset, ): Promise { await this.db.addOrUpdateCustomAsset(asset) await this.cacheAssetsForNetwork(asset.homeNetwork) @@ -261,7 +264,7 @@ export default class IndexingService extends BaseService { async getLatestAccountBalance( account: string, network: EVMNetwork, - asset: FungibleAsset + asset: FungibleAsset, ): Promise { return this.db.getLatestAccountBalance(account, network, asset) } @@ -290,7 +293,7 @@ export default class IndexingService extends BaseService { this.cachedAssets[network.chainID] = mergeAssets( [network.baseAsset], customAssets, - networkAssetsFromLists(network, tokenLists) + networkAssetsFromLists(network, tokenLists), ) } @@ -303,7 +306,7 @@ export default class IndexingService extends BaseService { */ getKnownSmartContractAsset( network: EVMNetwork, - contractAddress: HexString + contractAddress: HexString, ): SmartContractFungibleAsset | undefined { const knownAssets = this.getCachedAssets(network) @@ -311,7 +314,7 @@ export default class IndexingService extends BaseService { (asset): asset is SmartContractFungibleAsset => isSmartContractFungibleAsset(asset) && sameNetwork(asset.homeNetwork, network) && - sameEVMAddress(asset.contractAddress, contractAddress) + sameEVMAddress(asset.contractAddress, contractAddress), ) return searchResult @@ -333,7 +336,7 @@ export default class IndexingService extends BaseService { } notifyEnrichedTransaction( - enrichedEVMTransaction: EnrichedEVMTransaction + enrichedEVMTransaction: EnrichedEVMTransaction, ): void { const jointAnnotations = typeof enrichedEVMTransaction.annotation === "undefined" @@ -363,7 +366,7 @@ export default class IndexingService extends BaseService { const trackedAddresesOnNetworks = await this.chainService.filterTrackedAddressesOnNetworks( - annotationAddressesOnNetwork + annotationAddressesOnNetwork, ) // An asset has baseline trust if we are already tracking the asset @@ -372,7 +375,7 @@ export default class IndexingService extends BaseService { const baselineTrustedAsset = typeof this.getKnownSmartContractAsset( enrichedEVMTransaction.network, - asset.contractAddress + asset.contractAddress, ) !== "undefined" || ( await this.chainService.filterTrackedAddressesOnNetworks([ @@ -388,13 +391,13 @@ export default class IndexingService extends BaseService { (addressOnNetwork) => ({ asset, addressOnNetwork, - }) + }), ) this.acceleratedTokenRefresh.assetLookups.push(...assetLookups) this.acceleratedTokenRefresh.timeout ??= window.setTimeout( this.handleAcceleratedTokenRefresh.bind(this), - ACCELERATED_TOKEN_REFRESH_TIMEOUT + ACCELERATED_TOKEN_REFRESH_TIMEOUT, ) } } @@ -414,7 +417,7 @@ export default class IndexingService extends BaseService { const existingAddressOnNetworkIndex = lookups.findIndex( ([{ address: existingAddress, network: existingNetwork }]) => sameEVMAddress(address, existingAddress) && - sameNetwork(network, existingNetwork) + sameNetwork(network, existingNetwork), ) if (existingAddressOnNetworkIndex !== -1) { @@ -446,11 +449,13 @@ export default class IndexingService extends BaseService { this.addTokenToTrackByContract( addressNetwork.network, fungibleAsset.contractAddress, - { discoveryTxHash: { [addressNetwork.address]: transfer.txHash } } + { + discoveryTxHash: { [addressNetwork.address]: transfer.txHash }, + }, ) } }) - } + }, ) this.chainService.emitter.on( @@ -470,8 +475,8 @@ export default class IndexingService extends BaseService { // easily rate-limited eventually. const checkedContractAddresses = new Set( balances.map( - ({ smartContract: { contractAddress } }) => contractAddress - ) + ({ smartContract: { contractAddress } }) => contractAddress, + ), ) const cachedAssets = this.getCachedAssets(addressOnNetwork.network) @@ -480,11 +485,11 @@ export default class IndexingService extends BaseService { .filter( (a) => a.homeNetwork.chainID === addressOnNetwork.network.chainID && - !checkedContractAddresses.has(a.contractAddress) + !checkedContractAddresses.has(a.contractAddress), ) await this.retrieveTokenBalances(addressOnNetwork, otherActiveAssets) - } + }, ) this.chainService.emitter.on( @@ -510,7 +515,7 @@ export default class IndexingService extends BaseService { }) }) } - } + }, ) } @@ -524,13 +529,13 @@ export default class IndexingService extends BaseService { */ async retrieveTokenBalances( unsafeAddressNetwork: AddressOnNetwork, - smartContractAssets?: SmartContractFungibleAsset[] + smartContractAssets?: SmartContractFungibleAsset[], ): Promise { const addressNetwork = normalizeAddressOnNetwork(unsafeAddressNetwork) const balances = await this.chainService.assetData.getTokenBalances( addressNetwork, - smartContractAssets?.map(({ contractAddress }) => contractAddress) + smartContractAssets?.map(({ contractAddress }) => contractAddress), ) const listedAssetByAddress = (smartContractAssets ?? []).reduce<{ @@ -547,7 +552,7 @@ export default class IndexingService extends BaseService { listedAssetByAddress[normalizeEVMAddress(contractAddress)] ?? this.getKnownSmartContractAsset( addressNetwork.network, - contractAddress + contractAddress, ) if (amount > 0) { @@ -556,7 +561,7 @@ export default class IndexingService extends BaseService { } else { await this.addTokenToTrackByContract( addressNetwork.network, - contractAddress + contractAddress, ) } } @@ -576,7 +581,7 @@ export default class IndexingService extends BaseService { } return undefined - }) + }), ) const accountBalances = unfilteredAccountBalances.reduce( @@ -586,7 +591,7 @@ export default class IndexingService extends BaseService { } return acc }, - [] + [], ) await this.db.addBalances(accountBalances) @@ -600,7 +605,7 @@ export default class IndexingService extends BaseService { async updateAssetMetadata( asset: SmartContractFungibleAsset, - metadata: AnyAssetMetadata + metadata: AnyAssetMetadata, ): Promise { const updatedAsset: SmartContractFungibleAsset = { ...asset, @@ -632,7 +637,7 @@ export default class IndexingService extends BaseService { customAssets .filter( - (asset) => asset.metadata?.discoveryTxHash?.[address] !== undefined + (asset) => asset.metadata?.discoveryTxHash?.[address] !== undefined, ) .forEach((assetWithDiscoveryHashReference) => { const { metadata } = assetWithDiscoveryHashReference @@ -640,7 +645,7 @@ export default class IndexingService extends BaseService { delete metadata?.discoveryTxHash?.[address] this.updateAssetMetadata( assetWithDiscoveryHashReference, - metadata ?? {} + metadata ?? {}, ) } }) @@ -659,17 +664,17 @@ export default class IndexingService extends BaseService { await this.addTokenToTrackByContract( asset.homeNetwork, asset.contractAddress, - customAsset.metadata + customAsset.metadata, ) try { const addresses = await this.chainService.getTrackedAddressesOnNetwork( - asset.homeNetwork + asset.homeNetwork, ) await Promise.allSettled( addresses.map(async (addressNetwork) => { await this.retrieveTokenBalances(addressNetwork, [customAsset]) - }) + }), ) return true } catch (error) { @@ -677,7 +682,7 @@ export default class IndexingService extends BaseService { "Error retrieving new custom token balances for ", asset, ": ", - error + error, ) return false } @@ -705,13 +710,13 @@ export default class IndexingService extends BaseService { [address: HexString]: HexString } verified?: boolean - } = {} + } = {}, ): Promise { const normalizedAddress = normalizeEVMAddress(contractAddress) const knownAsset = this.getKnownSmartContractAsset( network, - normalizedAddress + normalizedAddress, ) if ( @@ -726,7 +731,7 @@ export default class IndexingService extends BaseService { let customAsset = await this.db.getCustomAssetByAddressAndNetwork( network, - normalizedAddress + normalizedAddress, ) if (!customAsset) { @@ -752,7 +757,7 @@ export default class IndexingService extends BaseService { customAsset.metadata.discoveryTxHash ??= {} Object.assign( customAsset.metadata.discoveryTxHash, - metadata.discoveryTxHash + metadata.discoveryTxHash, ) } @@ -794,7 +799,7 @@ export default class IndexingService extends BaseService { const provider = this.chainService.providerForNetworkOrThrow(network) return getUSDPriceForBaseAsset(network, provider) - }) + }), ) } @@ -809,8 +814,8 @@ export default class IndexingService extends BaseService { "Error saving price point", err, pricePoint, - measuredAt - ) + measuredAt, + ), ) }) this.emitter.emit("prices", basicPrices) @@ -818,7 +823,7 @@ export default class IndexingService extends BaseService { logger.error( "Error getting base asset prices from coingecko", BUILT_IN_NETWORK_BASE_ASSETS, - FIAT_CURRENCIES + FIAT_CURRENCIES, ) } } @@ -835,8 +840,8 @@ export default class IndexingService extends BaseService { (asset) => isTrustedAsset(asset) && trackedNetworks.some((network) => - sameNetwork(network, asset.homeNetwork) - ) + sameNetwork(network, asset.homeNetwork), + ), ) try { // TODO only uses USD @@ -847,13 +852,13 @@ export default class IndexingService extends BaseService { .map((network) => ({ activeAssetsByAddress: getActiveAssetsByAddressForNetwork( network, - activeAssetsToTrack + activeAssetsToTrack, ), network, })) .filter( ({ activeAssetsByAddress }) => - Object.keys(activeAssetsByAddress).length > 0 + Object.keys(activeAssetsByAddress).length > 0, ) const measuredAt = Date.now() @@ -865,7 +870,7 @@ export default class IndexingService extends BaseService { const coingeckoTokenPrices = await getTokenPrices( Object.keys(activeAssetsByAddress), USD, - network + network, ) if (Object.keys(coingeckoTokenPrices).length) { return coingeckoTokenPrices @@ -877,14 +882,14 @@ export default class IndexingService extends BaseService { return getUSDPriceForTokens( Object.values(activeAssetsByAddress), network, - provider + provider, ) - } - ) + }, + ), ) const activeAssetPrices = activeAssetPricesByNetwork.flatMap( - (activeAssetPrice) => Object.entries(activeAssetPrice) + (activeAssetPrice) => Object.entries(activeAssetPrice), ) const pricePoints = activeAssetPrices @@ -895,14 +900,18 @@ export default class IndexingService extends BaseService { this.db .savePriceMeasurement(pricePoint, measuredAt, "coingecko") .catch(() => - logger.error("Error saving price point", pricePoint, measuredAt) + logger.error( + "Error saving price point", + pricePoint, + measuredAt, + ), ) return pricePoint } logger.warn( "Discarding price from unknown asset", contractAddress, - unitPricePoint + unitPricePoint, ) return null }) @@ -913,7 +922,7 @@ export default class IndexingService extends BaseService { logger.error( "Error getting token prices from coingecko", activeAssetsToTrack, - err + err, ) } } @@ -950,11 +959,11 @@ export default class IndexingService extends BaseService { await this.db.saveTokenList(url, newListRef.tokenList) } catch (err) { logger.error( - `Error fetching, validating, and saving token list ${url}` + `Error fetching, validating, and saving token list ${url}`, ) } } - }) + }), ) // Cache assets across all supported networks even if a network @@ -963,7 +972,7 @@ export default class IndexingService extends BaseService { this.chainService.supportedNetworks.map(async (network) => { await this.cacheAssetsForNetwork(network) this.emitter.emit("assets", this.getCachedAssets(network)) - }) + }), ) // TODO if tokenListPrefs.autoUpdate is true, pull the latest and update if @@ -981,9 +990,8 @@ export default class IndexingService extends BaseService { // TODO doesn't support multi-network assets // like USDC or CREATE2-based contracts on L1/L2 - const accounts = await this.chainService.getAccountsToTrack( - onlyActiveAccounts - ) + const accounts = + await this.chainService.getAccountsToTrack(onlyActiveAccounts) await Promise.allSettled( accounts.map(async (addressOnNetwork) => { @@ -1008,17 +1016,17 @@ export default class IndexingService extends BaseService { const loadTokenBalances = this.retrieveTokenBalances( addressOnNetwork, - assetsToCheck + assetsToCheck, ) return Promise.all([loadBaseAccountBalance, loadTokenBalances]) - }) + }), ) } private async handleBalanceAlarm(): Promise { await this.fetchAndCacheTokenLists().then(() => - this.loadAccountBalances(true) + this.loadAccountBalances(true), ) } } diff --git a/background/services/indexing/tests/index.integration.test.ts b/background/services/indexing/tests/index.integration.test.ts index 9337dd8796..d641419efc 100644 --- a/background/services/indexing/tests/index.integration.test.ts +++ b/background/services/indexing/tests/index.integration.test.ts @@ -23,7 +23,7 @@ type MethodSpy unknown> = jest.SpyInstance< const getPrivateMethodSpy = unknown>( // eslint-disable-next-line @typescript-eslint/no-explicit-any object: any, - property: string + property: string, ) => jest.spyOn(object, property) as MethodSpy const fetchJsonStub: SinonStub< @@ -67,7 +67,7 @@ describe("IndexingService", () => { beforeEach(async () => { fetchJsonStub .withArgs( - "https://api.coingecko.com/api/v3/simple/price?ids=ethereum,matic-network,rootstock,avalanche-2,binancecoin&include_last_updated_at=true&vs_currencies=usd" + "https://api.coingecko.com/api/v3/simple/price?ids=ethereum,matic-network,rootstock,avalanche-2,binancecoin&include_last_updated_at=true&vs_currencies=usd", ) .resolves({ "matic-network": { usd: 1.088, last_updated_at: 1675123143 }, @@ -130,7 +130,7 @@ describe("IndexingService", () => { await indexingDb.saveTokenList( "https://gateway.ipfs.io/ipns/tokens.uniswap.org", - tokenList + tokenList, ) const delay = sinon.promise() @@ -153,7 +153,7 @@ describe("IndexingService", () => { tags: ["earn"], }, ], - })) + })), ) await Promise.all([ @@ -167,7 +167,7 @@ describe("IndexingService", () => { expect( indexingService .getCachedAssets(ETHEREUM) - .map((assets) => assets.symbol) + .map((assets) => assets.symbol), ).toEqual(["ETH", customAsset.symbol, "TEST"]) }) @@ -207,11 +207,13 @@ describe("IndexingService", () => { * for every supported network after tokenlist load */ expect(cacheSpy).toHaveBeenCalledTimes( - chainService.supportedNetworks.length + trackedNetworks.length + chainService.supportedNetworks.length + trackedNetworks.length, ) expect( - indexingService.getCachedAssets(ETHEREUM).map((asset) => asset.symbol) + indexingService + .getCachedAssets(ETHEREUM) + .map((asset) => asset.symbol), ).toEqual(["ETH", "TEST"]) }) }) @@ -235,7 +237,7 @@ describe("IndexingService", () => { expect( indexingService .getCachedAssets(ETHEREUM) - .map((assets) => assets.symbol) + .map((assets) => assets.symbol), ).toEqual(["ETH", "TEST"]) }) @@ -244,7 +246,9 @@ describe("IndexingService", () => { expect(cacheSpy).toHaveBeenCalled() expect( - indexingService.getCachedAssets(ETHEREUM).map((assets) => assets.symbol) + indexingService + .getCachedAssets(ETHEREUM) + .map((assets) => assets.symbol), ).toEqual(["ETH", customAsset.symbol, "TEST"]) }) @@ -257,14 +261,14 @@ describe("IndexingService", () => { await indexingDb.saveTokenList( "https://gateway.ipfs.io/ipns/tokens.uniswap.org", - tokenList + tokenList, ) await indexingDb.addAssetToTrack(smartContractAsset) const spy = getPrivateMethodSpy( indexingService, - "handlePriceAlarm" + "handlePriceAlarm", ) await Promise.all([ @@ -282,7 +286,7 @@ describe("IndexingService", () => { fetchJsonStub .getCalls() .toString() - .match(/ethereum,matic-network,rootstock,avalanche-2,binancecoin/i) + .match(/ethereum,matic-network,rootstock,avalanche-2,binancecoin/i), ).toBeTruthy() }) }) @@ -295,7 +299,7 @@ describe("IndexingService", () => { await indexingDb.saveTokenList( "https://gateway.ipfs.io/ipns/tokens.uniswap.org", - tokenList + tokenList, ) await indexingService.addOrUpdateCustomAsset(smartContractAsset) @@ -304,7 +308,7 @@ describe("IndexingService", () => { // Skip loading prices at service init getPrivateMethodSpy( indexingService, - "handlePriceAlarm" + "handlePriceAlarm", ).mockResolvedValue(Promise.resolve()) await Promise.all([ @@ -331,7 +335,7 @@ describe("IndexingService", () => { IndexingService["retrieveTokenBalances"] >(indexingService, "retrieveTokenBalances").mockImplementation( // eslint-disable-next-line @typescript-eslint/no-explicit-any - () => Promise.resolve({}) as any + () => Promise.resolve({}) as any, ) // eslint-disable-next-line @typescript-eslint/dot-notation @@ -348,7 +352,7 @@ describe("IndexingService", () => { await indexingDb.saveTokenList( "https://gateway.ipfs.io/ipns/tokens.uniswap.org", - tokenList + tokenList, ) await indexingService.addOrUpdateCustomAsset(smartContractAsset) @@ -357,7 +361,7 @@ describe("IndexingService", () => { // Skip loading prices at service init getPrivateMethodSpy( indexingService, - "handlePriceAlarm" + "handlePriceAlarm", ).mockResolvedValue(Promise.resolve()) await Promise.all([ @@ -384,7 +388,7 @@ describe("IndexingService", () => { IndexingService["retrieveTokenBalances"] >(indexingService, "retrieveTokenBalances").mockImplementation( // eslint-disable-next-line @typescript-eslint/no-explicit-any - () => Promise.resolve({}) as any + () => Promise.resolve({}) as any, ) await indexingService.cacheAssetsForNetwork(ETHEREUM) @@ -398,7 +402,7 @@ describe("IndexingService", () => { expect.arrayContaining([ expect.objectContaining({ symbol: "TEST" }), expect.objectContaining({ symbol: smartContractAsset.symbol }), - ]) + ]), ) }) }) diff --git a/background/services/indexing/token-list-edit.ts b/background/services/indexing/token-list-edit.ts index ee9e2a6536..2c84af075c 100644 --- a/background/services/indexing/token-list-edit.ts +++ b/background/services/indexing/token-list-edit.ts @@ -12,7 +12,7 @@ export function fixPolygonWETHIssue(tokensParam: TokenInfo[]): TokenInfo[] { const wethToWethPOSAddress = "0xae740d42e4ff0c5086b2b5b5d149eb2f9e1a754f" let tokenToRenameIndex = tokens.findIndex( - (token) => token.address === wethToWethPOSAddress + (token) => token.address === wethToWethPOSAddress, ) if (tokenToRenameIndex !== -1) { @@ -26,7 +26,7 @@ export function fixPolygonWETHIssue(tokensParam: TokenInfo[]): TokenInfo[] { const ethPOSToWethAddress = "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619" tokenToRenameIndex = tokens.findIndex( - (token) => token.address === ethPOSToWethAddress + (token) => token.address === ethPOSToWethAddress, ) if (tokenToRenameIndex !== -1) { diff --git a/background/services/internal-ethereum-provider/db.ts b/background/services/internal-ethereum-provider/db.ts index eedbbb6116..d2c205adbf 100644 --- a/background/services/internal-ethereum-provider/db.ts +++ b/background/services/internal-ethereum-provider/db.ts @@ -27,8 +27,8 @@ export class InternalEthereumProviderDatabase extends Dexie { .table("activeNetwork") .toArray() .then((networksForOrigins) => - tx.table("currentNetwork").bulkAdd(networksForOrigins) - ) + tx.table("currentNetwork").bulkAdd(networksForOrigins), + ), ) this.version(3).stores({ @@ -42,19 +42,19 @@ export class InternalEthereumProviderDatabase extends Dexie { this.on("populate", (tx) => tx.db .table("currentNetwork") - .add({ origin: TAHO_INTERNAL_ORIGIN, network: ETHEREUM }) + .add({ origin: TAHO_INTERNAL_ORIGIN, network: ETHEREUM }), ) } async setCurrentChainIdForOrigin( origin: string, - network: EVMNetwork + network: EVMNetwork, ): Promise { return this.currentNetwork.put({ origin, network }) } async getCurrentNetworkForOrigin( - origin: string + origin: string, ): Promise { const currentNetwork = await this.currentNetwork.get({ origin }) return currentNetwork?.network diff --git a/background/services/internal-ethereum-provider/index.ts b/background/services/internal-ethereum-provider/index.ts index 3f6bfc5091..ae12acdeba 100644 --- a/background/services/internal-ethereum-provider/index.ts +++ b/background/services/internal-ethereum-provider/index.ts @@ -133,7 +133,7 @@ export default class InternalEthereumProviderService extends BaseService private constructor( private db: InternalEthereumProviderDatabase, private chainService: ChainService, - private preferenceService: PreferenceService + private preferenceService: PreferenceService, ) { super() @@ -145,7 +145,7 @@ export default class InternalEthereumProviderService extends BaseService result: await this.routeSafeRPCRequest( event.request.method, event.request.params, - TAHO_INTERNAL_ORIGIN + TAHO_INTERNAL_ORIGIN, ), } logger.debug("internal response:", response) @@ -157,7 +157,7 @@ export default class InternalEthereumProviderService extends BaseService internalProviderPort.postResponse({ id: event.id, result: new EIP1193Error( - EIP1193_ERROR_CODES.userRejectedRequest + EIP1193_ERROR_CODES.userRejectedRequest, ).toJSON(), }) } @@ -167,7 +167,7 @@ export default class InternalEthereumProviderService extends BaseService async routeSafeRPCRequest( method: string, params: RPCRequest["params"], - origin: string + origin: string, ): Promise { switch (method) { // supported alchemy methods: https://docs.alchemy.com/alchemy/apis/ethereum @@ -188,7 +188,7 @@ export default class InternalEthereumProviderService extends BaseService // on a user's idea of a dApp connection rather than a network-specific // modality, requiring it to be constantly "switched" return toHexChainID( - (await this.getCurrentOrDefaultNetworkForOrigin(origin)).chainID + (await this.getCurrentOrDefaultNetworkForOrigin(origin)).chainID, ) case "eth_blockNumber": case "eth_call": @@ -232,7 +232,7 @@ export default class InternalEthereumProviderService extends BaseService return this.chainService.send( method, params, - await this.getCurrentOrDefaultNetworkForOrigin(origin) + await this.getCurrentOrDefaultNetworkForOrigin(origin), ) case "eth_accounts": { // This is a special method, because Alchemy provider DO support it, but always return null (because they do not store keys.) @@ -244,7 +244,7 @@ export default class InternalEthereumProviderService extends BaseService { ...(params[0] as JsonRpcTransactionRequest), }, - origin + origin, ).then(async (signed) => { await this.chainService.broadcastSignedTransaction(signed) return signed.hash @@ -252,7 +252,7 @@ export default class InternalEthereumProviderService extends BaseService case "eth_signTransaction": return this.signTransaction( params[0] as JsonRpcTransactionRequest, - origin + origin, ).then((signedTransaction) => serializeEthersTransaction( ethersTransactionFromSignedTransaction(signedTransaction), @@ -260,8 +260,8 @@ export default class InternalEthereumProviderService extends BaseService r: signedTransaction.r, s: signedTransaction.s, v: signedTransaction.v, - } - ) + }, + ), ) case "eth_sign": // --- important wallet methods --- return this.signData( @@ -269,7 +269,7 @@ export default class InternalEthereumProviderService extends BaseService input: params[1] as string, account: params[0] as string, }, - origin + origin, ) case "personal_sign": return this.signData( @@ -277,7 +277,7 @@ export default class InternalEthereumProviderService extends BaseService input: params[0] as string, account: params[1] as string, }, - origin + origin, ) // TODO - actually allow adding a new ethereum chain - for now wallet_addEthereumChain // will just switch to a chain if we already support it - but not add a new one @@ -291,9 +291,8 @@ export default class InternalEthereumProviderService extends BaseService return null } try { - const customNetwork = await this.chainService.addCustomChain( - chainInfo - ) + const customNetwork = + await this.chainService.addCustomChain(chainInfo) this.emitter.emit("selectedNetwork", customNetwork) return null } catch (e) { @@ -303,9 +302,8 @@ export default class InternalEthereumProviderService extends BaseService } case "wallet_switchEthereumChain": { const newChainId = (params[0] as SwitchEthereumChainParameter).chainId - const supportedNetwork = await this.getTrackedNetworkByChainId( - newChainId - ) + const supportedNetwork = + await this.getTrackedNetworkByChainId(newChainId) if (supportedNetwork) { this.switchToSupportedNetwork(origin, supportedNetwork) return null @@ -324,7 +322,7 @@ export default class InternalEthereumProviderService extends BaseService if (options.chainId) { const supportedNetwork = await this.getTrackedNetworkByChainId( - String(options.chainId) + String(options.chainId), ) if (!supportedNetwork) { throw new EIP1193Error(EIP1193_ERROR_CODES.userRejectedRequest) @@ -372,12 +370,12 @@ export default class InternalEthereumProviderService extends BaseService private async getCurrentInternalNetwork(): Promise { return this.db.getCurrentNetworkForOrigin( - TAHO_INTERNAL_ORIGIN + TAHO_INTERNAL_ORIGIN, ) as Promise } async getCurrentOrDefaultNetworkForOrigin( - origin: string + origin: string, ): Promise { const currentNetwork = await this.db.getCurrentNetworkForOrigin(origin) if (!currentNetwork) { @@ -395,7 +393,7 @@ export default class InternalEthereumProviderService extends BaseService private async signTransaction( transactionRequest: JsonRpcTransactionRequest, - origin: string + origin: string, ): Promise { const annotation = origin === TAHO_INTERNAL_ORIGIN && @@ -409,9 +407,8 @@ export default class InternalEthereumProviderService extends BaseService throw new Error("Transactions must have a from address for signing.") } - const currentNetwork = await this.getCurrentOrDefaultNetworkForOrigin( - origin - ) + const currentNetwork = + await this.getCurrentOrDefaultNetworkForOrigin(origin) const isRootstock = currentNetwork.chainID === ROOTSTOCK.chainID @@ -476,11 +473,11 @@ export default class InternalEthereumProviderService extends BaseService * @returns a supported EVMNetwork or undefined. */ async getTrackedNetworkByChainId( - chainID: string + chainID: string, ): Promise { const trackedNetworks = await this.chainService.getTrackedNetworks() const trackedNetwork = trackedNetworks.find((network) => - sameChainID(network.chainID, chainID) + sameChainID(network.chainID, chainID), ) if (trackedNetwork) { @@ -506,7 +503,7 @@ export default class InternalEthereumProviderService extends BaseService const filteredTypedDataPayload = _TypedDataEncoder.getPayload( params.typedData.domain, typesForSigning, - params.typedData.message + params.typedData.message, ) const filteredRequest = { @@ -532,7 +529,7 @@ export default class InternalEthereumProviderService extends BaseService async switchToSupportedNetwork( origin: string, - supportedNetwork: EVMNetwork + supportedNetwork: EVMNetwork, ): Promise { const { address } = await this.preferenceService.getSelectedAccount() await this.chainService.markAccountActivity({ @@ -550,15 +547,14 @@ export default class InternalEthereumProviderService extends BaseService input: string account: string }, - origin: string + origin: string, ) { const hexInput = input.match(/^0x[0-9A-Fa-f]*$/) ? input : hexlify(toUtf8Bytes(input)) const typeAndData = parseSigningData(input) - const currentNetwork = await this.getCurrentOrDefaultNetworkForOrigin( - origin - ) + const currentNetwork = + await this.getCurrentOrDefaultNetworkForOrigin(origin) return new Promise((resolve, reject) => { this.emitter.emit("signDataRequest", { diff --git a/background/services/internal-ethereum-provider/tests/index.integration.test.ts b/background/services/internal-ethereum-provider/tests/index.integration.test.ts index accaf822e4..3c8ea3a53a 100644 --- a/background/services/internal-ethereum-provider/tests/index.integration.test.ts +++ b/background/services/internal-ethereum-provider/tests/index.integration.test.ts @@ -59,8 +59,8 @@ describe("Internal Ethereum Provider Service", () => { expect( startedChainService.supportedNetworks.find( - (network: EVMNetwork) => network.name === "Fantom Opera" - ) + (network: EVMNetwork) => network.name === "Fantom Opera", + ), ).toBeTruthy() }) @@ -128,8 +128,8 @@ describe("Internal Ethereum Provider Service", () => { "signTypedDataRequest", expect.objectContaining({ payload: EIP712ObjectFiltered, - }) + }), ) - } + }, ) }) diff --git a/background/services/internal-signer/encryption.ts b/background/services/internal-signer/encryption.ts index 64831852ba..0dce01e4dc 100644 --- a/background/services/internal-signer/encryption.ts +++ b/background/services/internal-signer/encryption.ts @@ -49,7 +49,7 @@ function requireCryptoGlobal(message?: string) { throw new Error( `${ message || "Taho" - } requires WebCrypto API support — is this being run in a modern browser?` + } requires WebCrypto API support — is this being run in a modern browser?`, ) } } @@ -72,7 +72,7 @@ function requireCryptoGlobal(message?: string) { */ export async function deprecatedDerivePbkdf2KeyFromPassword( password: string, - existingSalt?: string + existingSalt?: string, ): Promise { const { crypto } = global @@ -85,7 +85,7 @@ export async function deprecatedDerivePbkdf2KeyFromPassword( encoder.encode(password), { name: "PBKDF2" }, false, - ["deriveKey"] + ["deriveKey"], ) const key = await crypto.subtle.deriveKey( @@ -98,7 +98,7 @@ export async function deprecatedDerivePbkdf2KeyFromPassword( derivationKey, { name: "AES-GCM", length: 256 }, false, - ["encrypt", "decrypt"] + ["encrypt", "decrypt"], ) return { @@ -109,7 +109,7 @@ export async function deprecatedDerivePbkdf2KeyFromPassword( export async function deriveArgon2KeyFromPassword( password: string, - existingSalt?: string + existingSalt?: string, ): Promise { const { crypto } = global @@ -126,7 +126,7 @@ export async function deriveArgon2KeyFromPassword( hash, { name: "AES-GCM", length: 256 }, false, - ["encrypt", "decrypt"] + ["encrypt", "decrypt"], ) return { @@ -138,7 +138,7 @@ export async function deriveArgon2KeyFromPassword( export async function deriveSymmetricKeyFromPassword( version: VaultVersion, password: string, - existingSalt?: string + existingSalt?: string, ): Promise { switch (version) { case VaultVersion.PBKDF2: @@ -184,7 +184,7 @@ export async function encryptVault(vaultData: { // resistance { name: "AES-GCM", iv: initializationVector }, key, - encodedPlaintext + encodedPlaintext, ) return { @@ -225,14 +225,14 @@ export async function decryptVault(vaultData: { ? await deriveSymmetricKeyFromPassword( vaultData.version, passwordOrSaltedKey, - salt + salt, ) : passwordOrSaltedKey const plaintext = await crypto.subtle.decrypt( { name: "AES-GCM", iv: base64ToBuffer(initializationVector) }, key, - base64ToBuffer(cipherText) + base64ToBuffer(cipherText), ) return JSON.parse(new TextDecoder().decode(plaintext)) diff --git a/background/services/internal-signer/index.ts b/background/services/internal-signer/index.ts index e4cc2e33da..1b3ec654ad 100644 --- a/background/services/internal-signer/index.ts +++ b/background/services/internal-signer/index.ts @@ -131,12 +131,12 @@ interface Events extends ServiceLifecycleEvents { } const isPrivateKey = ( - signer: InternalSignerWithType + signer: InternalSignerWithType, ): signer is InternalSignerPrivateKey => signer.type === SignerSourceTypes.privateKey const isKeyring = ( - signer: InternalSignerWithType + signer: InternalSignerWithType, ): signer is InternalSignerHDKeyring => signer.type === SignerSourceTypes.keyring @@ -189,7 +189,7 @@ export default class InternalSignerService extends BaseService { private constructor( private preferenceService: PreferenceService, - private analyticsService: AnalyticsService + private analyticsService: AnalyticsService, ) { super({ autolock: { @@ -268,7 +268,7 @@ export default class InternalSignerService extends BaseService { */ async unlock( password: string, - ignoreExistingVaults = false + ignoreExistingVaults = false, ): Promise { if (!this.locked()) { logger.warn("InternalSignerService is already unlocked!") @@ -289,7 +289,7 @@ export default class InternalSignerService extends BaseService { } else if (migrationResults.errorMessage !== undefined) { this.analyticsService.sendAnalyticsEvent( AnalyticsEvent.VAULT_MIGRATION_FAILED, - { error: migrationResults.errorMessage } + { error: migrationResults.errorMessage }, ) } @@ -300,7 +300,7 @@ export default class InternalSignerService extends BaseService { const saltedKey = await deriveSymmetricKeyFromPassword( version, password, - currentEncryptedVault.salt + currentEncryptedVault.salt, ) let plainTextVault: SerializedKeyringData try { @@ -323,7 +323,7 @@ export default class InternalSignerService extends BaseService { }) plainTextVault.privateKeys?.forEach((pk) => - this.#privateKeys.push(new Wallet(pk.privateKey)) + this.#privateKeys.push(new Wallet(pk.privateKey)), ) this.#signerMetadata = { @@ -424,13 +424,13 @@ export default class InternalSignerService extends BaseService { */ async generateNewKeyring( type: SignerInternalTypes, - path?: string + path?: string, ): Promise<{ id: string; mnemonic: string[] }> { this.requireUnlocked() if (type !== SignerInternalTypes.mnemonicBIP39S256) { throw new Error( - "InternalSignerService only supports generating 256-bit HD key trees" + "InternalSignerService only supports generating 256-bit HD key trees", ) } @@ -454,7 +454,7 @@ export default class InternalSignerService extends BaseService { * @returns null | string - if new account was added or existing account was found then returns an address */ async importSigner( - signerMetadata: SignerImportMetadata + signerMetadata: SignerImportMetadata, ): Promise { this.requireUnlocked() try { @@ -492,7 +492,7 @@ export default class InternalSignerService extends BaseService { #importKeyring( mnemonic: string, source: SignerImportSource, - path?: string + path?: string, ): string { const newKeyring = path ? new HDKeyring({ mnemonic, path }) @@ -633,7 +633,7 @@ export default class InternalSignerService extends BaseService { // If There are any hidden addresses, show those first before adding new ones. const newAddress = keyringAddresses.find( - (address) => this.#hiddenAccounts[address] === true + (address) => this.#hiddenAccounts[address] === true, ) ?? keyring.addAddressesSync(1)[0] this.#hiddenAccounts[newAddress] = false @@ -672,7 +672,7 @@ export default class InternalSignerService extends BaseService { if ( keyringAddresses.every( - (keyringAddress) => this.#hiddenAccounts[keyringAddress] === true + (keyringAddress) => this.#hiddenAccounts[keyringAddress] === true, ) ) { keyringAddresses.forEach((keyringAddress) => { @@ -692,12 +692,12 @@ export default class InternalSignerService extends BaseService { #removeKeyring(keyringId: string): HDKeyring[] { const filteredKeyrings = this.#keyrings.filter( - (keyring) => keyring.id !== keyringId + (keyring) => keyring.id !== keyringId, ) if (filteredKeyrings.length === this.#keyrings.length) { throw new Error( - `Attempting to remove keyring that does not exist. id: (${keyringId})` + `Attempting to remove keyring that does not exist. id: (${keyringId})`, ) } this.#keyrings = filteredKeyrings @@ -708,12 +708,12 @@ export default class InternalSignerService extends BaseService { #removePrivateKey(address: HexString): Wallet[] { const filteredPrivateKeys = this.#privateKeys.filter( - (wallet) => !sameEVMAddress(wallet.address, address) + (wallet) => !sameEVMAddress(wallet.address, address), ) if (filteredPrivateKeys.length === this.#privateKeys.length) { throw new Error( - `Attempting to remove wallet that does not exist. Address: (${address})` + `Attempting to remove wallet that does not exist. Address: (${address})`, ) } @@ -746,7 +746,7 @@ export default class InternalSignerService extends BaseService { return signerWithType.signer.exportPrivateKey( address, - "I solemnly swear that I am treating this private key material with great care." + "I solemnly swear that I am treating this private key material with great care.", ) } @@ -778,7 +778,7 @@ export default class InternalSignerService extends BaseService { */ #findKeyring(account: HexString): HDKeyring | null { const keyring = this.#keyrings.find((kr) => - kr.getAddressesSync().includes(normalizeEVMAddress(account)) + kr.getAddressesSync().includes(normalizeEVMAddress(account)), ) return keyring ?? null @@ -792,7 +792,7 @@ export default class InternalSignerService extends BaseService { */ #findPrivateKey(account: HexString): Wallet | null { const privateKey = this.#privateKeys.find((item) => - sameEVMAddress(item.address, account) + sameEVMAddress(item.address, account), ) return privateKey ?? null @@ -831,7 +831,7 @@ export default class InternalSignerService extends BaseService { */ async signTransaction( addressOnNetwork: AddressOnNetwork, - txRequest: TransactionRequestWithNonce + txRequest: TransactionRequestWithNonce, ): Promise { this.requireUnlocked() @@ -842,7 +842,7 @@ export default class InternalSignerService extends BaseService { if (!signerWithType) { throw new Error( - `Signing transaction failed. Signer for address ${account} was not found.` + `Signing transaction failed. Signer for address ${account} was not found.`, ) } @@ -857,7 +857,7 @@ export default class InternalSignerService extends BaseService { } else { signedRawTx = await signerWithType.signer.signTransaction( account, - ethersTxRequest + ethersTxRequest, ) } @@ -958,7 +958,7 @@ export default class InternalSignerService extends BaseService { if (!signerWithType) { throw new Error( - `Signing data failed. Signer for address ${account} was not found.` + `Signing data failed. Signer for address ${account} was not found.`, ) } @@ -971,14 +971,14 @@ export default class InternalSignerService extends BaseService { signature = await signerWithType.signer._signTypedData( domain, typesForSigning, - message + message, ) } else { signature = await signerWithType.signer.signTypedData( account, domain, typesForSigning, - message + message, ) } @@ -1007,7 +1007,7 @@ export default class InternalSignerService extends BaseService { if (!signerWithType) { throw new Error( - `Personal sign failed. Signer for address ${account} was not found.` + `Personal sign failed. Signer for address ${account} was not found.`, ) } @@ -1019,7 +1019,7 @@ export default class InternalSignerService extends BaseService { } else { signature = await signerWithType.signer.signMessageBytes( account, - messageBytes + messageBytes, ) } @@ -1057,7 +1057,7 @@ export default class InternalSignerService extends BaseService { // prove it to TypeScript. if (this.#cachedKey !== null) { const serializedKeyrings: SerializedHDKeyring[] = this.#keyrings.map( - (kr) => kr.serializeSync() + (kr) => kr.serializeSync(), ) const serializedPrivateKeys: SerializedPrivateKey[] = this.#privateKeys.map((wallet) => ({ diff --git a/background/services/internal-signer/storage.ts b/background/services/internal-signer/storage.ts index 7866485511..1d447c7f95 100644 --- a/background/services/internal-signer/storage.ts +++ b/background/services/internal-signer/storage.ts @@ -67,7 +67,7 @@ function equalVaults(vault1: EncryptedVault, vault2: EncryptedVault): boolean { * @param encryptedVault - an encrypted keyring vault */ export async function writeLatestEncryptedVault( - encryptedVault: EncryptedVault + encryptedVault: EncryptedVault, ): Promise { const serializedVaults = await getEncryptedVaults() const vaults = [...serializedVaults.vaults] @@ -76,7 +76,7 @@ export async function writeLatestEncryptedVault( newestVault && newestVault.timeSaved > nextVault.timeSaved ? newestVault : nextVault, - null + null, ) const oldVault = currentLatest && currentLatest.vault // if there's been a change, persist the vault @@ -118,11 +118,11 @@ export async function migrateVaultsToLatestVersion(password: string): Promise< vaults.map(async ({ vault, timeSaved }) => { const deprecatedSaltedKey = await deprecatedDerivePbkdf2KeyFromPassword( password, - vault.salt + vault.salt, ) const newSaltedKey = await deriveArgon2KeyFromPassword( password, - vault.salt + vault.salt, ) const deprecatedDecryptedVault = await decryptVault({ @@ -148,7 +148,7 @@ export async function migrateVaultsToLatestVersion(password: string): Promise< JSON.stringify(deprecatedDecryptedVault) ) { throw new Error( - "Failed to migrate vaults to Argon2. Decrypted vaults do not match." + "Failed to migrate vaults to Argon2. Decrypted vaults do not match.", ) } @@ -156,7 +156,7 @@ export async function migrateVaultsToLatestVersion(password: string): Promise< timeSaved, vault: newEncryptedVault, } - }) + }), ) const newSerializedVaults = { diff --git a/background/services/internal-signer/tests/encryption.unit.test.ts b/background/services/internal-signer/tests/encryption.unit.test.ts index 118e326a23..4f78c16ab4 100644 --- a/background/services/internal-signer/tests/encryption.unit.test.ts +++ b/background/services/internal-signer/tests/encryption.unit.test.ts @@ -12,16 +12,16 @@ describe.each([VaultVersion.PBKDF2, VaultVersion.Argon2])( /* eslint-disable no-await-in-loop */ for (let i = 0; i < 5; i += 1) { const password = Buffer.from( - global.crypto.getRandomValues(new Uint8Array(16)) + global.crypto.getRandomValues(new Uint8Array(16)), ).toString("base64") const newSalt = Buffer.from( - global.crypto.getRandomValues(new Uint8Array(16)) + global.crypto.getRandomValues(new Uint8Array(16)), ).toString("base64") const { key, salt } = await deriveSymmetricKeyFromPassword( vaultVersion, password, - newSalt + newSalt, ) expect(salt).toEqual(newSalt) @@ -111,12 +111,12 @@ describe.each([VaultVersion.PBKDF2, VaultVersion.Argon2])( d: 123, } const password = Buffer.from( - global.crypto.getRandomValues(new Uint8Array(16)) + global.crypto.getRandomValues(new Uint8Array(16)), ).toString("base64") const saltedKey = await deriveSymmetricKeyFromPassword( vaultVersion, - password + password, ) const encryptedVault = await encryptVault({ @@ -133,5 +133,5 @@ describe.each([VaultVersion.PBKDF2, VaultVersion.Argon2])( expect(newVault).toEqual(vault) }) - } + }, ) diff --git a/background/services/internal-signer/tests/index.integration.test.ts b/background/services/internal-signer/tests/index.integration.test.ts index 6238de1af9..9e6a8c3381 100644 --- a/background/services/internal-signer/tests/index.integration.test.ts +++ b/background/services/internal-signer/tests/index.integration.test.ts @@ -47,7 +47,7 @@ const startInternalSignerService = async () => { const analyticsService = createAnalyticsService() const service = await InternalSignerService.create( preferencesService, - analyticsService + analyticsService, ) await service.startService() @@ -59,10 +59,10 @@ function expectBase64String( { minLength: min, maxLength: max, - }: { minLength: number; maxLength?: number } = { minLength: 1 } + }: { minLength: number; maxLength?: number } = { minLength: 1 }, ) { return expect.stringMatching( - new RegExp(`^[0-9a-zA-Z=+/]{${min},${max ?? ""}}`) + new RegExp(`^[0-9a-zA-Z=+/]{${min},${max ?? ""}}`), ) } @@ -88,22 +88,22 @@ describe("InternalSignerService when uninitialized", () => { type: SignerSourceTypes.keyring, mnemonic: validMnemonics.metamask[0], source: SignerImportSource.import, - }) + }), ).rejects.toThrow("InternalSignerService must be unlocked.") await Promise.all( Object.keys(SignerInternalTypes).map(async (signerType) => expect( - service.generateNewKeyring(signerType as SignerInternalTypes) - ).rejects.toThrow("InternalSignerService must be unlocked.") - ) + service.generateNewKeyring(signerType as SignerInternalTypes), + ).rejects.toThrow("InternalSignerService must be unlocked."), + ), ) await expect( service.importSigner({ type: SignerSourceTypes.privateKey, privateKey: validPrivateKey[0], - }) + }), ).rejects.toThrow("InternalSignerService must be unlocked.") }) @@ -111,8 +111,8 @@ describe("InternalSignerService when uninitialized", () => { await expect( service.signTransaction( { address: "0x0", network: ETHEREUM }, - createTransactionRequest({ from: "0x0" }) - ) + createTransactionRequest({ from: "0x0" }), + ), ).rejects.toThrow("InternalSignerService must be unlocked.") }) }) @@ -130,20 +130,20 @@ describe("InternalSignerService when uninitialized", () => { type: SignerSourceTypes.keyring, mnemonic, source: SignerImportSource.import, - }) - ).resolves + }), + ).resolves, ) it("will create multiple distinct BIP-39 S256 accounts and expose mnemonics", async () => { const keyringOne = service.generateNewKeyring( - SignerInternalTypes.mnemonicBIP39S256 + SignerInternalTypes.mnemonicBIP39S256, ) await expect(keyringOne).resolves.toMatchObject({ id: expect.stringMatching(/.+/), }) const keyringTwo = service.generateNewKeyring( - SignerInternalTypes.mnemonicBIP39S256 + SignerInternalTypes.mnemonicBIP39S256, ) await expect(keyringTwo).resolves.toMatchObject({ id: expect.stringMatching(/.+/), @@ -174,7 +174,7 @@ describe("InternalSignerService when initialized", () => { address = emittedAddress }) const { mnemonic } = await service.generateNewKeyring( - SignerInternalTypes.mnemonicBIP39S256 + SignerInternalTypes.mnemonicBIP39S256, ) await service.importSigner({ type: SignerSourceTypes.keyring, @@ -207,7 +207,7 @@ describe("InternalSignerService when initialized", () => { ? await service.deriveAddress({ type: "keyring", keyringID: id }) : "" expect(newAddress).toEqual( - expect.not.stringMatching(new RegExp(originalAddress, "i")) + expect.not.stringMatching(new RegExp(originalAddress, "i")), ) const keyrings = service.getKeyrings() @@ -235,8 +235,8 @@ describe("InternalSignerService when initialized", () => { await expect( service.signTransaction( { address, network: ETHEREUM }, - transactionWithFrom - ) + transactionWithFrom, + ), ).resolves.toBeDefined() }) @@ -282,7 +282,7 @@ describe("InternalSignerService when saving keyrings", () => { }) const { mnemonic } = await service.generateNewKeyring( - SignerInternalTypes.mnemonicBIP39S256 + SignerInternalTypes.mnemonicBIP39S256, ) await service.importSigner({ type: SignerSourceTypes.keyring, @@ -346,7 +346,7 @@ describe("InternalSignerService when saving keyrings", () => { // Wait for the emitter to emit the keyrings event. new Promise((resolve) => { resolve(storedKeyrings) - }) + }), ).resolves.toHaveLength(1) expect(storedKeyrings[0]).toMatchObject({ @@ -387,7 +387,7 @@ describe("InternalSignerService when autolocking", () => { address = emittedAddress }) const { mnemonic } = await service.generateNewKeyring( - SignerInternalTypes.mnemonicBIP39S256 + SignerInternalTypes.mnemonicBIP39S256, ) await service.importSigner({ type: SignerSourceTypes.keyring, @@ -431,7 +431,7 @@ describe("InternalSignerService when autolocking", () => { await service.signTransaction( { address, network: ETHEREUM }, - transactionWithFrom + transactionWithFrom, ) }, }, diff --git a/background/services/internal-signer/tests/index.unit.test.ts b/background/services/internal-signer/tests/index.unit.test.ts index cf11ebf0fe..3bf886da45 100644 --- a/background/services/internal-signer/tests/index.unit.test.ts +++ b/background/services/internal-signer/tests/index.unit.test.ts @@ -43,7 +43,7 @@ describe("InternalSignerService", () => { describe("generated HD wallet", () => { it("should generate new HD wallet", async () => { const keyring = await internalSignerService.generateNewKeyring( - SignerInternalTypes.mnemonicBIP39S256 + SignerInternalTypes.mnemonicBIP39S256, ) expect(keyring.id).toBeDefined() @@ -60,8 +60,8 @@ describe("InternalSignerService", () => { expect(keyrings[0].id).toBe(keyring.id) expect( internalSignerService.getSignerSourceForAddress( - keyrings[0].addresses[0] - ) + keyrings[0].addresses[0], + ), ).toBe("internal") }) }) @@ -81,8 +81,8 @@ describe("InternalSignerService", () => { it("should classify HD wallet as imported", async () => { expect( internalSignerService.getSignerSourceForAddress( - HD_WALLET_MOCK.addresses[0] - ) + HD_WALLET_MOCK.addresses[0], + ), ).toBe("import") }) it("should be able to derive next address", async () => { @@ -139,7 +139,7 @@ describe("InternalSignerService", () => { const address = HD_WALLET_MOCK.addresses[0] const signed = await internalSignerService.signTransaction( { address, network: ETHEREUM }, - createTransactionRequest({ from: address }) + createTransactionRequest({ from: address }), ) expect(signed).toMatchObject({ @@ -184,7 +184,7 @@ describe("InternalSignerService", () => { }) it("should classify pk wallet as imported", async () => { expect( - internalSignerService.getSignerSourceForAddress(PK_WALLET_MOCK.address) + internalSignerService.getSignerSourceForAddress(PK_WALLET_MOCK.address), ).toBe("import") }) it("should be able to remove pk wallet and add it again", async () => { @@ -201,7 +201,7 @@ describe("InternalSignerService", () => { const { address } = PK_WALLET_MOCK const signed = await internalSignerService.signTransaction( { address, network: ETHEREUM }, - createTransactionRequest({ from: address }) + createTransactionRequest({ from: address }), ) expect(signed).toMatchObject({ @@ -247,21 +247,21 @@ describe("InternalSignerService", () => { }) it("should be able to export private key", async () => { const privateKey = await internalSignerService.exportPrivateKey( - PK_WALLET_MOCK.address + PK_WALLET_MOCK.address, ) expect(privateKey).toBe(PK_WALLET_MOCK.privateKey) }) it("should be able to export mnemonic", async () => { const mnemonic = await internalSignerService.exportMnemonic( - HD_WALLET_MOCK.addresses[0] + HD_WALLET_MOCK.addresses[0], ) expect(mnemonic).toBe(HD_WALLET_MOCK.mnemonic) }) it("should be able to export private key from HD wallet addresses", async () => { const privateKey = await internalSignerService.exportPrivateKey( - HD_WALLET_MOCK.addresses[0] + HD_WALLET_MOCK.addresses[0], ) expect(privateKey).toBe(PK_WALLET_MOCK.privateKey) // first address from both mocks is the same diff --git a/background/services/internal-signer/tests/storage.unit.test.ts b/background/services/internal-signer/tests/storage.unit.test.ts index 4ca65dd0da..bdc10b9f77 100644 --- a/background/services/internal-signer/tests/storage.unit.test.ts +++ b/background/services/internal-signer/tests/storage.unit.test.ts @@ -105,7 +105,7 @@ describe("Storage utils", () => { expect(migrationData.migrated).toEqual(false) expect( - migrationData.migrated === false && migrationData.errorMessage + migrationData.migrated === false && migrationData.errorMessage, ).toBeUndefined() expect(version).toEqual(VaultVersion.Argon2) expect(vaults[0].vault).toEqual(vaultEncryptedWithArgon2) @@ -124,12 +124,12 @@ describe("Storage utils", () => { expect(migrationData.migrated).toEqual(false) expect( - migrationData.migrated === false && migrationData.errorMessage + migrationData.migrated === false && migrationData.errorMessage, ).not.toBeUndefined() expect( migrationData.migrated === false && migrationData.errorMessage !== undefined && - migrationData.errorMessage.length + migrationData.errorMessage.length, ).toBeGreaterThan(1) }) }) diff --git a/background/services/ledger/index.ts b/background/services/ledger/index.ts index cff43be3ea..5250441747 100644 --- a/background/services/ledger/index.ts +++ b/background/services/ledger/index.ts @@ -118,7 +118,7 @@ async function deriveAddressOnLedger(path: string, eth: Eth) { async function generateLedgerId( transport: Transport, - eth: Eth + eth: Eth, ): Promise<[string | undefined, LedgerType]> { let extensionDeviceType = LedgerType.UNKNOWN @@ -183,12 +183,12 @@ export default class LedgerService extends BaseService { private runSerialized(operation: () => Promise) { const oldOperationPromise = this.#lastOperationPromise const newOperationPromise = oldOperationPromise.then(async () => - operation() + operation(), ) this.#lastOperationPromise = newOperationPromise.then( () => {}, - () => {} + () => {}, ) return newOperationPromise @@ -228,7 +228,7 @@ export default class LedgerService extends BaseService { }) const knownAddresses = await this.db.getAllAccountsByLedgerId( - this.#currentLedgerId + this.#currentLedgerId, ) if (!knownAddresses.length) { @@ -246,7 +246,7 @@ export default class LedgerService extends BaseService { } catch (error) { logger.error( "Treating Ledger as having disconnected due to a connection error:", - error + error, ) await this.#handleUSBDisconnect() } @@ -256,7 +256,7 @@ export default class LedgerService extends BaseService { #handleUSBConnect = async (event: USBConnectionEvent): Promise => { this.emitter.emit( "usbDeviceCount", - (await navigator.usb.getDevices()).length + (await navigator.usb.getDevices()).length, ) if (!TestedProductId(event.device.productId)) { return @@ -269,7 +269,7 @@ export default class LedgerService extends BaseService { async (/* event: USBConnectionEvent */): Promise => { this.emitter.emit( "usbDeviceCount", - (await navigator.usb.getDevices()).length + (await navigator.usb.getDevices()).length, ) if (!this.#currentLedgerId) { return @@ -332,7 +332,7 @@ export default class LedgerService extends BaseService { const eth = new Eth(this.transport) const accountAddress = normalizeEVMAddress( - await deriveAddressOnLedger(derivationPath, eth) + await deriveAddressOnLedger(derivationPath, eth), ) this.emitter.emit("address", { @@ -346,7 +346,7 @@ export default class LedgerService extends BaseService { logger.error( `Error encountered deriving address at path ${derivationPath}! ledgerID: ${ this.#currentLedgerId - } error: ${err}` + } error: ${err}`, ) throw err } @@ -372,7 +372,7 @@ export default class LedgerService extends BaseService { async signTransaction( transactionRequest: TransactionRequestWithNonce, - { deviceID, path: derivationPath }: LedgerAccountSigner + { deviceID, path: derivationPath }: LedgerAccountSigner, ): Promise { return this.runSerialized(async () => { try { @@ -396,11 +396,11 @@ export default class LedgerService extends BaseService { } const serializedTx = serialize( - serializableEthersTx as UnsignedTransaction + serializableEthersTx as UnsignedTransaction, ).substring(2) // serialize adds 0x prefix which kills Eth::signTransaction const accountData = await this.db.getAccountByAddress( - transactionRequest.from + transactionRequest.from, ) this.checkCanSign(accountData, derivationPath, deviceID) @@ -409,7 +409,7 @@ export default class LedgerService extends BaseService { const signature = await eth.signTransaction( derivationPath, serializedTx, - null + null, ) const signedTransaction = serialize( @@ -418,7 +418,7 @@ export default class LedgerService extends BaseService { r: `0x${signature.r}`, s: `0x${signature.s}`, v: parseInt(signature.v, 16), - } + }, ) const tx = parseRawTransaction(signedTransaction) @@ -464,7 +464,7 @@ export default class LedgerService extends BaseService { logger.error( `Error encountered! ledgerID: ${ this.#currentLedgerId - } transactionRequest: ${transactionRequest} error: ${err}` + } transactionRequest: ${transactionRequest} error: ${err}`, ) throw err @@ -475,7 +475,7 @@ export default class LedgerService extends BaseService { async signTypedData( typedData: EIP712TypedData, account: HexString, - { deviceID, path: derivationPath }: LedgerAccountSigner + { deviceID, path: derivationPath }: LedgerAccountSigner, ): Promise { return this.runSerialized(async () => { if (!this.transport) { @@ -500,7 +500,7 @@ export default class LedgerService extends BaseService { const signature = await eth.signEIP712HashedMessage( derivationPath, hashedDomain, - hashedMessage + hashedMessage, ) this.emitter.emit( @@ -509,7 +509,7 @@ export default class LedgerService extends BaseService { r: `0x${signature.r}`, s: `0x${signature.s}`, v: signature.v, - }) + }), ) return joinSignature({ @@ -523,7 +523,7 @@ export default class LedgerService extends BaseService { private checkCanSign( accountData: LedgerAccount | null, path: string, - deviceID: string + deviceID: string, ) { if ( !accountData || @@ -540,11 +540,11 @@ export default class LedgerService extends BaseService { async signMessage( { address, network }: AddressOnNetwork, - hexDataToSign: HexString + hexDataToSign: HexString, ): Promise { if ( !NETWORK_FOR_LEDGER_SIGNING.find((supportedNetwork) => - sameNetwork(network, supportedNetwork) + sameNetwork(network, supportedNetwork), ) ) { throw new Error("Unsupported network for Ledger signing") @@ -562,7 +562,7 @@ export default class LedgerService extends BaseService { if (!accountData) { throw new Error( - `Address "${address}" doesn't have corresponding derivation path!` + `Address "${address}" doesn't have corresponding derivation path!`, ) } @@ -571,7 +571,7 @@ export default class LedgerService extends BaseService { const signature = await eth.signPersonalMessage( accountData.path, // Ledger requires unprefixed hex, so make sure that's what we pass. - hexDataToSign.replace(/^0x/, "") + hexDataToSign.replace(/^0x/, ""), ) const signatureHex = joinSignature({ diff --git a/background/services/name/index.ts b/background/services/name/index.ts index 7b7fe1a552..dc283b54cf 100644 --- a/background/services/name/index.ts +++ b/background/services/name/index.ts @@ -110,7 +110,7 @@ export default class NameService extends BaseService { private constructor( private chainService: ChainService, - preferenceService: PreferenceService + preferenceService: PreferenceService, ) { super({}) @@ -130,7 +130,7 @@ export default class NameService extends BaseService { async ({ network, address }) => { this.clearNameCacheEntry(network.chainID, address) await this.lookUpName({ network, address }) - } + }, ) chainService.emitter.on("newAccountToTrack", async (addressOnNetwork) => { @@ -151,17 +151,17 @@ export default class NameService extends BaseService { logger.error( "Error fetching avatar for address", addressOnNetwork, - error + error, ) } }) } async lookUpEthereumAddress( - nameOnNetwork: NameOnNetwork + nameOnNetwork: NameOnNetwork, ): Promise { const workingResolvers = this.resolvers.filter((resolver) => - resolver.canAttemptAddressResolution(nameOnNetwork) + resolver.canAttemptAddressResolution(nameOnNetwork), ) const firstMatchingResolution = ( @@ -169,7 +169,7 @@ export default class NameService extends BaseService { workingResolvers.map(async (resolver) => ({ type: resolver.type, resolved: await resolver.lookUpAddressForName(nameOnNetwork), - })) + })), ) ) .filter(isFulfilledPromise) @@ -201,7 +201,7 @@ export default class NameService extends BaseService { async lookUpName( addressOnNetwork: AddressOnNetwork, - checkCache = true + checkCache = true, ): Promise { const { address, network } = normalizeAddressOnNetwork(addressOnNetwork) @@ -223,18 +223,18 @@ export default class NameService extends BaseService { } const workingResolvers = this.resolvers.filter((resolver) => - resolver.canAttemptNameResolution({ address, network }) + resolver.canAttemptNameResolution({ address, network }), ) const localResolvers = [...workingResolvers].filter( (resolver) => resolver.type === "tally-address-book" || - resolver.type === "tally-known-contracts" + resolver.type === "tally-known-contracts", ) const remoteResolvers = [...workingResolvers].filter( (resolver) => resolver.type !== "tally-address-book" && - resolver.type !== "tally-known-contracts" + resolver.type !== "tally-known-contracts", ) let firstMatchingResolution = ( @@ -242,7 +242,7 @@ export default class NameService extends BaseService { localResolvers.map(async (resolver) => ({ type: resolver.type, resolved: await resolver.lookUpNameForAddress({ address, network }), - })) + })), ) ) .filter(isFulfilledPromise) @@ -254,7 +254,7 @@ export default class NameService extends BaseService { remoteResolvers.map(async (resolver) => ({ type: resolver.type, resolved: await resolver.lookUpNameForAddress({ address, network }), - })) + })), ) ) .filter(isFulfilledPromise) @@ -310,10 +310,10 @@ export default class NameService extends BaseService { } async lookUpAvatar( - addressOnNetwork: AddressOnNetwork + addressOnNetwork: AddressOnNetwork, ): Promise { const workingResolvers = this.resolvers.filter((resolver) => - resolver.canAttemptAvatarResolution(addressOnNetwork) + resolver.canAttemptAvatarResolution(addressOnNetwork), ) const firstMatchingResolution = ( @@ -321,7 +321,7 @@ export default class NameService extends BaseService { workingResolvers.map(async (resolver) => ({ type: resolver.type, resolved: await resolver.lookUpAvatar(addressOnNetwork), - })) + })), ) ) .filter(isFulfilledPromise) @@ -360,7 +360,7 @@ export default class NameService extends BaseService { } const provider = this.chainService.providerForNetwork( - addressOnNetwork.network + addressOnNetwork.network, ) // these URIs look like eip155:1/erc721:0xb7F7F6C52F2e2fdb1963Eab30438024864c313F6/2430 @@ -374,7 +374,7 @@ export default class NameService extends BaseService { const metadata = await getTokenMetadata( provider, erc721Address, - BigInt(nftID) + BigInt(nftID), ) if (metadata !== undefined && metadata.image !== undefined) { diff --git a/background/services/name/name-resolver.ts b/background/services/name/name-resolver.ts index c210d0b232..c727f54808 100644 --- a/background/services/name/name-resolver.ts +++ b/background/services/name/name-resolver.ts @@ -36,7 +36,7 @@ export interface NameResolver { * Returning false should mean {@see lookUpAvatar} will never be called. */ canAttemptAvatarResolution( - addressOrNameOnNetwork: AddressOnNetwork | NameOnNetwork + addressOrNameOnNetwork: AddressOnNetwork | NameOnNetwork, ): boolean /** * Given a name and network, synchronously returns a boolean indicating @@ -57,7 +57,7 @@ export interface NameResolver { * communicating with a server). */ lookUpAddressForName( - nameOnNetwork: NameOnNetwork + nameOnNetwork: NameOnNetwork, ): Promise /** * Given an address and network, attempt to resolve an avatar URI for that @@ -70,7 +70,7 @@ export interface NameResolver { * communicating with a server). */ lookUpAvatar( - addressOrNameOnNetwork: AddressOnNetwork | NameOnNetwork + addressOrNameOnNetwork: AddressOnNetwork | NameOnNetwork, ): Promise< | { uri: URL | string @@ -88,6 +88,6 @@ export interface NameResolver { * communicating with a server). */ lookUpNameForAddress( - addressOnNetwork: AddressOnNetwork + addressOnNetwork: AddressOnNetwork, ): Promise } diff --git a/background/services/name/resolvers/address-book.ts b/background/services/name/resolvers/address-book.ts index b0c1f9eb9a..6e6a1b7e93 100644 --- a/background/services/name/resolvers/address-book.ts +++ b/background/services/name/resolvers/address-book.ts @@ -3,7 +3,7 @@ import PreferenceService from "../../preferences" import { NameResolver } from "../name-resolver" export default function addressBookResolverFor( - preferenceService: PreferenceService + preferenceService: PreferenceService, ): NameResolver<"tally-address-book"> { return { type: "tally-address-book", diff --git a/background/services/name/resolvers/ens.ts b/background/services/name/resolvers/ens.ts index d54a570f44..68de4668a3 100644 --- a/background/services/name/resolvers/ens.ts +++ b/background/services/name/resolvers/ens.ts @@ -23,7 +23,7 @@ const ENS_SUPPORTED_NETWORKS = [ ] export default function ensResolverFor( - chainService: ChainService + chainService: ChainService, ): NameResolver<"ENS"> { return { type: "ENS", @@ -40,7 +40,7 @@ export default function ensResolverFor( return ( name.endsWith(".eth") && ENS_SUPPORTED_NETWORKS.some((supportedNetwork) => - sameNetwork(network, supportedNetwork) + sameNetwork(network, supportedNetwork), ) ) }, @@ -64,7 +64,7 @@ export default function ensResolverFor( } }, async lookUpAvatar( - addressOrNameOnNetwork: AddressOnNetwork | NameOnNetwork + addressOrNameOnNetwork: AddressOnNetwork | NameOnNetwork, ) { const { network } = addressOrNameOnNetwork diff --git a/background/services/name/resolvers/index.ts b/background/services/name/resolvers/index.ts index 492b6e24b3..7f623c1e46 100644 --- a/background/services/name/resolvers/index.ts +++ b/background/services/name/resolvers/index.ts @@ -12,7 +12,9 @@ const resolvers = { rnsResolver, } -type ResolverConstructors = ReturnType +type ResolverConstructors = ReturnType< + (typeof resolvers)[keyof typeof resolvers] +> export type NameResolverSystem = ResolverConstructors["type"] diff --git a/background/services/name/resolvers/known-contracts.ts b/background/services/name/resolvers/known-contracts.ts index 171b7dc6f4..5e8b841c4f 100644 --- a/background/services/name/resolvers/known-contracts.ts +++ b/background/services/name/resolvers/known-contracts.ts @@ -2,7 +2,7 @@ import PreferenceService from "../../preferences" import { NameResolver } from "../name-resolver" export default function knownContractResolverFor( - preferenceService: PreferenceService + preferenceService: PreferenceService, ): NameResolver<"tally-known-contracts"> { return { type: "tally-known-contracts", @@ -20,7 +20,7 @@ export default function knownContractResolverFor( preferenceService.lookUpAddressForContractName.bind(preferenceService), async lookUpAvatar() { throw new Error( - "Avatar resolution not supported in known contracts resolver." + "Avatar resolution not supported in known contracts resolver.", ) }, lookUpNameForAddress: diff --git a/background/services/name/resolvers/rns.ts b/background/services/name/resolvers/rns.ts index 85979c5dd4..a159dc0edb 100644 --- a/background/services/name/resolvers/rns.ts +++ b/background/services/name/resolvers/rns.ts @@ -30,7 +30,7 @@ export default function rnsResolver(): NameResolver<"RNS"> { const rnsRegistryContract = new Contract( RNS_REGISTRY_ADDRESS, RNS_REGISTRY_ABI, - rskNetworkProvider + rskNetworkProvider, ) return { @@ -60,7 +60,7 @@ export default function rnsResolver(): NameResolver<"RNS"> { const addrResolverContract = new Contract( resolverAddress, RNS_ADDR_RESOLVER_ABI, - rskNetworkProvider + rskNetworkProvider, ) const address = await addrResolverContract.addr(nameHash) @@ -85,12 +85,11 @@ export default function rnsResolver(): NameResolver<"RNS"> { network, }: AddressOnNetwork): Promise { const reverseRecordHash = utils.namehash( - `${stripHexPrefix(address)}.addr.reverse` + `${stripHexPrefix(address)}.addr.reverse`, ) - const resolverAddress = await rnsRegistryContract.resolver( - reverseRecordHash - ) + const resolverAddress = + await rnsRegistryContract.resolver(reverseRecordHash) if (resolverAddress === constants.AddressZero) { return undefined @@ -99,7 +98,7 @@ export default function rnsResolver(): NameResolver<"RNS"> { const nameResolverContract = new Contract( resolverAddress, RNS_NAME_RESOLVER_ABI, - rskNetworkProvider + rskNetworkProvider, ) const name = await nameResolverContract.name(reverseRecordHash) diff --git a/background/services/name/resolvers/uns.ts b/background/services/name/resolvers/uns.ts index a51465bf4d..642fca5729 100644 --- a/background/services/name/resolvers/uns.ts +++ b/background/services/name/resolvers/uns.ts @@ -15,7 +15,7 @@ const RESPONSE_TTL = 2 * MINUTE const cacheAsyncResults = Promise>( ttl: number, fn: F, - getCacheKey: (args: Parameters) => string + getCacheKey: (args: Parameters) => string, ) => { const cache: Record< string, @@ -98,7 +98,7 @@ const reverseLookupAddress = cacheAsyncResults( return response }, - ([address]) => address + ([address]) => address, ) /** @@ -143,7 +143,7 @@ export default function unsResolver(): NameResolver<"UNS"> { return ( isValidUNSDomainName(name) && UNS_SUPPORTED_NETWORKS.some((supportedNetwork) => - sameNetwork(network, supportedNetwork) + sameNetwork(network, supportedNetwork), ) ) }, @@ -165,7 +165,7 @@ export default function unsResolver(): NameResolver<"UNS"> { } }, async lookUpAvatar( - addressOrNameOnNetwork: AddressOnNetwork | NameOnNetwork + addressOrNameOnNetwork: AddressOnNetwork | NameOnNetwork, ) { const { network } = addressOrNameOnNetwork const { address } = @@ -187,7 +187,7 @@ export default function unsResolver(): NameResolver<"UNS"> { .map( (record: { attributes: { records: { [x: string]: string | undefined } } - }) => record.attributes.records["social.picture.value"] + }) => record.attributes.records["social.picture.value"], ) .find(isDefined) @@ -212,7 +212,7 @@ export default function unsResolver(): NameResolver<"UNS"> { const name = data .map( (record: { attributes: { meta: { domain: string | undefined } } }) => - record.attributes.meta.domain + record.attributes.meta.domain, ) .find(isDefined) diff --git a/background/services/name/tests/index.integration.test.ts b/background/services/name/tests/index.integration.test.ts index 501764a1ed..873f975840 100644 --- a/background/services/name/tests/index.integration.test.ts +++ b/background/services/name/tests/index.integration.test.ts @@ -26,7 +26,7 @@ describe("NameService", () => { expect(nameRecord).toBeDefined() if (nameRecord !== undefined) { expect(nameRecord.resolved.nameOnNetwork.name).toContain( - "Optimism Teleportr" + "Optimism Teleportr", ) expect(nameRecord.system).toEqual("tally-known-contracts") } diff --git a/background/services/nfts/db.ts b/background/services/nfts/db.ts index 5dca13b54b..add77b8b4c 100644 --- a/background/services/nfts/db.ts +++ b/background/services/nfts/db.ts @@ -39,7 +39,7 @@ export class NFTsDatabase extends Dexie { .upgrade((tx) => tx.db.table("preferences").add(DEFAULT_PREFERENCES)) this.on("populate", (tx) => - tx.db.table("preferences").add(DEFAULT_PREFERENCES) + tx.db.table("preferences").add(DEFAULT_PREFERENCES), ) } @@ -54,7 +54,7 @@ export class NFTsDatabase extends Dexie { async updateCollectionData( collectionID: string, { address, network }: AddressOnNetwork, - data: Partial + data: Partial, ): Promise { const collection = await this.collections.get({ id: collectionID, @@ -81,14 +81,14 @@ export class NFTsDatabase extends Dexie { async getCollectionNFTsForAccount( collectionID: string, - { address, network }: AddressOnNetwork + { address, network }: AddressOnNetwork, ): Promise { return this.nfts .filter( (nft) => nft.collectionID === collectionID && sameEVMAddress(nft.owner, address) && - network.chainID === nft.network.chainID + network.chainID === nft.network.chainID, ) .toArray() @@ -103,7 +103,7 @@ export class NFTsDatabase extends Dexie { async removeNFTsByIDs(removedNFTsIDs: string[]): Promise { const nftsToRemove = this.nfts.filter((nft) => - removedNFTsIDs.some((removedID) => removedID === nft.id) + removedNFTsIDs.some((removedID) => removedID === nft.id), ) // As we don't know if it was the last NFT in a given collection @@ -114,7 +114,7 @@ export class NFTsDatabase extends Dexie { acc.add(nft.collectionID) return acc }, - new Set() + new Set(), ) await this.collections @@ -125,13 +125,13 @@ export class NFTsDatabase extends Dexie { } async setTransfersLookupTimestamp( - transfersLookupTimestamp: number + transfersLookupTimestamp: number, ): Promise { await this.preferences.toCollection().modify({ transfersLookupTimestamp }) } async setFreshCollections( - freshCollections: FreshCollectionsMap + freshCollections: FreshCollectionsMap, ): Promise { await this.preferences.toCollection().modify({ freshCollections }) } diff --git a/background/services/nfts/index.ts b/background/services/nfts/index.ts index 95281e2d28..a6e8a4def5 100644 --- a/background/services/nfts/index.ts +++ b/background/services/nfts/index.ts @@ -42,7 +42,7 @@ export default class NFTsService extends BaseService { private constructor( private db: NFTsDatabase, - private chainService: ChainService + private chainService: ChainService, ) { super() this.#transfersLookupTimestamp = getUNIXTimestamp() // will be discarded when chainService starts @@ -92,7 +92,7 @@ export default class NFTsService extends BaseService { this.emitter.emit("isReloadingNFTs", true) await this.initializeCollections([addressOnNetwork]) this.emitter.emit("isReloadingNFTs", false) - } + }, ) } @@ -128,16 +128,16 @@ export default class NFTsService extends BaseService { this.emitter.emit( "updateCollections", - await this.db.getAllCollections() + await this.db.getAllCollections(), ) - }) - ) + }), + ), ) } async refreshNFTsFromCollection( collectionID: string, - account: AddressOnNetwork + account: AddressOnNetwork, ): Promise { this.setFreshCollection(collectionID, account.address, false) await this.db.setFreshCollections(this.#freshCollections) @@ -146,7 +146,7 @@ export default class NFTsService extends BaseService { async fetchNFTsFromCollection( collectionID: string, - account: AddressOnNetwork + account: AddressOnNetwork, ): Promise { if ( this.#freshCollections[collectionID]?.[ @@ -159,7 +159,7 @@ export default class NFTsService extends BaseService { getNFTs([account], [collectionID]).map(async (request) => { const { nfts, nextPageURLs } = await request await this.updateSavedNFTs(collectionID, account, nfts, nextPageURLs) - }) + }), ) } } @@ -167,14 +167,14 @@ export default class NFTsService extends BaseService { async fetchPOAPs(accounts: AddressOnNetwork[]): Promise { await Promise.allSettled( accounts.map((account) => - this.fetchNFTsFromCollection(POAP_COLLECTION_ID, account) - ) + this.fetchNFTsFromCollection(POAP_COLLECTION_ID, account), + ), ) } async fetchNFTsFromDatabase( collectionID: string, - account: AddressOnNetwork + account: AddressOnNetwork, ): Promise { await this.emitter.emit("updateNFTs", { collectionID, @@ -186,7 +186,7 @@ export default class NFTsService extends BaseService { async fetchNFTsFromNextPage( collectionID: string, - account: AddressOnNetwork + account: AddressOnNetwork, ): Promise { const nextPage = this.#nextPageUrls[collectionID]?.[account.address] @@ -195,7 +195,7 @@ export default class NFTsService extends BaseService { account.address, collectionID, [account.network.chainID], - nextPage + nextPage, ).then(async ({ nfts, nextPageURL }) => { delete this.#nextPageUrls[collectionID][account.address] @@ -211,13 +211,13 @@ export default class NFTsService extends BaseService { collectionID: string, account: AddressOnNetwork, nfts: NFT[], - nextPageURLs: NextPageURLsMap + nextPageURLs: NextPageURLsMap, ): Promise { await this.db.updateNFTs(nfts) const updatedNFTs = await this.db.getCollectionNFTsForAccount( collectionID, - account + account, ) this.updateNextPages(nextPageURLs) @@ -231,7 +231,7 @@ export default class NFTsService extends BaseService { account, { nftCount: updatedNFTs.length, - } + }, ) } else if (updatedNFTs.some((nft) => nft.isBadge)) { // update collection as a badges collection @@ -240,7 +240,7 @@ export default class NFTsService extends BaseService { account, { hasBadges: true, - } + }, ) } @@ -267,14 +267,14 @@ export default class NFTsService extends BaseService { Object.entries(nextPageURLs[collectionID]).forEach(([address, url]) => { this.#nextPageUrls[collectionID] ??= {} this.#nextPageUrls[collectionID][address] = url - }) + }), ) } setFreshCollection( collectionID: string, address: string, - isFresh: boolean + isFresh: boolean, ): void { // POAPs won't appear in transfers so we don't know if they are stale if (collectionID === POAP_COLLECTION_ID) return @@ -301,11 +301,11 @@ export default class NFTsService extends BaseService { } async fetchTransferredNFTs( - accounts: AddressOnNetwork[] + accounts: AddressOnNetwork[], ): Promise { const transfers = await getNFTsTransfers( accounts, - this.#transfersLookupTimestamp + this.#transfersLookupTimestamp, ) this.#transfersLookupTimestamp = await this.setTransfersLookupTimestamp() @@ -324,12 +324,12 @@ export default class NFTsService extends BaseService { await this.db.setFreshCollections(this.#freshCollections) const knownFromAddress = transfers.filter( - (transfer) => transfer.isKnownFromAddress + (transfer) => transfer.isKnownFromAddress, ) if (knownFromAddress.length) { await this.db.removeNFTsByIDs( - knownFromAddress.map((transferred) => transferred.id) + knownFromAddress.map((transferred) => transferred.id), ) this.emitter.emit("removeTransferredNFTs", knownFromAddress) } diff --git a/background/services/preferences/db.ts b/background/services/preferences/db.ts index 855c71ce41..4b902f0df8 100644 --- a/background/services/preferences/db.ts +++ b/background/services/preferences/db.ts @@ -34,11 +34,11 @@ const getSignerRecordId = (signer: AccountSignerWithId): SignerRecordId => { const getNewUrlsForTokenList = ( storedPreferences: Preferences, oldPath: string, - newPath: string + newPath: string, ): string[] => { // Get rid of old Taho URL const newURLs = storedPreferences.tokenLists.urls.filter( - (url) => !url.includes(oldPath) + (url) => !url.includes(oldPath), ) newURLs.push(`https://ipfs.io/ipfs/${newPath}`) @@ -125,7 +125,7 @@ export class PreferenceDatabase extends Dexie { storedPreferences.defaultWallet = DEFAULT_PREFERENCES.defaultWallet } - }) + }), ) this.version(3).stores({ @@ -154,7 +154,7 @@ export class PreferenceDatabase extends Dexie { storedPreferences.selectedAccount = DEFAULT_PREFERENCES.selectedAccount } - }) + }), ) // Add the new default token list @@ -175,7 +175,7 @@ export class PreferenceDatabase extends Dexie { ...storedPreferences.tokenLists.urls, ], } - }) + }), ) // Add the new default token list @@ -193,7 +193,7 @@ export class PreferenceDatabase extends Dexie { // Old path "bafybeicovpqvb533alo5scf7vg34z6fjspdytbzsa2es2lz35sw3ksh2la", // New path - "bafybeifeqadgtritd3p2qzf5ntzsgnph77hwt4tme2umiuxv2ez2jspife" + "bafybeifeqadgtritd3p2qzf5ntzsgnph77hwt4tme2umiuxv2ez2jspife", ) // eslint-disable-next-line no-param-reassign @@ -201,7 +201,7 @@ export class PreferenceDatabase extends Dexie { ...storedPreferences.tokenLists, urls: newURLs, } - }) + }), ) // Add the Polygon, Optimism, and Arbitrum token lists @@ -224,7 +224,7 @@ export class PreferenceDatabase extends Dexie { ...storedPreferences.tokenLists.urls, ], } - }) + }), ) // Update .eth.link token lists urls to .eth.limo fallback @@ -238,14 +238,14 @@ export class PreferenceDatabase extends Dexie { .toCollection() .modify((storedPreferences: Preferences) => { const updatedURLs = storedPreferences.tokenLists.urls.map((url) => - url.endsWith(".eth.link") ? `${url.slice(0, -9)}.eth.limo` : url + url.endsWith(".eth.link") ? `${url.slice(0, -9)}.eth.limo` : url, ) // eslint-disable-next-line no-param-reassign storedPreferences.tokenLists = { ...storedPreferences.tokenLists, urls: updatedURLs, } - }) + }), ) // Update Taho token list reference. @@ -263,7 +263,7 @@ export class PreferenceDatabase extends Dexie { // Old path "bafybeifeqadgtritd3p2qzf5ntzsgnph77hwt4tme2umiuxv2ez2jspife", // New path - "bafybeigtlpxobme7utbketsaofgxqalgqzowhx24wlwwrtbzolgygmqorm" + "bafybeigtlpxobme7utbketsaofgxqalgqzowhx24wlwwrtbzolgygmqorm", ) // eslint-disable-next-line no-param-reassign @@ -271,7 +271,7 @@ export class PreferenceDatabase extends Dexie { ...storedPreferences.tokenLists, urls: newURLs, } - }) + }), ) this.version(10).stores({ @@ -286,7 +286,7 @@ export class PreferenceDatabase extends Dexie { .modify((storedPreferences: Preferences) => { // eslint-disable-next-line no-param-reassign storedPreferences.analytics = DEFAULT_PREFERENCES.analytics - }) + }), ) this.version(12).upgrade((tx) => @@ -295,9 +295,9 @@ export class PreferenceDatabase extends Dexie { .toCollection() .modify((storedPreferences: Preferences) => { storedPreferences.tokenLists.urls.push( - "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/src/joe.tokenlist-v2.json" + "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/src/joe.tokenlist-v2.json", ) - }) + }), ) this.version(13).upgrade((tx) => @@ -306,9 +306,9 @@ export class PreferenceDatabase extends Dexie { .toCollection() .modify((storedPreferences: Preferences) => { storedPreferences.tokenLists.urls.push( - "https://tokens.pancakeswap.finance/pancakeswap-default.json" + "https://tokens.pancakeswap.finance/pancakeswap-default.json", ) - }) + }), ) this.version(14).upgrade((tx) => @@ -319,15 +319,15 @@ export class PreferenceDatabase extends Dexie { const urls = storedPreferences.tokenLists.urls.filter( (url) => url !== - "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/src/joe.tokenlist-v2.json" + "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/src/joe.tokenlist-v2.json", ) urls.push( - "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/avalanche.tokenlist.json" + "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/avalanche.tokenlist.json", ) Object.assign(storedPreferences.tokenLists, { urls }) - }) + }), ) this.version(15).upgrade((tx) => @@ -338,15 +338,15 @@ export class PreferenceDatabase extends Dexie { const urls = storedPreferences.tokenLists.urls.filter( (url) => url !== - "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/avalanche.tokenlist.json" + "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/avalanche.tokenlist.json", ) urls.push( - "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/1722d8c47a728a64c8dca8ac160b32cf39c5e671/mc.tokenlist.json" + "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/1722d8c47a728a64c8dca8ac160b32cf39c5e671/mc.tokenlist.json", ) Object.assign(storedPreferences.tokenLists, { urls }) - }) + }), ) // Updates saved accounts stored networks for old installs @@ -358,7 +358,7 @@ export class PreferenceDatabase extends Dexie { const { selectedAccount } = storedPreferences selectedAccount.network = NETWORK_BY_CHAIN_ID[selectedAccount.network.chainID] - }) + }), ) this.version(17).stores({ @@ -377,7 +377,7 @@ export class PreferenceDatabase extends Dexie { // Old path "bafybeigtlpxobme7utbketsaofgxqalgqzowhx24wlwwrtbzolgygmqorm", // New path - "bafybeihufwj43zej34itf66qyguq35k4f6s4ual4uk3iy643wn3xnff2ka" + "bafybeihufwj43zej34itf66qyguq35k4f6s4ual4uk3iy643wn3xnff2ka", ) // Param reassignment is the recommended way to use `modify` https://dexie.org/docs/Collection/Collection.modify() @@ -386,7 +386,7 @@ export class PreferenceDatabase extends Dexie { ...storedPreferences.tokenLists, urls: newURLs, } - }) + }), ) // Updates preferences to allow custom auto lock timers @@ -400,7 +400,7 @@ export class PreferenceDatabase extends Dexie { } Object.assign(storedPreferences, update) - }) + }), ) // Remove broken yearn's token list @@ -410,11 +410,11 @@ export class PreferenceDatabase extends Dexie { .toCollection() .modify((storedPreferences: Preferences) => { const urls = storedPreferences.tokenLists.urls.filter( - (url) => !url.includes("meta.yearn.finance") + (url) => !url.includes("meta.yearn.finance"), ) Object.assign(storedPreferences.tokenLists, { urls }) - }) + }), ) // This is the old version for populate @@ -444,7 +444,7 @@ export class PreferenceDatabase extends Dexie { } async upsertAnalyticsPreferences( - analyticsPreferences: Partial + analyticsPreferences: Partial, ): Promise { const preferences = await this.getPreferences() @@ -472,7 +472,7 @@ export class PreferenceDatabase extends Dexie { async updateSignerTitle( signer: AccountSignerWithId, - title: string + title: string, ): Promise { await this.signersSettings.put({ id: getSignerRecordId(signer), @@ -483,7 +483,7 @@ export class PreferenceDatabase extends Dexie { } async deleteAccountSignerSettings( - signer: AccountSignerWithId + signer: AccountSignerWithId, ): Promise { await this.signersSettings.delete(getSignerRecordId(signer)) return this.signersSettings.toArray() @@ -498,7 +498,7 @@ export class PreferenceDatabase extends Dexie { } async wasDismissableItemAlreadyShown( - item: DismissableItem + item: DismissableItem, ): Promise { return (await this.shownDismissableItems.get(item))?.shown ?? false } diff --git a/background/services/preferences/defaults.ts b/background/services/preferences/defaults.ts index 41ce136b11..0a5681ad1c 100644 --- a/background/services/preferences/defaults.ts +++ b/background/services/preferences/defaults.ts @@ -9,7 +9,7 @@ const defaultPreferences: Preferences = { autoUpdate: false, urls: [ storageGatewayURL( - "ipfs://bafybeihufwj43zej34itf66qyguq35k4f6s4ual4uk3iy643wn3xnff2ka" + "ipfs://bafybeihufwj43zej34itf66qyguq35k4f6s4ual4uk3iy643wn3xnff2ka", ).href, // the Taho community-curated list "https://gateway.ipfs.io/ipns/tokens.uniswap.org", // the Uniswap default list "https://messari.io/tokenlist/messari-verified", // Messari-verified projects diff --git a/background/services/preferences/index.ts b/background/services/preferences/index.ts index 6eac9dd805..438802f477 100644 --- a/background/services/preferences/index.ts +++ b/background/services/preferences/index.ts @@ -136,15 +136,15 @@ export default class PreferenceService extends BaseService { this.emitter.emit("initializeDefaultWallet", await this.getDefaultWallet()) this.emitter.emit( "initializeSelectedAccount", - await this.getSelectedAccount() + await this.getSelectedAccount(), ) this.emitter.emit( "updateAnalyticsPreferences", - await this.getAnalyticsPreferences() + await this.getAnalyticsPreferences(), ) this.emitter.emit( "initializeShownDismissableItems", - await this.getShownDismissableItems() + await this.getShownDismissableItems(), ) } @@ -159,7 +159,7 @@ export default class PreferenceService extends BaseService { addOrEditNameInAddressBook(newEntry: AddressBookEntry): void { const correspondingEntryIndex = this.addressBook.findIndex((entry) => - sameAddressBookEntry(newEntry, entry) + sameAddressBookEntry(newEntry, entry), ) if (correspondingEntryIndex !== -1) { this.addressBook[correspondingEntryIndex] = newEntry @@ -179,15 +179,15 @@ export default class PreferenceService extends BaseService { }: NameOnNetwork): AddressOnNetwork | undefined { return this.addressBook.find( ({ name: entryName, network: entryNetwork }) => - sameNetwork(network, entryNetwork) && name === entryName + sameNetwork(network, entryNetwork) && name === entryName, ) } lookUpNameForAddress( - addressOnNetwork: AddressOnNetwork + addressOnNetwork: AddressOnNetwork, ): NameOnNetwork | undefined { return this.addressBook.find((addressBookEntry) => - sameAddressBookEntry(addressBookEntry, addressOnNetwork) + sameAddressBookEntry(addressBookEntry, addressOnNetwork), ) } @@ -197,7 +197,7 @@ export default class PreferenceService extends BaseService { }: NameOnNetwork): Promise { return this.knownContracts.find( ({ name: entryName, network: entryNetwork }) => - sameNetwork(network, entryNetwork) && name === entryName + sameNetwork(network, entryNetwork) && name === entryName, ) } @@ -208,25 +208,24 @@ export default class PreferenceService extends BaseService { return this.knownContracts.find( ({ address: entryAddress, network: entryNetwork }) => sameNetwork(network, entryNetwork) && - normalizeEVMAddress(address) === normalizeEVMAddress(entryAddress) + normalizeEVMAddress(address) === normalizeEVMAddress(entryAddress), ) } // FIXME This should not be publicly accessible, but triggered by observing // FIXME an event on the signer service. async deleteAccountSignerSettings( - signer: AccountSignerWithId + signer: AccountSignerWithId, ): Promise { - const updatedSignerSettings = await this.db.deleteAccountSignerSettings( - signer - ) + const updatedSignerSettings = + await this.db.deleteAccountSignerSettings(signer) this.emitter.emit("updatedSignerSettings", updatedSignerSettings) } async updateAccountSignerTitle( signer: AccountSignerWithId, - title: string + title: string, ): Promise { const updatedSignerSettings = this.db.updateSignerTitle(signer, title) @@ -248,7 +247,7 @@ export default class PreferenceService extends BaseService { } async updateAnalyticsPreferences( - analyticsPreferences: Partial + analyticsPreferences: Partial, ): Promise { await this.db.upsertAnalyticsPreferences(analyticsPreferences) const { analytics } = await this.db.getPreferences() diff --git a/background/services/preferences/tests/index.integration.test.ts b/background/services/preferences/tests/index.integration.test.ts index 25899d291e..3a5ec9ef0b 100644 --- a/background/services/preferences/tests/index.integration.test.ts +++ b/background/services/preferences/tests/index.integration.test.ts @@ -18,7 +18,7 @@ describe("Preference Service Integration", () => { it("should correctly set selectedAccount in indexedDB", async () => { // Should match default account prior to interaction expect(await preferenceService.getSelectedAccount()).toEqual( - DEFAULT_PREFERENCES.selectedAccount + DEFAULT_PREFERENCES.selectedAccount, ) const newAccount = { address: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045", diff --git a/background/services/preferences/tests/index.unit.test.ts b/background/services/preferences/tests/index.unit.test.ts index 1c41e4595c..31e67dc360 100644 --- a/background/services/preferences/tests/index.unit.test.ts +++ b/background/services/preferences/tests/index.unit.test.ts @@ -39,7 +39,7 @@ describe("Preference Service Unit", () => { }) expect(foundAddressOnNetwork?.address).toEqual( - "0xd8da6bf26964af9d7eed9e03e53415d37aa96045" + "0xd8da6bf26964af9d7eed9e03e53415d37aa96045", ) }) diff --git a/background/services/provider-bridge/authorization.ts b/background/services/provider-bridge/authorization.ts index d075e3646d..c031d7ab6a 100644 --- a/background/services/provider-bridge/authorization.ts +++ b/background/services/provider-bridge/authorization.ts @@ -10,7 +10,7 @@ import { HexString } from "../../types" export function checkPermissionSignTypedData( walletAddress: HexString, - enablingPermission: PermissionRequest + enablingPermission: PermissionRequest, ): void { if ( enablingPermission.state !== "allow" || @@ -22,7 +22,7 @@ export function checkPermissionSignTypedData( export function checkPermissionSign( walletAddress: HexString, - enablingPermission: PermissionRequest + enablingPermission: PermissionRequest, ): void { if ( enablingPermission.state !== "allow" || @@ -34,7 +34,7 @@ export function checkPermissionSign( export function checkPermissionSignTransaction( transactionRequest: EthersTransactionRequest, - enablingPermission: PermissionRequest + enablingPermission: PermissionRequest, ): void { if (typeof transactionRequest.chainId !== "undefined") { if ( diff --git a/background/services/provider-bridge/db.ts b/background/services/provider-bridge/db.ts index 04bcd91c40..06d2c094ab 100644 --- a/background/services/provider-bridge/db.ts +++ b/background/services/provider-bridge/db.ts @@ -33,7 +33,7 @@ export class ProviderBridgeServiceDatabase extends Dexie { tx .table(mainTable) .toArray() - .then((permissions) => tx.table(tempTable).bulkAdd(permissions)) + .then((permissions) => tx.table(tempTable).bulkAdd(permissions)), ) this.version(3).stores({ @@ -48,7 +48,7 @@ export class ProviderBridgeServiceDatabase extends Dexie { tx .table(tempTable) .toArray() - .then((permissions) => tx.table(mainTable).bulkAdd(permissions)) + .then((permissions) => tx.table(mainTable).bulkAdd(permissions)), ) this.version(5).stores({ @@ -67,7 +67,7 @@ export class ProviderBridgeServiceDatabase extends Dexie { // param reassignment is the recommended way to use `modify` https://dexie.org/docs/Collection/Collection.modify() // eslint-disable-next-line no-param-reassign permission.chainID = ETHEREUM.chainID - }) + }), ) this.version(7) @@ -79,7 +79,7 @@ export class ProviderBridgeServiceDatabase extends Dexie { tx .table(mainTable) .toArray() - .then((rows) => tx.table(tempTable).bulkAdd(rows)) + .then((rows) => tx.table(tempTable).bulkAdd(rows)), ) this.version(8).stores({ @@ -104,7 +104,7 @@ export class ProviderBridgeServiceDatabase extends Dexie { ...permission, chainID: POLYGON.chainID, }) - }) + }), ) }) @@ -120,7 +120,7 @@ export class ProviderBridgeServiceDatabase extends Dexie { } async setPermission( - permission: PermissionRequest + permission: PermissionRequest, ): Promise { return this.dAppPermissions.put(permission) } @@ -128,7 +128,7 @@ export class ProviderBridgeServiceDatabase extends Dexie { async deletePermission( origin: string, accountAddress: string, - chainID: string + chainID: string, ): Promise { return this.dAppPermissions .where({ origin, accountAddress, chainID }) @@ -146,7 +146,7 @@ export class ProviderBridgeServiceDatabase extends Dexie { async checkPermission( origin: string, accountAddress: string, - chainID: string + chainID: string, ): Promise { return this.dAppPermissions.get({ origin, accountAddress, chainID }) } diff --git a/background/services/provider-bridge/index.ts b/background/services/provider-bridge/index.ts index 528752b0be..4de7872128 100644 --- a/background/services/provider-bridge/index.ts +++ b/background/services/provider-bridge/index.ts @@ -90,13 +90,13 @@ export default class ProviderBridgeService extends BaseService { new this( await getOrCreateDB(), await internalEthereumProviderService, - await preferenceService + await preferenceService, ) private constructor( private db: ProviderBridgeServiceDatabase, private internalEthereumProviderService: InternalEthereumProviderService, - private preferenceService: PreferenceService + private preferenceService: PreferenceService, ) { super() @@ -107,7 +107,7 @@ export default class ProviderBridgeService extends BaseService { }) port.onDisconnect.addListener(() => { this.openPorts = this.openPorts.filter( - (openPort) => openPort !== port + (openPort) => openPort !== port, ) }) this.openPorts.push(port) @@ -133,13 +133,13 @@ export default class ProviderBridgeService extends BaseService { this.emitter.emit( "initializeAllowedPages", - await this.db.getAllPermission() + await this.db.getAllPermission(), ) } async onMessageListener( port: Required, - event: PortRequestEvent + event: PortRequestEvent, ): Promise { const { url, tab } = port.sender if (typeof url === "undefined") { @@ -155,7 +155,7 @@ export default class ProviderBridgeService extends BaseService { } const network = await this.internalEthereumProviderService.getCurrentOrDefaultNetworkForOrigin( - origin + origin, ) const originPermission = await this.checkPermission(origin, network.chainID) @@ -163,7 +163,7 @@ export default class ProviderBridgeService extends BaseService { // Explicitly disallow anyone who has managed to pretend to be the // internal provider. response.result = new EIP1193Error( - EIP1193_ERROR_CODES.unauthorized + EIP1193_ERROR_CODES.unauthorized, ).toJSON() } else if (isTahoConfigPayload(event.request)) { // let's start with the internal communication @@ -178,7 +178,7 @@ export default class ProviderBridgeService extends BaseService { case "tally_setClaimReferrer": if (origin !== WEBSITE_ORIGIN) { logger.warn( - `invalid WEBSITE_ORIGIN ${WEBSITE_ORIGIN} when using a custom 'tally_...' method` + `invalid WEBSITE_ORIGIN ${WEBSITE_ORIGIN} when using a custom 'tally_...' method`, ) return } @@ -202,7 +202,7 @@ export default class ProviderBridgeService extends BaseService { } default: logger.debug( - `Unknown method ${event.request.method} in 'ProviderBridgeService'` + `Unknown method ${event.request.method} in 'ProviderBridgeService'`, ) } @@ -221,7 +221,7 @@ export default class ProviderBridgeService extends BaseService { await this.internalEthereumProviderService.routeSafeRPCRequest( event.request.method, event.request.params, - origin + origin, ) } else if (typeof originPermission !== "undefined") { // if it's not internal but dapp has permission to communicate we proxy the request @@ -230,7 +230,7 @@ export default class ProviderBridgeService extends BaseService { originPermission, event.request.method, event.request.params, - origin + origin, ) } else if (event.request.method === "eth_requestAccounts") { // if it's external communication AND the dApp does not have permission BUT asks for it @@ -245,8 +245,8 @@ export default class ProviderBridgeService extends BaseService { (await this.internalEthereumProviderService.routeSafeRPCRequest( "eth_chainId", [], - origin - )) as string + origin, + )) as string, ).toString() // these params are taken directly from the dapp website @@ -262,15 +262,14 @@ export default class ProviderBridgeService extends BaseService { accountAddress, } - const blockUntilUserAction = await this.requestPermission( - permissionRequest - ) + const blockUntilUserAction = + await this.requestPermission(permissionRequest) await blockUntilUserAction const persistedPermission = await this.checkPermission( origin, - dAppChainID + dAppChainID, ) if (typeof persistedPermission !== "undefined") { @@ -280,19 +279,19 @@ export default class ProviderBridgeService extends BaseService { persistedPermission, "eth_accounts", event.request.params, - origin + origin, ) // on dApp connection, persist the current network/origin state await this.internalEthereumProviderService.switchToSupportedNetwork( origin, - network + network, ) } else { // if user does NOT agree, then reject response.result = new EIP1193Error( - EIP1193_ERROR_CODES.userRejectedRequest + EIP1193_ERROR_CODES.userRejectedRequest, ).toJSON() } } else if (event.request.method === "eth_accounts") { @@ -300,8 +299,8 @@ export default class ProviderBridgeService extends BaseService { (await this.internalEthereumProviderService.routeSafeRPCRequest( "eth_chainId", [], - origin - )) as string + origin, + )) as string, ).toString() const permission = await this.checkPermission(origin, dAppChainID) @@ -313,13 +312,13 @@ export default class ProviderBridgeService extends BaseService { permission, "eth_accounts", event.request.params, - origin + origin, ) } } else { // sorry dear dApp, there is no love for you here response.result = new EIP1193Error( - EIP1193_ERROR_CODES.unauthorized + EIP1193_ERROR_CODES.unauthorized, ).toJSON() } @@ -345,7 +344,7 @@ export default class ProviderBridgeService extends BaseService { const { origin } = new URL(port.sender?.url as string) const { chainID } = await this.internalEthereumProviderService.getCurrentOrDefaultNetworkForOrigin( - origin + origin, ) if (await this.checkPermission(origin, chainID)) { port.postMessage({ @@ -368,7 +367,7 @@ export default class ProviderBridgeService extends BaseService { } async requestPermission( - permissionRequest: PermissionRequest + permissionRequest: PermissionRequest, ): Promise { this.emitter.emit("requestPermission", permissionRequest) await showExtensionPopup(AllowedQueryParamPage.dappPermission) @@ -402,7 +401,7 @@ export default class ProviderBridgeService extends BaseService { const deleted = await this.db.deletePermission( permission.origin, address, - permission.chainID + permission.chainID, ) if (this.#pendingPermissionsRequests[permission.origin]) { @@ -422,7 +421,7 @@ export default class ProviderBridgeService extends BaseService { async checkPermission( origin: string, - chainID: string + chainID: string, ): Promise { const { address: selectedAddress } = await this.preferenceService.getSelectedAccount() @@ -439,7 +438,7 @@ export default class ProviderBridgeService extends BaseService { method: string, params: unknown[], origin: string, - popupPromise: Promise + popupPromise: Promise, ): Promise { const response = await this.internalEthereumProviderService .routeSafeRPCRequest(method, params, origin) @@ -457,7 +456,7 @@ export default class ProviderBridgeService extends BaseService { enablingPermission: PermissionRequest, method: string, rawParams: RPCRequest["params"], - origin: string + origin: string, ): Promise { const params = parseRPCRequestParams(enablingPermission, method, rawParams) @@ -472,14 +471,14 @@ export default class ProviderBridgeService extends BaseService { case "eth_signTypedData_v4": checkPermissionSignTypedData( params[0] as HexString, - enablingPermission + enablingPermission, ) return await this.routeSafeRequest( method, params, origin, - showExtensionPopup(AllowedQueryParamPage.signData) + showExtensionPopup(AllowedQueryParamPage.signData), ) case "eth_sign": checkPermissionSign(params[0] as HexString, enablingPermission) @@ -488,7 +487,7 @@ export default class ProviderBridgeService extends BaseService { method, params, origin, - showExtensionPopup(AllowedQueryParamPage.personalSignData) + showExtensionPopup(AllowedQueryParamPage.personalSignData), ) case "personal_sign": checkPermissionSign(params[1] as HexString, enablingPermission) @@ -497,7 +496,7 @@ export default class ProviderBridgeService extends BaseService { method, params, origin, - showExtensionPopup(AllowedQueryParamPage.personalSignData) + showExtensionPopup(AllowedQueryParamPage.personalSignData), ) case "eth_signTransaction": case "eth_sendTransaction": @@ -509,21 +508,21 @@ export default class ProviderBridgeService extends BaseService { ...(params[0] as EthersTransactionRequest), nonce: undefined, }, - enablingPermission + enablingPermission, ) return await this.routeSafeRequest( method, params, origin, - showExtensionPopup(AllowedQueryParamPage.signTransaction) + showExtensionPopup(AllowedQueryParamPage.signTransaction), ) case "wallet_switchEthereumChain": return await this.internalEthereumProviderService.routeSafeRPCRequest( method, params, - origin + origin, ) case "wallet_addEthereumChain": { @@ -533,12 +532,12 @@ export default class ProviderBridgeService extends BaseService { const [rawChainData, address, siteTitle, favicon] = params const validatedData = validateAddEthereumChainParameter( - rawChainData as AddEthereumChainParameter + rawChainData as AddEthereumChainParameter, ) const supportedNetwork = await this.internalEthereumProviderService.getTrackedNetworkByChainId( - validatedData.chainId + validatedData.chainId, ) if (supportedNetwork) { @@ -546,13 +545,13 @@ export default class ProviderBridgeService extends BaseService { return await this.internalEthereumProviderService.routeSafeRPCRequest( method, params, - origin + origin, ) } const window = await showExtensionPopup( AllowedQueryParamPage.addNewChain, - { requestId: id.toString() } + { requestId: id.toString() }, ) browser.windows.onRemoved.addListener((removed) => { @@ -586,14 +585,14 @@ export default class ProviderBridgeService extends BaseService { return await this.internalEthereumProviderService.routeSafeRPCRequest( method, [validatedData, address], - origin + origin, ) } default: { return await this.internalEthereumProviderService.routeSafeRPCRequest( method, params, - origin + origin, ) } } diff --git a/background/services/provider-bridge/show-popup.ts b/background/services/provider-bridge/show-popup.ts index 7e44619e1c..965f34f7c4 100644 --- a/background/services/provider-bridge/show-popup.ts +++ b/background/services/provider-bridge/show-popup.ts @@ -3,7 +3,7 @@ import { AllowedQueryParamPageType } from "@tallyho/provider-bridge-shared" export default async function showExtensionPopup( url: AllowedQueryParamPageType, - additionalOptions: { [key: string]: string } = {} + additionalOptions: { [key: string]: string } = {}, ): Promise { const { left = 0, top, width = 1920 } = await browser.windows.getCurrent() const popupWidth = 384 diff --git a/background/services/provider-bridge/tests/index.unit.test.ts b/background/services/provider-bridge/tests/index.unit.test.ts index fe722fcb2c..7961d1aed0 100644 --- a/background/services/provider-bridge/tests/index.unit.test.ts +++ b/background/services/provider-bridge/tests/index.unit.test.ts @@ -73,7 +73,7 @@ describe("ProviderBridgeService", () => { enablingPermission, method, params, - origin + origin, ) expect(response).toEqual([enablingPermission.accountAddress]) }) @@ -88,7 +88,7 @@ describe("ProviderBridgeService", () => { enablingPermission, method, params, - origin + origin, ) expect(stub.called).toBe(true) @@ -104,7 +104,7 @@ describe("ProviderBridgeService", () => { { ...enablingPermission, state: "deny" }, method, params, - origin + origin, ) expect(stub.called).toBe(false) @@ -141,7 +141,7 @@ describe("ProviderBridgeService", () => { }, "wallet_addEthereumChain", params, - enablingPermission.origin + enablingPermission.origin, ) // @ts-expect-error private access to reference the service @@ -152,7 +152,7 @@ describe("ProviderBridgeService", () => { await waitFor(() => expect(showPopupSpy).toHaveBeenCalled()) const validatedPayload = validateAddEthereumChainParameter( - params[0] as AddEthereumChainParameter + params[0] as AddEthereumChainParameter, ) await waitFor(() => @@ -160,7 +160,7 @@ describe("ProviderBridgeService", () => { ...validatedPayload, favicon: "favicon.png", siteTitle: "some site", - }) + }), ) expect(spy).not.toHaveBeenCalled() @@ -170,8 +170,8 @@ describe("ProviderBridgeService", () => { expect(spy).toHaveBeenCalledWith( "wallet_addEthereumChain", [validatedPayload, "0xd8da6bf26964af9d7eed9e03e53415d37aa96045"], - BASE_DATA.origin - ) + BASE_DATA.origin, + ), ) await expect(request).resolves.toEqual(null) // resolves without errors @@ -205,7 +205,7 @@ describe("ProviderBridgeService", () => { .mockImplementation(() => Promise.resolve(ETHEREUM)) const internalEthereumProviderSpy = jest.spyOn( internalEthereumProvider, - "routeSafeRPCRequest" + "routeSafeRPCRequest", ) const request = providerBridgeService.routeContentScriptRPCRequest( @@ -214,15 +214,15 @@ describe("ProviderBridgeService", () => { }, "wallet_addEthereumChain", params, - enablingPermission.origin + enablingPermission.origin, ) await waitFor(() => expect(internalEthereumProviderSpy).toHaveBeenCalledWith( "wallet_addEthereumChain", params, - BASE_DATA.origin - ) + BASE_DATA.origin, + ), ) // expect no popup diff --git a/background/services/provider-bridge/tests/utils.unit.test.ts b/background/services/provider-bridge/tests/utils.unit.test.ts index 4ee05bc63a..fe829310bb 100644 --- a/background/services/provider-bridge/tests/utils.unit.test.ts +++ b/background/services/provider-bridge/tests/utils.unit.test.ts @@ -8,7 +8,7 @@ describe("Utils", () => { describe("handleRPCErrorResponse", () => { it("should return a provider Rpc error", () => { const response = handleRPCErrorResponse( - new EIP1193Error(EIP1193_ERROR_CODES.disconnected) + new EIP1193Error(EIP1193_ERROR_CODES.disconnected), ) expect(response).toBe(EIP1193_ERROR_CODES.disconnected) diff --git a/background/services/provider-bridge/utils.ts b/background/services/provider-bridge/utils.ts index 6a82ffc866..7fe6acbef0 100644 --- a/background/services/provider-bridge/utils.ts +++ b/background/services/provider-bridge/utils.ts @@ -22,7 +22,7 @@ export type PermissionMap = { export const keyPermissionsByChainIdAddressOrigin = ( permissions: PermissionRequest[], - permissionMap?: PermissionMap + permissionMap?: PermissionMap, ): PermissionMap => { const map = permissionMap ?? { evm: {} } permissions.forEach((permission) => { @@ -79,7 +79,7 @@ export function handleRPCErrorResponse(error: unknown): unknown { response = parsedRPCErrorResponse(error as { body: string }) } else if ("error" in error) { response = parsedRPCErrorResponse( - (error as { error: { body: string } }).error + (error as { error: { body: string } }).error, ) } } @@ -154,13 +154,13 @@ export const validateAddEthereumChainParameter = ({ export function parseRPCRequestParams( enablingPermission: PermissionRequest, method: string, - params: RPCRequest["params"] + params: RPCRequest["params"], ): RPCRequest["params"] { switch (method) { case "eth_sign": return sameEVMAddress( params[0] as HexString, - enablingPermission.accountAddress + enablingPermission.accountAddress, ) ? params : [params[1], params[0]] @@ -168,7 +168,7 @@ export function parseRPCRequestParams( case "personal_sign": return sameEVMAddress( params[1] as HexString, - enablingPermission.accountAddress + enablingPermission.accountAddress, ) ? params : [params[1], params[0]] diff --git a/background/services/signing/index.ts b/background/services/signing/index.ts index af17eb65d9..1fb808626c 100644 --- a/background/services/signing/index.ts +++ b/background/services/signing/index.ts @@ -98,19 +98,19 @@ export default class SigningService extends BaseService { [ Promise, Promise, - Promise + Promise, ] > = async (internalSignerService, ledgerService, chainService) => new this( await internalSignerService, await ledgerService, - await chainService + await chainService, ) private constructor( private internalSignerService: InternalSignerService, private ledgerService: LedgerService, - private chainService: ChainService + private chainService: ChainService, ) { super() } @@ -133,13 +133,13 @@ export default class SigningService extends BaseService { private async signTransactionWithNonce( transactionWithNonce: TransactionRequestWithNonce, - accountSigner: AccountSigner + accountSigner: AccountSigner, ): Promise { switch (accountSigner.type) { case "ledger": return this.ledgerService.signTransaction( transactionWithNonce, - accountSigner + accountSigner, ) case "private-key": case "keyring": @@ -148,7 +148,7 @@ export default class SigningService extends BaseService { address: transactionWithNonce.from, network: transactionWithNonce.network, }, - transactionWithNonce + transactionWithNonce, ) case "read-only": throw new Error("Read-only signers cannot sign.") @@ -159,7 +159,7 @@ export default class SigningService extends BaseService { async removeAccount( address: HexString, - signerType?: SignerType + signerType?: SignerType, ): Promise { if (signerType) { switch (signerType) { @@ -198,7 +198,7 @@ export default class SigningService extends BaseService { async signTransaction( transactionRequest: TransactionRequest, - accountSigner: AccountSigner + accountSigner: AccountSigner, ): Promise { const transactionWithNonce = await this.chainService.populateEVMTransactionNonce(transactionRequest) @@ -206,7 +206,7 @@ export default class SigningService extends BaseService { try { const signedTx = await this.signTransactionWithNonce( transactionWithNonce, - accountSigner + accountSigner, ) this.emitter.emit("signingTxResponse", { @@ -255,7 +255,7 @@ export default class SigningService extends BaseService { chainId !== parseInt(account.network.chainID) ) { throw new Error( - "Attempting to sign typed data with mismatched chain IDs." + "Attempting to sign typed data with mismatched chain IDs.", ) } @@ -264,7 +264,7 @@ export default class SigningService extends BaseService { signedData = await this.ledgerService.signTypedData( typedData, account.address, - accountSigner + accountSigner, ) break case "private-key": @@ -298,7 +298,7 @@ export default class SigningService extends BaseService { async signData( addressOnNetwork: AddressOnNetwork, hexDataToSign: HexString, - accountSigner: AccountSigner + accountSigner: AccountSigner, ): Promise { if (!hexDataToSign.startsWith("0x")) { throw new Error("Signing service can only sign hex data.") @@ -310,7 +310,7 @@ export default class SigningService extends BaseService { case "ledger": signedData = await this.ledgerService.signMessage( addressOnNetwork, - hexDataToSign + hexDataToSign, ) break case "private-key": diff --git a/background/services/signing/tests/index.unit.test.ts b/background/services/signing/tests/index.unit.test.ts index f444927a78..b433b86119 100644 --- a/background/services/signing/tests/index.unit.test.ts +++ b/background/services/signing/tests/index.unit.test.ts @@ -65,7 +65,7 @@ describe("Signing Service Unit", () => { expect( signingService.deriveAddress({ type: "read-only", - }) + }), ).rejects.toBeTruthy() }) }) diff --git a/background/services/telemetry/index.ts b/background/services/telemetry/index.ts index 084dc02880..c2b8449098 100644 --- a/background/services/telemetry/index.ts +++ b/background/services/telemetry/index.ts @@ -51,7 +51,7 @@ export default class TelemetryService extends BaseService { export type ServiceCreatorFunction< EventsType extends ServiceLifecycleEvents, ServiceType extends Service, - Deps extends Promise>[] + Deps extends Promise>[], > = (...serviceDependencies: [...Deps, DexieOptions?]) => Promise diff --git a/background/services/wallet-connect/eip155-request-utils.ts b/background/services/wallet-connect/eip155-request-utils.ts index fab7aac667..7a4f1cddb0 100644 --- a/background/services/wallet-connect/eip155-request-utils.ts +++ b/background/services/wallet-connect/eip155-request-utils.ts @@ -13,7 +13,7 @@ import { function formatJsonRpcResult( id: number, - result: T + result: T, ): JsonRpcResult { return { id, @@ -24,7 +24,7 @@ function formatJsonRpcResult( function formatJsonRpcError( id: number, - error?: string | ErrorResponse + error?: string | ErrorResponse, ): JsonRpcError { return { id, @@ -35,7 +35,7 @@ function formatJsonRpcError( export function approveEIP155Request( request: TranslatedRequestParams, - signedMessage: string + signedMessage: string, ): JsonRpcResult { const { id, method } = request @@ -52,7 +52,7 @@ export function approveEIP155Request( } export function rejectEIP155Request( - request: TranslatedRequestParams + request: TranslatedRequestParams, ): JsonRpcError { const { id } = request @@ -60,7 +60,7 @@ export function rejectEIP155Request( } export function processRequestParams( - event: SignClientTypes.EventArguments["session_request"] + event: SignClientTypes.EventArguments["session_request"], ): TranslatedRequestParams { // TODO: figure out if this method is needed const { id, params: eventParams, topic } = event diff --git a/background/services/wallet-connect/error.ts b/background/services/wallet-connect/error.ts index f82e6fc6e9..cae2e84fa2 100644 --- a/background/services/wallet-connect/error.ts +++ b/background/services/wallet-connect/error.ts @@ -48,7 +48,7 @@ function getErrorByCode(code: number): ErrorResponse { } export function formatErrorMessage( - error?: string | ErrorResponse + error?: string | ErrorResponse, ): ErrorResponse { let translatedError = error if (typeof translatedError === "undefined") { diff --git a/background/services/wallet-connect/index.ts b/background/services/wallet-connect/index.ts index ed0dffd5e7..e0dd34fd13 100644 --- a/background/services/wallet-connect/index.ts +++ b/background/services/wallet-connect/index.ts @@ -66,26 +66,26 @@ export default class WalletConnectService extends BaseService { Promise, Promise, Promise, - Promise + Promise, ] > = async ( providerBridgeService, internalEthereumProviderService, preferenceService, - chainService + chainService, ) => new this( await providerBridgeService, await internalEthereumProviderService, await preferenceService, - await chainService + await chainService, ) private constructor( private providerBridgeService: ProviderBridgeService, private internalEthereumProviderService: InternalEthereumProviderService, private preferenceService: PreferenceService, - private chainService: ChainService + private chainService: ChainService, ) { super() } @@ -97,7 +97,7 @@ export default class WalletConnectService extends BaseService { this.defineEventHandlers() this.providerBridgeService.emitter.on("walletConnectInit", async (wcUri) => - this.performConnection(wcUri) + this.performConnection(wcUri), ) } @@ -110,11 +110,11 @@ export default class WalletConnectService extends BaseService { private defineEventHandlers(): void { this.signClientv2.on("session_proposal", (proposal) => - this.sessionProposalListener(false, proposal) + this.sessionProposalListener(false, proposal), ) this.signClientv2.on("session_request", (event) => - this.sessionRequestListener(false, event) + this.sessionRequestListener(false, event), ) } @@ -130,7 +130,7 @@ export default class WalletConnectService extends BaseService { createLegacySignClient( uri, (payload) => this.sessionProposalListener(true, undefined, payload), - (payload) => this.sessionRequestListener(true, undefined, payload) + (payload) => this.sessionRequestListener(true, undefined, payload), ) break @@ -143,21 +143,21 @@ export default class WalletConnectService extends BaseService { // TODO: decide how to handle this WalletConnectService.tempFeatureLog( "unhandled uri version: ", - version + version, ) break } } catch (err: unknown) { WalletConnectService.tempFeatureLog( "TODO: Error while establishing session", - err + err, ) } } private async acknowledgeProposal( proposal: SignClientTypes.EventArguments["session_proposal"], - selectedAccounts: [string] + selectedAccounts: [string], ) { // TODO: in case of a new connection, this callback should perform request processing AFTER wallet selection/confirmation dialog const { id, params } = proposal @@ -166,7 +166,7 @@ export default class WalletConnectService extends BaseService { WalletConnectService.tempFeatureLog("proposal", proposal) WalletConnectService.tempFeatureLog( "requiredNamespaces", - requiredNamespaces + requiredNamespaces, ) const ethNamespaceKey = "eip155" @@ -177,10 +177,9 @@ export default class WalletConnectService extends BaseService { } const namespaces: SessionTypes.Namespaces = {} - const accounts: string[] = [] - ethNamespace.chains.forEach((chain) => { - selectedAccounts.map((acc) => accounts.push(`${chain}:${acc}`)) - }) + const accounts = (ethNamespace.chains ?? []).flatMap((chain) => + selectedAccounts.map((selectedAccount) => `${chain}:${selectedAccount}`), + ) namespaces[ethNamespaceKey] = { accounts, methods: requiredNamespaces[ethNamespaceKey].methods, @@ -211,7 +210,7 @@ export default class WalletConnectService extends BaseService { private async postApprovalResponse( event: TranslatedRequestParams, - payload: string + payload: string, ) { const { topic } = event const response = approveEIP155Request(event, payload) @@ -233,7 +232,7 @@ export default class WalletConnectService extends BaseService { async sessionRequestListener( isLegacy: boolean, // TODO: this along with @legacyEvent should be removed when we fully migrate to v2, @event should become non optional event?: SignClientTypes.EventArguments["session_request"], - legacyEvent?: LegacyEventData + legacyEvent?: LegacyEventData, ): Promise { WalletConnectService.tempFeatureLog("in sessionRequestListener", event) @@ -255,7 +254,7 @@ export default class WalletConnectService extends BaseService { async (message) => { WalletConnectService.tempFeatureLog( "sessionRequestListenerPort message:", - message + message, ) if (!request) { @@ -273,7 +272,7 @@ export default class WalletConnectService extends BaseService { } else { await this.postApprovalResponse(request, message.result) } - } + }, ) await this.providerBridgeService.onMessageListener(port, { @@ -285,11 +284,11 @@ export default class WalletConnectService extends BaseService { async sessionProposalListener( isLegacy: boolean, proposal?: SignClientTypes.EventArguments["session_proposal"], - legacyProposal?: LegacyProposal + legacyProposal?: LegacyProposal, ): Promise { WalletConnectService.tempFeatureLog( "in sessionProposalListener", - proposal ?? legacyProposal + proposal ?? legacyProposal, ) let favicon = "" @@ -331,7 +330,7 @@ export default class WalletConnectService extends BaseService { await this.rejectProposal(proposal?.id) } } - } + }, ) await this.providerBridgeService.onMessageListener(port, { diff --git a/background/services/wallet-connect/legacy-sign-client-helper.ts b/background/services/wallet-connect/legacy-sign-client-helper.ts index 48da552a8b..a1510743c2 100644 --- a/background/services/wallet-connect/legacy-sign-client-helper.ts +++ b/background/services/wallet-connect/legacy-sign-client-helper.ts @@ -53,7 +53,7 @@ function getCachedLegacySession(): IWalletConnectSession | null { export function createLegacySignClient( uri?: string, sessionProposalListener?: SessionProposalListener, - sessionRequestListener?: SessionRequestListener + sessionRequestListener?: SessionRequestListener, ): void { // If URI is passed always create a new session, // otherwise fall back to cached session if client isn't already instantiated. @@ -100,7 +100,7 @@ export function createLegacySignClient( export function acknowledgeLegacyProposal( proposal: LegacyProposal, - accounts: string[] + accounts: string[], ): void { const { params } = proposal const [{ chainId }] = params @@ -116,7 +116,7 @@ export function rejectLegacyProposal(): void { } export function processLegacyRequestParams( - payload: LegacyEventData + payload: LegacyEventData, ): TranslatedRequestParams | undefined { // TODO: figure out if this method is needed const { method } = payload @@ -135,7 +135,7 @@ export function processLegacyRequestParams( export async function postLegacyApprovalResponse( event: TranslatedRequestParams, - payload: string + payload: string, ): Promise { const { id } = event const { result } = approveEIP155Request(event, payload) @@ -146,7 +146,7 @@ export async function postLegacyApprovalResponse( } export async function postLegacyRejectionResponse( - event: TranslatedRequestParams + event: TranslatedRequestParams, ): Promise { const { id } = event const { error } = rejectEIP155Request(event) diff --git a/background/services/wallet-connect/utils.ts b/background/services/wallet-connect/utils.ts index e8c0c983b8..7e7da449ec 100644 --- a/background/services/wallet-connect/utils.ts +++ b/background/services/wallet-connect/utils.ts @@ -5,7 +5,7 @@ export const getMetaPort = ( name: string, senderUrl: string, // eslint-disable-next-line @typescript-eslint/no-explicit-any - postMessage: (message: any) => void + postMessage: (message: any) => void, ): Required => { const port: browser.Runtime.Port = browser.runtime.connect({ name, diff --git a/background/tally-provider.ts b/background/tally-provider.ts index a1ebba8c09..3b9408111d 100644 --- a/background/tally-provider.ts +++ b/background/tally-provider.ts @@ -14,7 +14,7 @@ interface TallyInternalJsonRpcSigner extends JsonRpcSigner { sendTransaction( transaction: Deferrable< TransactionRequest & { annotation?: TransactionAnnotation } - > + >, ): Promise } @@ -29,14 +29,14 @@ export default class TallyWeb3Provider extends Web3Provider { } override getSigner( - addressOrIndex?: string | number + addressOrIndex?: string | number, ): TallyInternalJsonRpcSigner { return super.getSigner(addressOrIndex) } static override hexlifyTransaction( transaction: TransactionRequest & { annotation?: TransactionAnnotation }, - allowExtra?: { [key: string]: boolean } + allowExtra?: { [key: string]: boolean }, ): { [key: string]: string | AccessList } { const { annotation, ...transactionRequest } = transaction return { diff --git a/background/tests/earn/earn.test.ts b/background/tests/earn/earn.test.ts index 863910b015..5b3d9f35a6 100644 --- a/background/tests/earn/earn.test.ts +++ b/background/tests/earn/earn.test.ts @@ -123,7 +123,7 @@ describe("Earn", () => { it("should return APR value if rewards value is bigger than 0 and staked value is bigger than 0", async () => { jest.spyOn(getTokenPrice, "default").mockImplementationOnce(() => // @ts-ignore - Promise.resolve({ singleTokenPrice: 10000000000n }) + Promise.resolve({ singleTokenPrice: 10000000000n }), ) jest diff --git a/background/tests/factories.ts b/background/tests/factories.ts index b1d5915340..c492bed39f 100644 --- a/background/tests/factories.ts +++ b/background/tests/factories.ts @@ -81,11 +81,11 @@ type CreateInternalSignerServiceOverrides = { } export const createInternalSignerService = async ( - overrides: CreateInternalSignerServiceOverrides = {} + overrides: CreateInternalSignerServiceOverrides = {}, ): Promise => InternalSignerService.create( overrides.preferenceService ?? createPreferenceService(), - overrides.analyticsService ?? createAnalyticsService() + overrides.analyticsService ?? createAnalyticsService(), ) type CreateChainServiceOverrides = { @@ -94,11 +94,11 @@ type CreateChainServiceOverrides = { } export const createChainService = async ( - overrides: CreateChainServiceOverrides = {} + overrides: CreateChainServiceOverrides = {}, ): Promise => ChainService.create( overrides.preferenceService ?? createPreferenceService(), - overrides.internalSignerService ?? createInternalSignerService() + overrides.internalSignerService ?? createInternalSignerService(), ) export async function createNameService(overrides?: { @@ -109,7 +109,7 @@ export async function createNameService(overrides?: { overrides?.preferenceService ?? createPreferenceService() return NameService.create( overrides?.chainService ?? createChainService({ preferenceService }), - preferenceService + preferenceService, ) } @@ -124,7 +124,7 @@ export async function createIndexingService(overrides?: { return IndexingService.create( preferenceService, overrides?.chainService ?? createChainService({ preferenceService }), - overrides?.dexieOptions + overrides?.dexieOptions, ) } @@ -153,44 +153,44 @@ type CreateInternalEthereumProviderServiceOverrides = { } export const createSigningService = async ( - overrides: CreateSigningServiceOverrides = {} + overrides: CreateSigningServiceOverrides = {}, ): Promise => SigningService.create( overrides.internalSignerService ?? createInternalSignerService(), overrides.ledgerService ?? createLedgerService(), - overrides.chainService ?? createChainService() + overrides.chainService ?? createChainService(), ) export const createAbilitiesService = async ( - overrides: CreateAbilitiesServiceOverrides = {} + overrides: CreateAbilitiesServiceOverrides = {}, ): Promise => AbilitiesService.create( overrides.chainService ?? createChainService(), - overrides.ledgerService ?? createLedgerService() + overrides.ledgerService ?? createLedgerService(), ) export const createInternalEthereumProviderService = async ( - overrides: CreateInternalEthereumProviderServiceOverrides = {} + overrides: CreateInternalEthereumProviderServiceOverrides = {}, ): Promise => InternalEthereumProviderService.create( overrides.chainService ?? createChainService(), - overrides.preferenceService ?? createPreferenceService() + overrides.preferenceService ?? createPreferenceService(), ) export const createProviderBridgeService = async ( - overrides: CreateProviderBridgeServiceOverrides = {} + overrides: CreateProviderBridgeServiceOverrides = {}, ): Promise => { const preferenceService = overrides?.preferenceService ?? createPreferenceService() return ProviderBridgeService.create( overrides.internalEthereumProviderService ?? createInternalEthereumProviderService({ preferenceService }), - preferenceService + preferenceService, ) } export const createTypedData = ( - overrides: Partial = {} + overrides: Partial = {}, ): EIP712TypedData => // Example values from ethers docs ({ @@ -227,7 +227,7 @@ export const createTypedData = ( }) export const createTransactionRequest = ( - overrides: Partial = {} + overrides: Partial = {}, ): TransactionRequestWithNonce => ({ nonce: 0, from: "0x208e94d5661a73360d9387d3ca169e5c130090cd", @@ -244,7 +244,7 @@ export const createTransactionRequest = ( // Copied from a legacy Optimism transaction generated with our test wallet. export const createLegacyTransactionRequest = ( - overrides: Partial = {} + overrides: Partial = {}, ): LegacyEVMTransactionRequest => ({ chainID: OPTIMISM.chainID, estimatedRollupFee: 0n, @@ -262,7 +262,7 @@ export const createLegacyTransactionRequest = ( }) export const createAnyEVMTransaction = ( - overrides: Partial = {} + overrides: Partial = {}, ): AnyEVMTransaction => ({ asset: ETH, blockHash: createRandom0xHash(), @@ -287,7 +287,7 @@ export const createAnyEVMTransaction = ( }) export const createAnyEVMBlock = ( - overrides: Partial = {} + overrides: Partial = {}, ): AnyEVMBlock => ({ hash: createRandom0xHash(), parentHash: createRandom0xHash(), @@ -299,7 +299,7 @@ export const createAnyEVMBlock = ( }) export const createAccountBalance = ( - overrides: Partial = {} + overrides: Partial = {}, ): AccountBalance => ({ address: createRandom0xHash(), assetAmount: { @@ -323,7 +323,7 @@ export const createAccountBalance = ( }) export const createAddressOnNetwork = ( - overrides: Partial = {} + overrides: Partial = {}, ): AddressOnNetwork => ({ address: normalizeEVMAddress(createRandom0xHash()), network: ETHEREUM, @@ -331,7 +331,7 @@ export const createAddressOnNetwork = ( }) export const createBlockPrices = ( - overrides: Partial = {} + overrides: Partial = {}, ): BlockPrices => ({ baseFeePerGas: 0n, blockNumber: 25639147, @@ -349,7 +349,7 @@ export const createBlockPrices = ( }) export const createQueuedTransaction = ( - overrides: Partial = {} + overrides: Partial = {}, ): QueuedTxToRetrieve => ({ network: OPTIMISM, hash: createRandom0xHash(), @@ -358,7 +358,7 @@ export const createQueuedTransaction = ( }) export const createTransactionsToRetrieve = ( - numberOfTx = 100 + numberOfTx = 100, ): PriorityQueuedTxToRetrieve[] => { const NETWORKS = [ETHEREUM, POLYGON, ARBITRUM_ONE, AVALANCHE, OPTIMISM] @@ -371,7 +371,7 @@ export const createTransactionsToRetrieve = ( } export const createAccountData = ( - overrides: Partial = {} + overrides: Partial = {}, ): AccountData => ({ address: createAddressOnNetwork().address, network: ETHEREUM, @@ -385,7 +385,7 @@ export const createAccountData = ( }) export const createTransactionResponse = ( - overrides: Partial = {} + overrides: Partial = {}, ): TransactionResponse => ({ hash: createRandom0xHash(), blockNumber: 25639147, @@ -426,6 +426,7 @@ export const makeEthersFeeData = (overrides?: Partial): FeeData => ({ maxFeePerGas: BigNumber.from(123274909666), maxPriorityFeePerGas: BigNumber.from(2500000000), gasPrice: BigNumber.from(91426599419), + lastBaseFeePerGas: overrides?.lastBaseFeePerGas ?? null, ...overrides, }) @@ -440,7 +441,7 @@ const getRandomStr = (length: number) => { } export const createSmartContractAsset = ( - overrides: Partial = {} + overrides: Partial = {}, ): SmartContractFungibleAsset => { const symbol = overrides.symbol ?? getRandomStr(3) const asset = { @@ -469,7 +470,7 @@ export const createSmartContractAsset = ( } export const createNetworkBaseAsset = ( - overrides: Partial = {} + overrides: Partial = {}, ): NetworkBaseAsset => { const symbol = getRandomStr(3) const asset: NetworkBaseAsset = { @@ -494,7 +495,7 @@ export const createNetworkBaseAsset = ( export const createAssetAmount = ( asset: AnyAsset = ETH, - amount = 1 + amount = 1, ): AnyAssetAmount => ({ asset, amount: BigInt(Math.trunc(1e10 * amount)) * 10n ** 8n, @@ -503,7 +504,7 @@ export const createAssetAmount = ( export const createCompleteAssetAmount = ( asset: AnyAsset = ETH, amount = 1, - overrides: Partial> = {} + overrides: Partial> = {}, ): CompleteAssetAmount => { const assetAmount = createAssetAmount(asset, amount) return { @@ -515,7 +516,7 @@ export const createCompleteAssetAmount = ( } export const createDaylightAbility = ( - overrides: Partial = {} + overrides: Partial = {}, ): DaylightAbility => ({ type: "mint", title: "Test ability!", @@ -552,7 +553,7 @@ export const createDaylightAbility = ( export const createPricePoint = ( asset: AnyAsset, price = 1, - flip = false + flip = false, ): PricePoint => { const decimals = isFungibleAsset(asset) ? asset.decimals : 18 diff --git a/background/tests/json-serialization.test.ts b/background/tests/json-serialization.test.ts index 9f49d4d822..d2aa93a4e4 100644 --- a/background/tests/json-serialization.test.ts +++ b/background/tests/json-serialization.test.ts @@ -37,6 +37,6 @@ test("round-trips mixed values with bigints correctly", () => { expect(decodeJSON(encodeJSON(mixedArray))).toStrictEqual(mixedArray) expect(decodeJSON(encodeJSON(mixedObjectWithUndefined))).toStrictEqual( - mixedObject + mixedObject, ) }) diff --git a/background/tests/prices.test.ts b/background/tests/prices.test.ts index dd8e4a7b60..921f9cabf7 100644 --- a/background/tests/prices.test.ts +++ b/background/tests/prices.test.ts @@ -168,7 +168,7 @@ describe("lib/prices.ts", () => { jest.spyOn(ethers, "fetchJson").mockResolvedValue(fetchJsonResponse) await expect(getPrices([ETH], FIAT_CURRENCIES)).resolves.toEqual( - getPricesResponse + getPricesResponse, ) expect(ethers.fetchJson).toHaveBeenCalledTimes(1) }) @@ -210,7 +210,7 @@ describe("lib/prices.ts", () => { jest.spyOn(ethers, "fetchJson").mockResolvedValue(fetchJsonResponse) await expect(getPrices([ETH, FAKE_COIN], currencies)).resolves.toEqual( - getPricesResponse + getPricesResponse, ) expect(ethers.fetchJson).toHaveBeenCalledTimes(1) }) diff --git a/background/third-party-data/blocknative/index.ts b/background/third-party-data/blocknative/index.ts index bc98890e83..86ba1d190e 100644 --- a/background/third-party-data/blocknative/index.ts +++ b/background/third-party-data/blocknative/index.ts @@ -64,8 +64,8 @@ export default class Blocknative { accountAddress: string, handler: ( transactionData: EthereumTransactionData, - balanceDelta: bigint - ) => void + balanceDelta: bigint, + ) => void, ): void { // TODO Centralize handling of txConfirmed. this.blocknative @@ -84,7 +84,7 @@ export default class Blocknative { .reduce( (ethBalanceChangeDelta, { delta }) => ethBalanceChangeDelta + BigInt(delta), - 0n + 0n, ) if (balanceDelta) { @@ -126,7 +126,7 @@ export default class Blocknative { price: gweiToWei(estimate.price ?? 0), maxPriorityFeePerGas: gweiToWei(estimate.maxPriorityFeePerGas), maxFeePerGas: gweiToWei(estimate.maxFeePerGas), - }) + }), ), dataSource: "blocknative", } diff --git a/background/utils/fetching.ts b/background/utils/fetching.ts index cec6bc0a67..4879c43603 100644 --- a/background/utils/fetching.ts +++ b/background/utils/fetching.ts @@ -6,7 +6,7 @@ export const makeFetchWithTimeout = (timeoutMs: number) => // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types async function fetchWithTimeout( requestInfo: RequestInfo, - options?: RequestInit | undefined + options?: RequestInit | undefined, ) { const controller = new AbortController() const id = setTimeout(() => { diff --git a/background/utils/signing.ts b/background/utils/signing.ts index 3c083cd818..b29484ddff 100644 --- a/background/utils/signing.ts +++ b/background/utils/signing.ts @@ -48,7 +48,7 @@ type EIP4361SigningData = { export type MessageSigningData = EIP191SigningData | EIP4361SigningData export type MessageSigningRequest< - T extends MessageSigningData = MessageSigningData + T extends MessageSigningData = MessageSigningData, > = T & { account: AddressOnNetwork rawSigningData: string @@ -73,7 +73,7 @@ export type EIP2612TypedData = { } const checkEIP4361: (message: string) => EIP4361Data | undefined = ( - message + message, ) => { try { const siweMessage = new SiweMessage(message) @@ -141,7 +141,7 @@ export function parseSigningData(signingData: string): MessageSigningData { export const isSameAccountSignerWithId = ( signerA: AccountSignerWithId, - signerB: AccountSignerWithId + signerB: AccountSignerWithId, ): boolean => { if (signerA.type !== signerB.type) return false diff --git a/build-utils/inject-window-provider.ts b/build-utils/inject-window-provider.ts index 49a99cd7ce..1efc256722 100644 --- a/build-utils/inject-window-provider.ts +++ b/build-utils/inject-window-provider.ts @@ -26,7 +26,7 @@ export default class InjectWindowProvider { windowProviderSource = windowProviderSource.replace( "@@@SEGMENT_MEDIUM_BASE64@@@", - fontAsB64 + fontAsB64, ) // need to encode so it can be used as a string @@ -41,17 +41,17 @@ export default class InjectWindowProvider { providerBridgeSource.replace( // eslint-disable-next-line no-useless-escape '"@@@WINDOW_PROVIDER@@@"', - windowProviderSource - ) + windowProviderSource, + ), ) // eslint-disable-next-line no-param-reassign delete assets[WINDOW_PROVIDER_FILENAME] // eslint-disable-next-line no-param-reassign delete assets[`${WINDOW_PROVIDER_FILENAME}.map`] - } + }, ) - } + }, ) } } diff --git a/build-utils/web-extension-archive-webpack-plugin.ts b/build-utils/web-extension-archive-webpack-plugin.ts index 054c712588..c6204110ac 100644 --- a/build-utils/web-extension-archive-webpack-plugin.ts +++ b/build-utils/web-extension-archive-webpack-plugin.ts @@ -23,7 +23,7 @@ type ArchiveOptions = { */ function webextArchiveCreator( webpackCompiler: Compiler, - { filename, outputDirectory }: ArchiveOptions + { filename, outputDirectory }: ArchiveOptions, ): (stats: Stats, pluginCompleted: (err: Error | null) => void) => void { const logger = webpackCompiler.getInfrastructureLogger(PLUGIN_NAME) return (_: Stats, pluginCompleted: (err: Error | null) => void) => { @@ -32,7 +32,7 @@ function webextArchiveCreator( outputDirectory || path.join(webpackCompiler.outputPath, "..") const outputStream = fs.createWriteStream( - path.join(outputPath, `${filename}.zip`) + path.join(outputPath, `${filename}.zip`), ) outputStream.on("close", () => { pluginCompleted(null) @@ -60,7 +60,7 @@ export default class WebextArchive { apply(compiler: Compiler): void { compiler.hooks.done.tapAsync( PLUGIN_NAME, - webextArchiveCreator(compiler, this.options) + webextArchiveCreator(compiler, this.options), ) } } diff --git a/dev-utils/local-chain/package.json b/dev-utils/local-chain/package.json index 9e63238525..2b0a3bacff 100644 --- a/dev-utils/local-chain/package.json +++ b/dev-utils/local-chain/package.json @@ -14,7 +14,7 @@ "@typechain/hardhat": "^5.0.0", "chai": "^4.3.6", "ethereum-waffle": "^3.4.0", - "ethers": "^5.5.4", - "hardhat": "^2.9.1" + "ethers": "^5.7.2", + "hardhat": "^2.14.0" } } diff --git a/dev-utils/local-chain/yarn.lock b/dev-utils/local-chain/yarn.lock index 6b04084de3..dea66f29ca 100644 --- a/dev-utils/local-chain/yarn.lock +++ b/dev-utils/local-chain/yarn.lock @@ -2,6 +2,42 @@ # yarn lockfile v1 +"@chainsafe/as-sha256@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" + integrity sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg== + +"@chainsafe/persistent-merkle-tree@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz#4c9ee80cc57cd3be7208d98c40014ad38f36f7ff" + integrity sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/persistent-merkle-tree@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz#2b4a62c9489a5739dedd197250d8d2f5427e9f63" + integrity sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/ssz@^0.10.0": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.10.2.tgz#c782929e1bb25fec66ba72e75934b31fd087579e" + integrity sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.5.0" + +"@chainsafe/ssz@^0.9.2": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.9.4.tgz#696a8db46d6975b600f8309ad3a12f7c0e310497" + integrity sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.4.2" + case "^1.6.3" + "@ensdomains/ens@^0.4.4": version "0.4.5" resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" @@ -71,75 +107,6 @@ patch-package "^6.2.2" postinstall-postinstall "^2.1.0" -"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.0", "@ethereumjs/block@^3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.1.tgz#50574d3e993ae247dcfe2abbdb91d2a4a22accb9" - integrity sha512-o5d/zpGl4SdVfdTfrsq9ZgYMXddc0ucKMiFW5OphBCX+ep4xzYnSjboFcZXT2V/tcSBr84VrKWWp21CGVb3DGw== - dependencies: - "@ethereumjs/common" "^2.6.1" - "@ethereumjs/tx" "^3.5.0" - ethereumjs-util "^7.1.4" - merkle-patricia-tree "^4.2.3" - -"@ethereumjs/blockchain@^5.5.0", "@ethereumjs/blockchain@^5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.1.tgz#60f1f50592c06cc47e1704800b88b7d32f609742" - integrity sha512-JS2jeKxl3tlaa5oXrZ8mGoVBCz6YqsGG350XVNtHAtNZXKk7pU3rH4xzF2ru42fksMMqzFLzKh9l4EQzmNWDqA== - dependencies: - "@ethereumjs/block" "^3.6.0" - "@ethereumjs/common" "^2.6.0" - "@ethereumjs/ethash" "^1.1.0" - debug "^2.2.0" - ethereumjs-util "^7.1.3" - level-mem "^5.0.1" - lru-cache "^5.1.1" - semaphore-async-await "^1.5.1" - -"@ethereumjs/common@^2.6.0", "@ethereumjs/common@^2.6.1", "@ethereumjs/common@^2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.2.tgz#eb006c9329c75c80f634f340dc1719a5258244df" - integrity sha512-vDwye5v0SVeuDky4MtKsu+ogkH2oFUV8pBKzH/eNBzT8oI91pKa8WyzDuYuxOQsgNgv5R34LfFDh2aaw3H4HbQ== - dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.4" - -"@ethereumjs/ethash@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.1.0.tgz#7c5918ffcaa9cb9c1dc7d12f77ef038c11fb83fb" - integrity sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA== - dependencies: - "@ethereumjs/block" "^3.5.0" - "@types/levelup" "^4.3.0" - buffer-xor "^2.0.1" - ethereumjs-util "^7.1.1" - miller-rabin "^4.0.0" - -"@ethereumjs/tx@^3.4.0", "@ethereumjs/tx@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.0.tgz#783b0aeb08518b9991b23f5155763bbaf930a037" - integrity sha512-/+ZNbnJhQhXC83Xuvy6I9k4jT5sXiV0tMR9C+AzSSpcCV64+NB8dTE1m3x98RYMqb8+TLYWA+HML4F5lfXTlJw== - dependencies: - "@ethereumjs/common" "^2.6.1" - ethereumjs-util "^7.1.4" - -"@ethereumjs/vm@^5.6.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.7.1.tgz#3bf757fbad0081838ccb4f22003cd73319ab3616" - integrity sha512-NiFm5FMaeDGZ9ojBL+Y9Y/xhW6S4Fgez+zPBM402T5kLsfeAR9mrRVckYhvkGVJ6FMwsY820CLjYP5OVwMjLTg== - dependencies: - "@ethereumjs/block" "^3.6.1" - "@ethereumjs/blockchain" "^5.5.1" - "@ethereumjs/common" "^2.6.2" - "@ethereumjs/tx" "^3.5.0" - async-eventemitter "^0.2.4" - core-js-pure "^3.0.1" - debug "^4.3.3" - ethereumjs-util "^7.1.4" - functional-red-black-tree "^1.0.1" - mcl-wasm "^0.7.1" - merkle-patricia-tree "^4.2.3" - rustbn.js "~0.2.0" - "@ethersproject/abi@5.0.0-beta.153": version "5.0.0-beta.153" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" @@ -170,6 +137,21 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/abstract-provider@5.5.1", "@ethersproject/abstract-provider@^5.5.0": version "5.5.1" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5" @@ -183,6 +165,19 @@ "@ethersproject/transactions" "^5.5.0" "@ethersproject/web" "^5.5.0" +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + "@ethersproject/abstract-signer@5.5.0", "@ethersproject/abstract-signer@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d" @@ -194,6 +189,17 @@ "@ethersproject/logger" "^5.5.0" "@ethersproject/properties" "^5.5.0" +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/address@5.5.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.5.0.tgz#bcc6f576a553f21f3dd7ba17248f81b473c9c78f" @@ -205,6 +211,17 @@ "@ethersproject/logger" "^5.5.0" "@ethersproject/rlp" "^5.5.0" +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/base64@5.5.0", "@ethersproject/base64@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.5.0.tgz#881e8544e47ed976930836986e5eb8fab259c090" @@ -212,6 +229,13 @@ dependencies: "@ethersproject/bytes" "^5.5.0" +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/basex@5.5.0", "@ethersproject/basex@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.5.0.tgz#e40a53ae6d6b09ab4d977bd037010d4bed21b4d3" @@ -220,6 +244,14 @@ "@ethersproject/bytes" "^5.5.0" "@ethersproject/properties" "^5.5.0" +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/bignumber@5.5.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.5.0.tgz#875b143f04a216f4f8b96245bde942d42d279527" @@ -229,6 +261,15 @@ "@ethersproject/logger" "^5.5.0" bn.js "^4.11.9" +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + "@ethersproject/bytes@5.5.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.5.0.tgz#cb11c526de657e7b45d2e0f0246fb3b9d29a601c" @@ -236,6 +277,13 @@ dependencies: "@ethersproject/logger" "^5.5.0" +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/constants@5.5.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e" @@ -243,6 +291,13 @@ dependencies: "@ethersproject/bignumber" "^5.5.0" +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/contracts@5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.5.0.tgz#b735260d4bd61283a670a82d5275e2a38892c197" @@ -259,6 +314,22 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/transactions" "^5.5.0" +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/hash@5.5.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.5.0.tgz#7cee76d08f88d1873574c849e0207dcb32380cc9" @@ -273,6 +344,21 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/hdnode@5.5.0", "@ethersproject/hdnode@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.5.0.tgz#4a04e28f41c546f7c978528ea1575206a200ddf6" @@ -291,6 +377,24 @@ "@ethersproject/transactions" "^5.5.0" "@ethersproject/wordlists" "^5.5.0" +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/json-wallets@5.5.0", "@ethersproject/json-wallets@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz#dd522d4297e15bccc8e1427d247ec8376b60e325" @@ -310,6 +414,25 @@ aes-js "3.0.0" scrypt-js "3.0.1" +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + "@ethersproject/keccak256@5.5.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.5.0.tgz#e4b1f9d7701da87c564ffe336f86dcee82983492" @@ -318,11 +441,24 @@ "@ethersproject/bytes" "^5.5.0" js-sha3 "0.8.0" +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + "@ethersproject/logger@5.5.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d" integrity sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg== +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + "@ethersproject/networks@5.5.2", "@ethersproject/networks@^5.5.0": version "5.5.2" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.2.tgz#784c8b1283cd2a931114ab428dae1bd00c07630b" @@ -330,6 +466,13 @@ dependencies: "@ethersproject/logger" "^5.5.0" +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2@5.5.0", "@ethersproject/pbkdf2@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz#e25032cdf02f31505d47afbf9c3e000d95c4a050" @@ -338,6 +481,14 @@ "@ethersproject/bytes" "^5.5.0" "@ethersproject/sha2" "^5.5.0" +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/properties@5.5.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.5.0.tgz#61f00f2bb83376d2071baab02245f92070c59995" @@ -345,6 +496,13 @@ dependencies: "@ethersproject/logger" "^5.5.0" +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/providers@5.5.3": version "5.5.3" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.3.tgz#56c2b070542ac44eb5de2ed3cf6784acd60a3130" @@ -370,6 +528,32 @@ bech32 "1.1.4" ws "7.4.6" +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.1", "@ethersproject/providers@^5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + "@ethersproject/random@5.5.1", "@ethersproject/random@^5.5.0": version "5.5.1" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.5.1.tgz#7cdf38ea93dc0b1ed1d8e480ccdaf3535c555415" @@ -378,6 +562,14 @@ "@ethersproject/bytes" "^5.5.0" "@ethersproject/logger" "^5.5.0" +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp@5.5.0", "@ethersproject/rlp@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.5.0.tgz#530f4f608f9ca9d4f89c24ab95db58ab56ab99a0" @@ -386,6 +578,14 @@ "@ethersproject/bytes" "^5.5.0" "@ethersproject/logger" "^5.5.0" +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2@5.5.0", "@ethersproject/sha2@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.5.0.tgz#a40a054c61f98fd9eee99af2c3cc6ff57ec24db7" @@ -395,6 +595,15 @@ "@ethersproject/logger" "^5.5.0" hash.js "1.1.7" +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + "@ethersproject/signing-key@5.5.0", "@ethersproject/signing-key@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.5.0.tgz#2aa37169ce7e01e3e80f2c14325f624c29cedbe0" @@ -407,6 +616,18 @@ elliptic "6.5.4" hash.js "1.1.7" +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + "@ethersproject/solidity@5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.5.0.tgz#2662eb3e5da471b85a20531e420054278362f93f" @@ -419,6 +640,18 @@ "@ethersproject/sha2" "^5.5.0" "@ethersproject/strings" "^5.5.0" +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/strings@5.5.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.5.0.tgz#e6784d00ec6c57710755699003bc747e98c5d549" @@ -428,6 +661,15 @@ "@ethersproject/constants" "^5.5.0" "@ethersproject/logger" "^5.5.0" +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/transactions@5.5.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908" @@ -443,6 +685,21 @@ "@ethersproject/rlp" "^5.5.0" "@ethersproject/signing-key" "^5.5.0" +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/units@5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.5.0.tgz#104d02db5b5dc42cc672cc4587bafb87a95ee45e" @@ -452,6 +709,15 @@ "@ethersproject/constants" "^5.5.0" "@ethersproject/logger" "^5.5.0" +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/wallet@5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.5.0.tgz#322a10527a440ece593980dca6182f17d54eae75" @@ -473,6 +739,27 @@ "@ethersproject/transactions" "^5.5.0" "@ethersproject/wordlists" "^5.5.0" +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/web@5.5.1", "@ethersproject/web@^5.5.0": version "5.5.1" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.1.tgz#cfcc4a074a6936c657878ac58917a61341681316" @@ -484,6 +771,17 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/wordlists@5.5.0", "@ethersproject/wordlists@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.5.0.tgz#aac74963aa43e643638e5172353d931b347d584f" @@ -495,6 +793,17 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@metamask/eth-sig-util@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.0.tgz#11553ba06de0d1352332c1bde28c8edd00e0dcf6" @@ -506,6 +815,216 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + 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/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nomicfoundation/ethereumjs-block@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz#6f89664f55febbd723195b6d0974773d29ee133d" + integrity sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + +"@nomicfoundation/ethereumjs-blockchain@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz#80e0bd3535bfeb9baa29836b6f25123dab06a726" + integrity sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-ethash" "3.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + abstract-level "^1.0.3" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + level "^8.0.0" + lru-cache "^5.1.1" + memory-level "^1.0.0" + +"@nomicfoundation/ethereumjs-common@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz#4702d82df35b07b5407583b54a45bf728e46a2f0" + integrity sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g== + dependencies: + "@nomicfoundation/ethereumjs-util" "9.0.1" + crc-32 "^1.2.0" + +"@nomicfoundation/ethereumjs-ethash@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz#65ca494d53e71e8415c9a49ef48bc921c538fc41" + integrity sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + abstract-level "^1.0.3" + bigint-crypto-utils "^3.0.23" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-evm@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz#f35681e203363f69ce2b3d3bf9f44d4e883ca1f1" + integrity sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ== + dependencies: + "@ethersproject/providers" "^5.7.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/ethereumjs-rlp@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz#0b30c1cf77d125d390408e391c4bb5291ef43c28" + integrity sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ== + +"@nomicfoundation/ethereumjs-statemanager@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz#8824a97938db4471911e2d2f140f79195def5935" + integrity sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + js-sdsl "^4.1.4" + +"@nomicfoundation/ethereumjs-trie@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz#662c55f6b50659fd4b22ea9f806a7401cafb7717" + integrity sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + "@types/readable-stream" "^2.3.13" + ethereum-cryptography "0.1.3" + readable-stream "^3.6.0" + +"@nomicfoundation/ethereumjs-tx@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz#7629dc2036b4a33c34e9f0a592b43227ef4f0c7d" + integrity sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w== + dependencies: + "@chainsafe/ssz" "^0.9.2" + "@ethersproject/providers" "^5.7.2" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-util@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz#530cda8bae33f8b5020a8f199ed1d0a2ce48ec89" + integrity sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA== + dependencies: + "@chainsafe/ssz" "^0.10.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-vm@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz#7d035e0993bcad10716c8b36e61dfb87fa3ca05f" + integrity sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-blockchain" "7.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-evm" "2.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-statemanager" "2.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15" + integrity sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz#6e25ccdf6e2d22389c35553b64fe6f3fdaec432c" + integrity sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA== + +"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz#0a224ea50317139caeebcdedd435c28a039d169c" + integrity sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz#dfa085d9ffab9efb2e7b383aed3f557f7687ac2b" + integrity sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz#c9e06b5d513dd3ab02a7ac069c160051675889a4" + integrity sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz#8d328d16839e52571f72f2998c81e46bf320f893" + integrity sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz#9b49d0634b5976bb5ed1604a1e1b736f390959bb" + integrity sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w== + +"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz#e2867af7264ebbcc3131ef837878955dd6a3676f" + integrity sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg== + +"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz#0685f78608dd516c8cdfb4896ed451317e559585" + integrity sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz#c9a44f7108646f083b82e851486e0f6aeb785836" + integrity sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw== + +"@nomicfoundation/solidity-analyzer@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz#f5f4d36d3f66752f59a57e7208cd856f3ddf6f2d" + integrity sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.1" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" + "@nomiclabs/hardhat-ethers@^2.0.5": version "2.0.5" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.5.tgz#131b0da1b71680d5a01569f916ae878229d326d3" @@ -556,6 +1075,28 @@ path-browserify "^1.0.0" url "^0.11.0" +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + "@sentry/core@5.30.0": version "5.30.0" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" @@ -629,13 +1170,6 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@solidity-parser/parser@^0.14.1": - version "0.14.1" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.1.tgz#179afb29f4e295a77cc141151f26b3848abc3c46" - integrity sha512-eLjj2L6AuQjBB6s/ibwCAc0DwrR5Ge+ys+wgWo+bviU7fV2nTMQhU63CGaDKXg9iTmMxwhkyoggdIR7ZGRfMgw== - dependencies: - antlr4ts "^0.5.0-alpha.4" - "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" @@ -657,11 +1191,6 @@ dependencies: fs-extra "^9.1.0" -"@types/abstract-leveldown@*": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#f055979a99f7654e84d6b8e6267419e9c4cfff87" - integrity sha512-q5veSX6zjUy/DlDhR4Y4cU0k2Ar+DT2LUraP00T19WLmTO6Se1djepCCaqU6nQrwcJ5Hyo/CWqxTzrrFg8eqbQ== - "@types/bn.js@*", "@types/bn.js@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" @@ -681,20 +1210,6 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.0.tgz#23509ebc1fa32f1b4d50d6a66c4032d5b8eaabdc" integrity sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw== -"@types/level-errors@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/level-errors/-/level-errors-3.0.0.tgz#15c1f4915a5ef763b51651b15e90f6dc081b96a8" - integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== - -"@types/levelup@^4.3.0": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.3.tgz#4dc2b77db079b1cf855562ad52321aa4241b8ef4" - integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== - dependencies: - "@types/abstract-leveldown" "*" - "@types/level-errors" "*" - "@types/node" "*" - "@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" @@ -737,6 +1252,14 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== +"@types/readable-stream@^2.3.13": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" + integrity sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ== + dependencies: + "@types/node" "*" + safe-buffer "~5.1.1" + "@types/resolve@^0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" @@ -784,11 +1307,6 @@ "@types/bn.js" "*" "@types/underscore" "*" -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -801,6 +1319,19 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" +abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" + integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + abstract-leveldown@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz#5cb89f958a44f526779d740d1440e743e0c30a57" @@ -822,17 +1353,6 @@ abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: dependencies: xtend "~4.0.0" -abstract-leveldown@^6.2.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" - integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - abstract-leveldown@~2.6.0: version "2.6.3" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" @@ -840,17 +1360,6 @@ abstract-leveldown@~2.6.0: dependencies: xtend "~4.0.0" -abstract-leveldown@~6.2.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" - integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -940,11 +1449,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -antlr4ts@^0.5.0-alpha.4: - version "0.5.0-alpha.4" - resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" - integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== - anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -1029,7 +1533,7 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: +async-eventemitter@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== @@ -1653,6 +2157,11 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +bigint-crypto-utils@^3.0.23: + version "3.2.2" + resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.2.2.tgz#e30a49ec38357c6981cd3da5aaa6480b1f752ee4" + integrity sha512-U1RbE3aX9ayCUVcIPHuPDPKcK3SFOXf93J1UK/iHlJuQB7bhagPIX06/CLpLEsDThJ7KA4Dhrnzynl+d2weTiw== + bignumber.js@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" @@ -1699,6 +2208,11 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + body-parser@1.19.2, body-parser@^1.16.0: version "1.19.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" @@ -1723,6 +2237,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -1751,6 +2272,16 @@ brorand@^1.0.1, brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -1864,6 +2395,14 @@ buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + bufferutil@^4.0.1: version "4.0.6" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" @@ -1871,6 +2410,13 @@ bufferutil@^4.0.1: dependencies: node-gyp-build "^4.3.0" +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -1950,11 +2496,21 @@ caniuse-lite@^1.0.30000844: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001313.tgz#a380b079db91621e1b7120895874e2fd62ed2e2f" integrity sha512-rI1UN0koZUiKINjysQDuRi2VeSCce3bYJNmDcj3PIKREiAmjakugBul1QSkg/fPrlULYl6oWfGg3PbgOSY9X4Q== +case@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" + integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + chai@^4.3.6: version "4.3.6" resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" @@ -2067,6 +2623,17 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classic-level@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8" + integrity sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -2365,13 +2932,20 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@4, debug@4.3.3, debug@^4.1.1, debug@^4.3.3: +debug@4, debug@^4.1.1, debug@^4.3.3: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" +debug@4.3.4: + 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" + debug@^3.1.0: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -2440,14 +3014,6 @@ deferred-leveldown@~4.0.0: abstract-leveldown "~5.0.0" inherits "^2.0.3" -deferred-leveldown@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" - integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== - dependencies: - abstract-leveldown "~6.2.1" - inherits "^2.0.3" - define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -2600,16 +3166,6 @@ encoding-down@5.0.4, encoding-down@~5.0.0: level-errors "^2.0.0" xtend "^4.0.1" -encoding-down@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" - integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== - dependencies: - abstract-leveldown "^6.2.1" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - encoding@^0.1.11: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -2883,7 +3439,7 @@ ethereum-common@^0.0.18: resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= -ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: +ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== @@ -2904,6 +3460,16 @@ ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + ethereum-waffle@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz#990b3c6c26db9c2dd943bf26750a496f60c04720" @@ -3057,7 +3623,7 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.4: +ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0: version "7.1.4" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== @@ -3121,7 +3687,7 @@ ethereumjs-wallet@0.6.5: utf8 "^3.0.0" uuid "^3.3.2" -ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2, ethers@^5.5.4: +ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2: version "5.5.4" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.4.tgz#e1155b73376a2f5da448e4a33351b57a885f4352" integrity sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw== @@ -3157,6 +3723,42 @@ ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2, ethers@^5.5.4: "@ethersproject/web" "5.5.1" "@ethersproject/wordlists" "5.5.0" +ethers@^5.7.1, ethers@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -3718,11 +4320,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -3736,20 +4333,25 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" -hardhat@^2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.1.tgz#f69f82bb4d98e28744584779483caa7c5cfbde8b" - integrity sha512-q0AkYXV7R26RzyAkHGQRhhQjk508pseVvH3wSwZwwPUbvA+tjl0vMIrD4aFQDonRXkrnXX4+5KglozzjSd0//Q== +hardhat@^2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.14.0.tgz#b60c74861494aeb1b50803cf04cc47865a42b87a" + integrity sha512-73jsInY4zZahMSVFurSK+5TNCJTXMv+vemvGia0Ac34Mm19fYp6vEPVGF3sucbumszsYxiTT2TbS8Ii2dsDSoQ== dependencies: - "@ethereumjs/block" "^3.6.0" - "@ethereumjs/blockchain" "^5.5.0" - "@ethereumjs/common" "^2.6.0" - "@ethereumjs/tx" "^3.4.0" - "@ethereumjs/vm" "^5.6.0" "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-blockchain" "7.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-evm" "2.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-statemanager" "2.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + "@nomicfoundation/ethereumjs-vm" "7.0.1" + "@nomicfoundation/solidity-analyzer" "^0.1.0" "@sentry/node" "^5.18.1" - "@solidity-parser/parser" "^0.14.1" "@types/bn.js" "^5.1.0" "@types/lru-cache" "^5.1.0" abort-controller "^3.0.0" @@ -3762,31 +4364,28 @@ hardhat@^2.9.1: debug "^4.1.1" enquirer "^2.3.0" env-paths "^2.2.0" - ethereum-cryptography "^0.1.2" + ethereum-cryptography "^1.0.3" ethereumjs-abi "^0.6.8" - ethereumjs-util "^7.1.3" find-up "^2.1.0" fp-ts "1.19.3" fs-extra "^7.0.1" - glob "^7.1.3" + glob "7.2.0" immutable "^4.0.0-rc.12" io-ts "1.10.4" + keccak "^3.0.2" lodash "^4.17.11" - merkle-patricia-tree "^4.2.2" mnemonist "^0.38.0" - mocha "^9.2.0" + mocha "^10.0.0" p-map "^4.0.0" qs "^6.7.0" raw-body "^2.4.1" resolve "1.17.0" semver "^6.3.0" - slash "^3.0.0" solc "0.7.3" source-map-support "^0.5.13" stacktrace-parser "^0.1.10" - "true-case-path" "^2.2.1" tsort "0.0.1" - undici "^4.14.1" + undici "^5.14.0" uuid "^8.3.2" ws "^7.4.6" @@ -3993,7 +4592,7 @@ idna-uts46-hx@^2.3.1: dependencies: punycode "2.1.0" -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -4118,6 +4717,11 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" @@ -4399,6 +5003,11 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" +js-sdsl@^4.1.4: + version "4.4.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" + integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== + js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -4552,6 +5161,15 @@ keccak@^3.0.0: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keccak@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -4616,11 +5234,6 @@ level-codec@~7.0.0: resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== -level-concat-iterator@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" - integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== - level-errors@^1.0.3: version "1.1.2" resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" @@ -4670,15 +5283,6 @@ level-iterator-stream@~3.0.0: readable-stream "^2.3.6" xtend "^4.0.0" -level-iterator-stream@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" - integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== - dependencies: - inherits "^2.0.4" - readable-stream "^3.4.0" - xtend "^4.0.2" - level-mem@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-3.0.1.tgz#7ce8cf256eac40f716eb6489654726247f5a89e5" @@ -4687,22 +5291,6 @@ level-mem@^3.0.1: level-packager "~4.0.0" memdown "~3.0.0" -level-mem@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-5.0.1.tgz#c345126b74f5b8aa376dc77d36813a177ef8251d" - integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== - dependencies: - level-packager "^5.0.3" - memdown "^5.0.0" - -level-packager@^5.0.3: - version "5.1.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" - integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== - dependencies: - encoding-down "^6.3.0" - levelup "^4.3.2" - level-packager@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-4.0.1.tgz#7e7d3016af005be0869bc5fa8de93d2a7f56ffe6" @@ -4734,12 +5322,18 @@ level-sublevel@6.6.4: typewiselite "~1.0.0" xtend "~4.0.0" -level-supports@~1.0.0: +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" - integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== dependencies: - xtend "^4.0.2" + buffer "^6.0.3" + module-error "^1.0.1" level-ws@0.0.0: version "0.0.0" @@ -4758,14 +5352,13 @@ level-ws@^1.0.0: readable-stream "^2.2.8" xtend "^4.0.1" -level-ws@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339" - integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== +level@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" + integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== dependencies: - inherits "^2.0.3" - readable-stream "^3.1.0" - xtend "^4.0.1" + browser-level "^1.0.1" + classic-level "^1.2.0" levelup@3.1.1, levelup@^3.0.0: version "3.1.1" @@ -4790,17 +5383,6 @@ levelup@^1.2.1: semver "~5.4.1" xtend "~4.0.0" -levelup@^4.3.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" - integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== - dependencies: - deferred-leveldown "~5.3.0" - level-errors "~2.0.0" - level-iterator-stream "~4.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -4956,18 +5538,6 @@ memdown@^1.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" -memdown@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb" - integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== - dependencies: - abstract-leveldown "~6.2.1" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.2.0" - memdown@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" @@ -4980,6 +5550,15 @@ memdown@~3.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" +memory-level@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" + integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== + dependencies: + abstract-level "^1.0.0" + functional-red-black-tree "^1.0.1" + module-error "^1.0.1" + memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -5017,18 +5596,6 @@ merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: rlp "^2.0.0" semaphore ">=1.0.1" -merkle-patricia-tree@^4.2.2, merkle-patricia-tree@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.3.tgz#b4e5d485d231f02b255ed79a7852f9d12ee0c09f" - integrity sha512-S4xevdXl5KvdBGgUxhQcxoep0onqXiIhzfwZp4M78kIuJH3Pu9o9IUgqhzSFOR2ykLO6t265026Xb6PY0q2UFQ== - dependencies: - "@types/levelup" "^4.3.0" - ethereumjs-util "^7.1.4" - level-mem "^5.0.1" - level-ws "^2.0.0" - readable-stream "^3.6.0" - semaphore-async-await "^1.5.1" - methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -5108,12 +5675,12 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: - brace-expansion "^1.1.7" + brace-expansion "^2.0.1" minimatch@^3.0.4: version "3.1.2" @@ -5176,32 +5743,29 @@ mnemonist@^0.38.0: dependencies: obliterator "^2.0.0" -mocha@^9.2.0: - version "9.2.1" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.1.tgz#a1abb675aa9a8490798503af57e8782a78f1338e" - integrity sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ== +mocha@^10.0.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== dependencies: - "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" chokidar "3.5.3" - debug "4.3.3" + debug "4.3.4" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" glob "7.2.0" - growl "1.10.5" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" - minimatch "3.0.4" + minimatch "5.0.1" ms "2.1.3" - nanoid "3.2.0" + nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" + workerpool "6.2.1" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -5211,6 +5775,11 @@ mock-fs@^4.1.0: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5271,10 +5840,10 @@ nano-json-stream-parser@^0.1.2: resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= -nanoid@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" - integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== nanomatch@^1.2.9: version "1.2.13" @@ -5293,6 +5862,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -5918,6 +6492,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +queue-microtask@^1.2.2, queue-microtask@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -5998,7 +6577,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.0.6, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -6205,6 +6784,13 @@ rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: dependencies: bn.js "^5.2.0" +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + rustbn.js@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" @@ -6265,11 +6851,6 @@ seedrandom@3.0.1: resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== -semaphore-async-await@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" - integrity sha1-hXvvXjZEYBykuVcLh+nfXKEpdPo= - semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" @@ -6420,11 +7001,6 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -6625,6 +7201,11 @@ stream-to-pull-stream@^1.7.1: looper "^3.0.0" pull-stream "^3.2.3" +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -6917,11 +7498,6 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -"true-case-path@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" - integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== - ts-essentials@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" @@ -7079,10 +7655,12 @@ underscore@1.9.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -undici@^4.14.1: - version "4.15.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-4.15.0.tgz#507ec94bce46bec5c76e934938c50b825eda8258" - integrity sha512-kHppwh/y49FLEXl/zYCCbGB0D3nrcWNBczNYCsDdNYzWPs80aQgfKic1PVkJEIc2YlR7m0Lf5i559zbr0AA7FQ== +undici@^5.14.0: + version "5.22.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.1.tgz#877d512effef2ac8be65e695f3586922e1a57d7b" + integrity sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw== + dependencies: + busboy "^1.6.0" union-value@^1.0.0: version "1.0.1" @@ -7582,13 +8160,6 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= -which@2.0.2: - 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" - which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -7601,10 +8172,10 @@ window-size@^0.2.0: resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== wrap-ansi@^2.0.0: version "2.1.0" @@ -7691,7 +8262,7 @@ xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: parse-headers "^2.0.0" xtend "^4.0.0" -xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== diff --git a/e2e-tests/fork-based/transactions.spec.ts b/e2e-tests/fork-based/transactions.spec.ts index fb314368dc..1de5aec5bb 100644 --- a/e2e-tests/fork-based/transactions.spec.ts +++ b/e2e-tests/fork-based/transactions.spec.ts @@ -24,7 +24,7 @@ test.describe("Transactions", () => { await walletPageHelper.assertCommonElements( /^Ethereum$/, false, - account2.name + account2.name, ) await walletPageHelper.assertAnalyticsBanner() @@ -55,7 +55,7 @@ test.describe("Transactions", () => { account2.name, "ETH", "0\\.1021", - true + true, ) /** @@ -63,11 +63,11 @@ test.describe("Transactions", () => { */ await popup.locator("input.input_amount").fill("0.01") await expect( - popup.locator(".value").getByText(/^\$\d+\.\d{2}$/) + popup.locator(".value").getByText(/^\$\d+\.\d{2}$/), ).toBeVisible() await expect( - popup.getByRole("button", { name: "Continue", exact: true }) + popup.getByRole("button", { name: "Continue", exact: true }), ).toHaveClass(/disabled/) // We can't use `toBeDisabled`, as the element doesn't have `disabled` attribute. await popup .getByRole("button", { name: "Continue", exact: true }) @@ -93,7 +93,7 @@ test.describe("Transactions", () => { "0x4774…875a6", "0\\.01", "ETH", - true + true, ) /** @@ -106,76 +106,73 @@ test.describe("Transactions", () => { * and there is no "Transaction failed to broadcast" snackbar visible. */ await expect( - popup.getByText("Transaction signed, broadcasting...").first() + popup.getByText("Transaction signed, broadcasting...").first(), ).toBeVisible() // we need to use `.first()` because sometimes Playwright catches 2 elements matching that copy await expect( - popup.getByText("Transaction failed to broadcast.") + popup.getByText("Transaction failed to broadcast."), ).toHaveCount(0) }) - await test.step( - "Verify asset activity screen and transaction status", - async () => { - /** - * Verify elements on the asset activity screen - */ - await assetsHelper.assertAssetDetailsPage( - /^Ethereum$/, - account2.name, - /^ETH$/, - /^0\.0914$/, - "base" - ) - // This is what we expect currently on forked network. If ve ever fix - // displaying activity on fork, we should perform following checks - // instead: - // Find latest transaction item, check if there is a "Send" status and - // click on the item. - // Wait for panel to load. - // Check if block height is defined. - // Check if amount is the same as you sent. - // Check (maybe?) nonce value timestamp and gas (21k). - // Open scan website from the link in the header. (optional) - // Compare values from the scan website and extension. (optional) - await expect( - popup - .getByText( - `Taho will populate your historical activity over time; this may + await test.step("Verify asset activity screen and transaction status", async () => { + /** + * Verify elements on the asset activity screen + */ + await assetsHelper.assertAssetDetailsPage( + /^Ethereum$/, + account2.name, + /^ETH$/, + /^0\.0914$/, + "base", + ) + // This is what we expect currently on forked network. If ve ever fix + // displaying activity on fork, we should perform following checks + // instead: + // Find latest transaction item, check if there is a "Send" status and + // click on the item. + // Wait for panel to load. + // Check if block height is defined. + // Check if amount is the same as you sent. + // Check (maybe?) nonce value timestamp and gas (21k). + // Open scan website from the link in the header. (optional) + // Compare values from the scan website and extension. (optional) + await expect( + popup + .getByText( + `Taho will populate your historical activity over time; this may take an hour or more for accounts that have been active for a long - time. For new accounts, new activity will show up here.` - ) - .first() - ).toBeVisible() - - /** - * Navifgate to `Wallet` -> `Activity` - */ - await popup.getByText("Wallet", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `link` - await popup.getByText("Activity", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `tab` - - /** - * Verify elements on the activity screen - */ - // TODO: If we ever fix displaying asset activity on fork, we should - // repeat the checks of tx details here. - await expect( - popup - .getByText( - `Taho will populate your historical activity over time; this may + time. For new accounts, new activity will show up here.`, + ) + .first(), + ).toBeVisible() + + /** + * Navifgate to `Wallet` -> `Activity` + */ + await popup.getByText("Wallet", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `link` + await popup.getByText("Activity", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `tab` + + /** + * Verify elements on the activity screen + */ + // TODO: If we ever fix displaying asset activity on fork, we should + // repeat the checks of tx details here. + await expect( + popup + .getByText( + `Taho will populate your historical activity over time; this may take an hour or more for accounts that have been active for a long - time. For new accounts, new activity will show up here.` - ) - .first() - ).toBeVisible() - - await walletPageHelper.assertCommonElements( - /^Ethereum$/, - false, - account2.name - ) - await walletPageHelper.assertAnalyticsBanner() - } - ) + time. For new accounts, new activity will show up here.`, + ) + .first(), + ).toBeVisible() + + await walletPageHelper.assertCommonElements( + /^Ethereum$/, + false, + account2.name, + ) + await walletPageHelper.assertAnalyticsBanner() + }) }) test("User can open ERC-20 transfer from asset list and can reject the transfer", async ({ @@ -200,7 +197,7 @@ test.describe("Transactions", () => { await walletPageHelper.assertCommonElements( /^Ethereum$/, false, - account2.name + account2.name, ) await walletPageHelper.assertAnalyticsBanner() @@ -236,7 +233,7 @@ test.describe("Transactions", () => { account2.name, "KEEP", "65\\.88", - false + false, ) /** @@ -244,11 +241,11 @@ test.describe("Transactions", () => { */ await popup.getByPlaceholder(/^0\.0$/).fill("1.257") await expect( - popup.locator(".value").getByText(/^\$\d+\.\d{2}$/) + popup.locator(".value").getByText(/^\$\d+\.\d{2}$/), ).toBeVisible() await expect( - popup.getByRole("button", { name: "Continue", exact: true }) + popup.getByRole("button", { name: "Continue", exact: true }), ).toHaveClass(/disabled/) // We can't use `toBeDisabled`, as the element doesn't have `disabled` attribute. await popup .getByRole("button", { name: "Continue", exact: true }) @@ -274,7 +271,7 @@ test.describe("Transactions", () => { "0x4774…875a6", "1\\.25", "KEEP", - false + false, ) /** @@ -287,10 +284,10 @@ test.describe("Transactions", () => { * "Transaction failed to broadcast" snackbar visible. */ await expect( - popup.getByText("Transaction signed, broadcasting...") + popup.getByText("Transaction signed, broadcasting..."), ).toHaveCount(0) await expect( - popup.getByText("Transaction failed to broadcast.") + popup.getByText("Transaction failed to broadcast."), ).toHaveCount(0) }) @@ -304,7 +301,7 @@ test.describe("Transactions", () => { /^KEEP$/, /^65\.88$/, "knownERC20", - "https://etherscan.io/token/0x85eee30c52b0b379b046fb0f85f4f3dc3009afec" + "https://etherscan.io/token/0x85eee30c52b0b379b046fb0f85f4f3dc3009afec", ) // This is what we expect currently on a forked network. await expect( @@ -312,9 +309,9 @@ test.describe("Transactions", () => { .getByText( `Taho will populate your historical activity over time; this may take an hour or more for accounts that have been active for a long - time. For new accounts, new activity will show up here.` + time. For new accounts, new activity will show up here.`, ) - .first() + .first(), ).toBeVisible() }) }) @@ -341,7 +338,7 @@ test.describe("Transactions", () => { await walletPageHelper.assertCommonElements( /^Ethereum$/, false, - account2.name + account2.name, ) await walletPageHelper.assertAnalyticsBanner() @@ -377,7 +374,7 @@ test.describe("Transactions", () => { account2.name, "ETH", "\\d+\\.\\d{4}", - true + true, ) /** @@ -403,7 +400,7 @@ test.describe("Transactions", () => { .locator(".token_group") .filter({ has: popup.locator("div").filter({ hasText: /^KEEP$/ }) }) await expect( - keepToken.getByText(/^(KeepToken|Keep Network( Token)?)$/) + keepToken.getByText(/^(KeepToken|Keep Network( Token)?)$/), ).toBeVisible() await expect(keepToken.getByText(/^65\.88$/)).toBeVisible() await expect(keepToken.locator(".icon")).toBeVisible() @@ -414,7 +411,7 @@ test.describe("Transactions", () => { */ await popup.getByPlaceholder("Search by name or address").fill("keep") await expect( - keepToken.getByText(/^(KeepToken|Keep Network( Token)?)$/) + keepToken.getByText(/^(KeepToken|Keep Network( Token)?)$/), ).toBeVisible() await expect(keepToken.getByText(/^65\.88$/)).toBeVisible() await expect(keepToken.locator(".icon")).toBeVisible() @@ -435,7 +432,7 @@ test.describe("Transactions", () => { account2.name, "KEEP", "65\\.88", - false + false, ) /** @@ -443,11 +440,11 @@ test.describe("Transactions", () => { */ await popup.getByPlaceholder(/^0\.0$/).fill("12.3456") await expect( - popup.locator(".value").getByText(/^\$\d+\.\d{2}$/) + popup.locator(".value").getByText(/^\$\d+\.\d{2}$/), ).toBeVisible() await expect( - popup.getByRole("button", { name: "Continue", exact: true }) + popup.getByRole("button", { name: "Continue", exact: true }), ).toHaveClass(/disabled/) // We can't use `toBeDisabled`, as the element doesn't have `disabled` attribute. await popup .getByRole("button", { name: "Continue", exact: true }) @@ -473,7 +470,7 @@ test.describe("Transactions", () => { "0x4774…875a6", "12\\.34", "KEEP", - false + false, ) /** @@ -486,76 +483,73 @@ test.describe("Transactions", () => { * and there is no "Transaction failed to broadcast" snackbar visible. */ await expect( - popup.getByText("Transaction signed, broadcasting...").first() + popup.getByText("Transaction signed, broadcasting...").first(), ).toBeVisible() // we need to use `.first()` because sometimes Playwright catches 2 elements matching that copy await expect( - popup.getByText("Transaction failed to broadcast.") + popup.getByText("Transaction failed to broadcast."), ).toHaveCount(0) }) - await test.step( - "Verify asset activity screen and transaction status", - async () => { - /** - * Verify elements on the asset activity screen - */ - await assetsHelper.assertAssetDetailsPage( - /^Ethereum$/, - account2.name, - /^KEEP$/, - /^53\.54$/, - "knownERC20", - "https://etherscan.io/token/0x85eee30c52b0b379b046fb0f85f4f3dc3009afec" - ) - // This is what we expect currently on forked network. If ve ever fix - // displaying activity on fork, we should perform following checks - // instead: - // Find latest transaction item, check if there is a "Send" status and - // click on the item. - // Wait for panel to load. - // Check if block height is defined. - // Check if amount is the same as you sent. - // Check (maybe?) nonce value timestamp and gas (21k). - // Open scan website from the link in the header. (optional) - // Compare values from the scan website and extension. (optional) - await expect( - popup - .getByText( - `Taho will populate your historical activity over time; this may + await test.step("Verify asset activity screen and transaction status", async () => { + /** + * Verify elements on the asset activity screen + */ + await assetsHelper.assertAssetDetailsPage( + /^Ethereum$/, + account2.name, + /^KEEP$/, + /^53\.54$/, + "knownERC20", + "https://etherscan.io/token/0x85eee30c52b0b379b046fb0f85f4f3dc3009afec", + ) + // This is what we expect currently on forked network. If ve ever fix + // displaying activity on fork, we should perform following checks + // instead: + // Find latest transaction item, check if there is a "Send" status and + // click on the item. + // Wait for panel to load. + // Check if block height is defined. + // Check if amount is the same as you sent. + // Check (maybe?) nonce value timestamp and gas (21k). + // Open scan website from the link in the header. (optional) + // Compare values from the scan website and extension. (optional) + await expect( + popup + .getByText( + `Taho will populate your historical activity over time; this may take an hour or more for accounts that have been active for a long - time. For new accounts, new activity will show up here.` - ) - .first() - ).toBeVisible() - - /** - * Navifgate to `Wallet` -> `Activity` - */ - await popup.getByText("Wallet", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `link` - await popup.getByText("Activity", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `tab` - - /** - * Verify elements on the activity screen - */ - // TODO: If we ever fix displaying asset activity on fork, we should - // repeat the checks of tx details here. - await expect( - popup - .getByText( - `Taho will populate your historical activity over time; this may + time. For new accounts, new activity will show up here.`, + ) + .first(), + ).toBeVisible() + + /** + * Navifgate to `Wallet` -> `Activity` + */ + await popup.getByText("Wallet", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `link` + await popup.getByText("Activity", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `tab` + + /** + * Verify elements on the activity screen + */ + // TODO: If we ever fix displaying asset activity on fork, we should + // repeat the checks of tx details here. + await expect( + popup + .getByText( + `Taho will populate your historical activity over time; this may take an hour or more for accounts that have been active for a long - time. For new accounts, new activity will show up here.` - ) - .first() - ).toBeVisible() - - await walletPageHelper.assertCommonElements( - /^Ethereum$/, - false, - account2.name - ) - await walletPageHelper.assertAnalyticsBanner() - } - ) + time. For new accounts, new activity will show up here.`, + ) + .first(), + ).toBeVisible() + + await walletPageHelper.assertCommonElements( + /^Ethereum$/, + false, + account2.name, + ) + await walletPageHelper.assertAnalyticsBanner() + }) }) }) diff --git a/e2e-tests/regular/nfts.spec.ts b/e2e-tests/regular/nfts.spec.ts index c69422d131..9f6496ba0f 100644 --- a/e2e-tests/regular/nfts.spec.ts +++ b/e2e-tests/regular/nfts.spec.ts @@ -175,9 +175,8 @@ test.describe("NFTs", () => { .click() }) - const collectionItem = await test.step( - "Check collection expands", - async () => { + const collectionItem = + await test.step("Check collection expands", async () => { const nftCollection = page .getByTestId("nft_list_item") .filter({ has: page.getByTestId("nft_list_item_collection") }) @@ -188,14 +187,13 @@ test.describe("NFTs", () => { await nftCollection.getByTestId("expand").click() const collectionItems = nftCollection.getByTestId( - "nft_list_item_single" + "nft_list_item_single", ) expect((await collectionItems.all()).length).toBeGreaterThan(1) return collectionItems.filter({ hasText: /2152/ }) - } - ) + }) // Check Details await test.step("Check NFT details", async () => { @@ -207,12 +205,12 @@ test.describe("NFTs", () => { // Displays traits expect( - await previewMenu.locator(".preview_property_trait").allInnerTexts() + await previewMenu.locator(".preview_property_trait").allInnerTexts(), ).toEqual(expect.arrayContaining(["background", "body", "eyez"])) // ...And their values await expect( - previewMenu.locator(".preview_property_value") + previewMenu.locator(".preview_property_value"), ).toContainText([/dark green/i, /dark brown/i, /blue sunglasses/i]) await previewMenu.getByRole("button", { name: "Close menu" }).click() @@ -236,20 +234,20 @@ test.describe("NFTs", () => { await expect( poapPreview.getByRole("heading", { name: "Taho TEST POAP", - }) + }), ).toBeVisible() expect( await poapPreview .getByRole("link", { name: "POAP" }) - .getAttribute("href") + .getAttribute("href"), ).toEqual("https://app.poap.xyz/token/6676760") // Description await expect( poapPreview.getByText( - "This is a POAP used to test some functionalities of a Taho wallet" - ) + "This is a POAP used to test some functionalities of a Taho wallet", + ), ).toBeVisible() // Displays properties @@ -278,15 +276,15 @@ test.describe("NFTs", () => { await expect( galxePreview.getByRole("heading", { name: "PARIS", - }) + }), ).toBeVisible() expect( await galxePreview .getByRole("link", { name: "Galxe" }) - .getAttribute("href") + .getAttribute("href"), ).toEqual( - "https://galxe.com/nft/8038/0x9972158B1456bd22cF4D2436831942a135492369" + "https://galxe.com/nft/8038/0x9972158B1456bd22cF4D2436831942a135492369", ) // Displays properties diff --git a/e2e-tests/regular/onboarding.spec.ts b/e2e-tests/regular/onboarding.spec.ts index f0f9bb4b05..0cd5454d3d 100644 --- a/e2e-tests/regular/onboarding.spec.ts +++ b/e2e-tests/regular/onboarding.spec.ts @@ -16,7 +16,7 @@ test.describe("Onboarding", () => { await expect(async () => { await expect( - popup.getByTestId("top_menu_profile_button").last() + popup.getByTestId("top_menu_profile_button").last(), ).toHaveText(readOnlyAddress) }).toPass() @@ -43,7 +43,7 @@ test.describe("Onboarding", () => { await page.getByRole("button", { name: "Import account" }).click() await expect( - page.getByRole("heading", { name: "Welcome to Taho" }) + page.getByRole("heading", { name: "Welcome to Taho" }), ).toBeVisible() await walletPageHelper.setViewportSize() @@ -80,16 +80,16 @@ test.describe("Onboarding", () => { await page.getByRole("button", { name: "I wrote it down" }).click() const seedWordPlaceholders = page.getByTestId( - "verify_seed_word_placeholder" + "verify_seed_word_placeholder", ) const wordsToVerify = (await seedWordPlaceholders.allTextContents()).map( - (word) => Number((word.match(/\d+/) ?? ["0"])[0]) + (word) => Number((word.match(/\d+/) ?? ["0"])[0]), ) const wordsInWrongOrder = wordsToVerify.slice(0, -2).concat( // last 2 in wrong order - wordsToVerify.slice(-2).reverse() + wordsToVerify.slice(-2).reverse(), ) // eslint-disable-next-line no-restricted-syntax @@ -107,7 +107,7 @@ test.describe("Onboarding", () => { await page.getByRole("button", { name: "Verify recovery phrase" }).click() await expect( - page.getByRole("button", { name: "Incorrect Order" }) + page.getByRole("button", { name: "Incorrect Order" }), ).toBeVisible() // Remove all to start over in valid order @@ -135,7 +135,7 @@ test.describe("Onboarding", () => { await page.getByRole("button", { name: "Finalize" }).click() await expect( - page.getByRole("heading", { name: "Welcome to Taho" }) + page.getByRole("heading", { name: "Welcome to Taho" }), ).toBeVisible() await walletPageHelper.setViewportSize() @@ -143,7 +143,7 @@ test.describe("Onboarding", () => { // If the popup finished rendering then we were able to onboard successfully await expect( - popup.getByTestId("top_menu_network_switcher").last() + popup.getByTestId("top_menu_network_switcher").last(), ).toHaveText("Ethereum") }) }) diff --git a/e2e-tests/regular/token-trust.spec.ts b/e2e-tests/regular/token-trust.spec.ts index 7d85bc59d7..1a9a52ced0 100644 --- a/e2e-tests/regular/token-trust.spec.ts +++ b/e2e-tests/regular/token-trust.spec.ts @@ -34,7 +34,7 @@ test.describe("Token Trust", () => { await walletPageHelper.assertCommonElements( /^Ethereum$/, false, - account1.name + account1.name, ) await walletPageHelper.assertAnalyticsBanner() @@ -73,7 +73,7 @@ test.describe("Token Trust", () => { account1.name, /^MATIC$/, /^(\d|,)+(\.\d{2,4})*$/, - "base" + "base", ) await popup.getByRole("button", { name: "Back", exact: true }).click() @@ -88,7 +88,7 @@ test.describe("Token Trust", () => { .click({ trial: true }) await assetsHelper.assertVerifiedAssetOnWalletPage( /^WMATIC$/, - "knownERC20" + "knownERC20", ) /** @@ -107,7 +107,7 @@ test.describe("Token Trust", () => { /^WMATIC$/, /^(\d|,)+(\.\d{2,4})*$/, "knownERC20", - "https://polygonscan.com/token/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" + "https://polygonscan.com/token/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", ) await popup.getByRole("button", { name: "Back", exact: true }).click() @@ -179,7 +179,7 @@ test.describe("Token Trust", () => { account1.name, /^MATIC$/, /^(\d|,)+(\.\d{2,4)*$/, - "base" + "base", ) await popup.getByRole("button", { name: "Back", exact: true }).click() @@ -194,7 +194,7 @@ test.describe("Token Trust", () => { .click({ trial: true }) await assetsHelper.assertVerifiedAssetOnWalletPage( /^WMATIC$/, - "knownERC20" + "knownERC20", ) /** @@ -213,7 +213,7 @@ test.describe("Token Trust", () => { /^WMATIC$/, /^(\d|,)+(\.\d{2,4})*$/, "knownERC20", - "https://polygonscan.com/token/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" + "https://polygonscan.com/token/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", ) await popup.getByRole("button", { name: "Back", exact: true }).click() @@ -242,7 +242,7 @@ test.describe("Token Trust", () => { /^(\d|,)+(\.\d{2,4})*$/, "unverified", "https://polygonscan.com/token/0x5d47baba0d66083c52009271faf3f50dcc01023c", - "0x5d47…1023c" + "0x5d47…1023c", ) await popup.getByRole("button", { name: "Back", exact: true }).click() @@ -306,7 +306,7 @@ test.describe("Token Trust", () => { * Confirm there is `Asset removed from list` snackbar visible. */ await expect( - popup.getByText("Asset removed from list").first() + popup.getByText("Asset removed from list").first(), ).toBeVisible({ timeout: 5000 }) /** @@ -316,7 +316,7 @@ test.describe("Token Trust", () => { await walletPageHelper.assertCommonElements( /^Polygon$/, false, - account1.name + account1.name, ) await walletPageHelper.assertAnalyticsBanner() await assetsHelper.assertVerifiedAssetOnWalletPage(/^MATIC$/, "base") @@ -329,7 +329,7 @@ test.describe("Token Trust", () => { await expect( popup.getByTestId("asset_list_item").filter({ has: popup.locator("span").filter({ hasText: /^pAAVE$/ }), - }) + }), ).not.toBeVisible() /** @@ -400,7 +400,7 @@ test.describe("Token Trust", () => { /^(\d|,)+(\.\d{2,4})*$/, "trusted", "https://polygonscan.com/token/0x5d47baba0d66083c52009271faf3f50dcc01023c", - "0x5d47…1023c" + "0x5d47…1023c", ) /** @@ -461,7 +461,7 @@ test.describe("Token Trust", () => { * Confirm there is `Asset removed from list` snackbar visible. */ await expect( - popup.getByText("Asset removed from list").first() + popup.getByText("Asset removed from list").first(), ).toBeVisible({ timeout: 5000 }) /** @@ -471,7 +471,7 @@ test.describe("Token Trust", () => { await walletPageHelper.assertCommonElements( /^Polygon$/, false, - account1.name + account1.name, ) await walletPageHelper.assertAnalyticsBanner() await assetsHelper.assertVerifiedAssetOnWalletPage(/^MATIC$/, "base") @@ -484,7 +484,7 @@ test.describe("Token Trust", () => { await expect( popup.getByTestId("asset_list_item").filter({ has: popup.locator("span").filter({ hasText: /^BANANA$/ }), - }) + }), ).not.toBeVisible() /** diff --git a/e2e-tests/regular/transactions.spec.ts b/e2e-tests/regular/transactions.spec.ts index ad4da4e33e..d7a637d1db 100644 --- a/e2e-tests/regular/transactions.spec.ts +++ b/e2e-tests/regular/transactions.spec.ts @@ -23,7 +23,7 @@ test.describe("Transactions", () => { await walletPageHelper.assertCommonElements( /^Ethereum$/, false, - account2.name + account2.name, ) await walletPageHelper.assertAnalyticsBanner() @@ -55,7 +55,7 @@ test.describe("Transactions", () => { await walletPageHelper.assertCommonElements( /^Goerli$/, true, - account2.name + account2.name, ) await walletPageHelper.assertAnalyticsBanner() @@ -86,7 +86,7 @@ test.describe("Transactions", () => { account2.name, "ETH", "(\\d|,)+(\\.\\d{0,4})*", - true + true, ) /** @@ -94,11 +94,11 @@ test.describe("Transactions", () => { */ await popup.locator("input.input_amount").fill("0.00001") await expect( - popup.locator(".value").getByText(/^\$\d+(\.\d{1,2})*$/) + popup.locator(".value").getByText(/^\$\d+(\.\d{1,2})*$/), ).toBeVisible() await expect( - popup.getByRole("button", { name: "Continue", exact: true }) + popup.getByRole("button", { name: "Continue", exact: true }), ).toHaveClass(/disabled/) // We can't use `toBeDisabled`, as the element doesn't have `disabled` attribute. await popup .getByRole("button", { name: "Continue", exact: true }) @@ -124,7 +124,7 @@ test.describe("Transactions", () => { "0x4774…875a6", "0", "ETH", - true + true, ) /** @@ -137,117 +137,111 @@ test.describe("Transactions", () => { * and there is no "Transaction failed to broadcast" snackbar visible. */ await expect( - popup.getByText("Transaction signed, broadcasting...").first() + popup.getByText("Transaction signed, broadcasting...").first(), ).toBeVisible() // we need to use `.first()` because sometimes Playwright catches 2 elements matching that copy await expect( - popup.getByText("Transaction failed to broadcast.") + popup.getByText("Transaction failed to broadcast."), ).toHaveCount(0) }) - await test.step( - "Verify asset activity screen and latest transaction status", - async () => { - /** - * Verify elements on the asset activity screen - */ - await expect(popup.getByTestId("activity_list")).toHaveCount(1) - await assetsHelper.assertAssetDetailsPage( - /^Goerli$/, - account2.name, - /^ETH$/, - /^(\d|,)+(\.\d{0,4})*$/, - "base" - ) - - /** - * Verify latest transaction. - */ - setTimeout(() => {}, 10000) // wait for 10s - - const latestSentTx = popup.getByTestId("activity_list_item").first() - await expect(latestSentTx.getByText("Pending")).toHaveCount(0, { - timeout: 60000, - }) - await expect(latestSentTx.getByText(/^Send$/)).toBeVisible() - await expect( - latestSentTx.getByText(/^[a-zA-Z]{3} \d{1,2}$/) - ).toBeVisible() - await expect( - latestSentTx.getByTestId("activity_list_item_amount").getByText(/^0$/) - ).toBeVisible() - await expect( - latestSentTx - .getByTestId("activity_list_item_amount") - .getByText(/^ETH$/) - ).toBeVisible() - await expect(latestSentTx.getByText(/^To: 0x4774…875a6$/)).toBeVisible() - - /** - * Open latest transaction and verify it's deatils - */ - await latestSentTx.click() - - await transactionsHelper.assertActivityItemProperties( - account2.address, - "0x0581…20fc7", - "0x47745A7252e119431CCF973c0eBD4279638875a6", - "0x4774…875a6", - /^0\.00001 ETH$/, - /^21000$/ - ) - } - ) - - await test.step( - "Verify activity screen and latest transaction status", - async () => { - /** - * Close and navigate to `Wallet` -> `Activity` - */ - await transactionsHelper.closeVerifyAssetPopup() - await popup.getByText("Wallet", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `link` - await popup.getByText("Activity", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `tab` - - /** - * Verify elements on the activity screen - */ - await walletPageHelper.assertCommonElements( - /^Goerli$/, - true, - account2.name - ) - await walletPageHelper.assertAnalyticsBanner() - - /** - * Open latest transaction and verify it's deatils - */ - const latestSentTx = popup.getByTestId("activity_list_item").first() - - await expect(latestSentTx.getByText(/^Send$/)).toBeVisible() - await expect( - latestSentTx.getByText(/^[a-zA-Z]{3} \d{1,2}$/) - ).toBeVisible() - await expect( - latestSentTx.getByTestId("activity_list_item_amount").getByText(/^0$/) - ).toBeVisible() - await expect( - latestSentTx - .getByTestId("activity_list_item_amount") - .getByText(/^ETH$/) - ).toBeVisible() - await expect(latestSentTx.getByText(/^To: 0x4774…875a6$/)).toBeVisible() - - await latestSentTx.click() - - await transactionsHelper.assertActivityItemProperties( - account2.address, - "0x0581…20fc7", - "0x47745A7252e119431CCF973c0eBD4279638875a6", - "0x4774…875a6", - /^0\.00001 ETH$/, - /^21000$/ - ) - } - ) + await test.step("Verify asset activity screen and latest transaction status", async () => { + /** + * Verify elements on the asset activity screen + */ + await expect(popup.getByTestId("activity_list")).toHaveCount(1) + await assetsHelper.assertAssetDetailsPage( + /^Goerli$/, + account2.name, + /^ETH$/, + /^(\d|,)+(\.\d{0,4})*$/, + "base", + ) + + /** + * Verify latest transaction. + */ + setTimeout(() => {}, 10000) // wait for 10s + + const latestSentTx = popup.getByTestId("activity_list_item").first() + await expect(latestSentTx.getByText("Pending")).toHaveCount(0, { + timeout: 60000, + }) + await expect(latestSentTx.getByText(/^Send$/)).toBeVisible() + await expect( + latestSentTx.getByText(/^[a-zA-Z]{3} \d{1,2}$/), + ).toBeVisible() + await expect( + latestSentTx.getByTestId("activity_list_item_amount").getByText(/^0$/), + ).toBeVisible() + await expect( + latestSentTx + .getByTestId("activity_list_item_amount") + .getByText(/^ETH$/), + ).toBeVisible() + await expect(latestSentTx.getByText(/^To: 0x4774…875a6$/)).toBeVisible() + + /** + * Open latest transaction and verify it's deatils + */ + await latestSentTx.click() + + await transactionsHelper.assertActivityItemProperties( + account2.address, + "0x0581…20fc7", + "0x47745A7252e119431CCF973c0eBD4279638875a6", + "0x4774…875a6", + /^0\.00001 ETH$/, + /^21000$/, + ) + }) + + await test.step("Verify activity screen and latest transaction status", async () => { + /** + * Close and navigate to `Wallet` -> `Activity` + */ + await transactionsHelper.closeVerifyAssetPopup() + await popup.getByText("Wallet", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `link` + await popup.getByText("Activity", { exact: true }).click() // We can't use `getByRole` here, as the button uses the role `tab` + + /** + * Verify elements on the activity screen + */ + await walletPageHelper.assertCommonElements( + /^Goerli$/, + true, + account2.name, + ) + await walletPageHelper.assertAnalyticsBanner() + + /** + * Open latest transaction and verify it's deatils + */ + const latestSentTx = popup.getByTestId("activity_list_item").first() + + await expect(latestSentTx.getByText(/^Send$/)).toBeVisible() + await expect( + latestSentTx.getByText(/^[a-zA-Z]{3} \d{1,2}$/), + ).toBeVisible() + await expect( + latestSentTx.getByTestId("activity_list_item_amount").getByText(/^0$/), + ).toBeVisible() + await expect( + latestSentTx + .getByTestId("activity_list_item_amount") + .getByText(/^ETH$/), + ).toBeVisible() + await expect(latestSentTx.getByText(/^To: 0x4774…875a6$/)).toBeVisible() + + await latestSentTx.click() + + await transactionsHelper.assertActivityItemProperties( + account2.address, + "0x0581…20fc7", + "0x47745A7252e119431CCF973c0eBD4279638875a6", + "0x4774…875a6", + /^0\.00001 ETH$/, + /^21000$/, + ) + }) }) }) diff --git a/e2e-tests/utils.ts b/e2e-tests/utils.ts index 0f893bc8c3..93c93ccb99 100644 --- a/e2e-tests/utils.ts +++ b/e2e-tests/utils.ts @@ -41,7 +41,7 @@ export const test = base.extend({ if (!background) background = await context.waitForEvent("backgroundpage") await background.route(/app\.posthog\.com/i, async (route) => - route.fulfill({ json: { status: 1 } }) + route.fulfill({ json: { status: 1 } }), ) await background.waitForResponse(/api\.coingecko\.com/i) @@ -73,5 +73,5 @@ export const test = base.extend({ export const skipIfFeatureFlagged = (featureFlag: FeatureFlagType): void => test.skip( !isEnabled(featureFlag, false), - `Feature Flag: ${featureFlag} has not been turned on for this run` + `Feature Flag: ${featureFlag} has not been turned on for this run`, ) diff --git a/e2e-tests/utils/assets.ts b/e2e-tests/utils/assets.ts index a747e53c81..86e2e0947d 100644 --- a/e2e-tests/utils/assets.ts +++ b/e2e-tests/utils/assets.ts @@ -4,7 +4,7 @@ import WalletPageHelper from "./walletPageHelper" export default class AssetsHelper { constructor( public readonly popup: Page, - public readonly walletPageHelper: WalletPageHelper + public readonly walletPageHelper: WalletPageHelper, ) {} /** @@ -18,7 +18,7 @@ export default class AssetsHelper { */ async assertVerifiedAssetOnWalletPage( assetSymbol: RegExp, - assetType: "base" | "knownERC20" | "trusted" + assetType: "base" | "knownERC20" | "trusted", ): Promise { const allSpecifiedAssets = this.popup .getByTestId("asset_list_item") @@ -45,7 +45,7 @@ export default class AssetsHelper { */ if (assetType === "base") { expect( - allSpecifiedAssets.first().getByTestId("asset_symbol") + allSpecifiedAssets.first().getByTestId("asset_symbol"), ).toBeVisible() } @@ -73,7 +73,7 @@ export default class AssetsHelper { expectedBalance: RegExp, assetType: "base" | "knownERC20" | "unverified" | "trusted", tokenLink?: string, // needed only when `assetType` is not `base` - tokenAddressShortened?: string // needed only when `assetType` is `unverified` or `trusted` + tokenAddressShortened?: string, // needed only when `assetType` is `unverified` or `trusted` ): Promise { /** * Assert the top wrap. @@ -95,7 +95,7 @@ export default class AssetsHelper { has: this.popup.locator("span").filter({ hasText: assetSymbol }), }) const balance = await activityLeftContainer.getByText( - /^(\d|,)+(\.\d{2,4})*$/ + /^(\d|,)+(\.\d{2,4})*$/, ) await expect(balance.getByText(expectedBalance)).toHaveCount(1, { timeout: 120000, @@ -103,11 +103,11 @@ export default class AssetsHelper { if (assetType === "base" || assetType === "knownERC20") { await expect( - activityLeftContainer.getByText(/^\$(\d|,)+\.\d{2}$/) + activityLeftContainer.getByText(/^\$(\d|,)+\.\d{2}$/), ).toBeVisible() } else { await expect( - activityLeftContainer.getByText(/^\$(\d|,)+\.\d{2}$/) + activityLeftContainer.getByText(/^\$(\d|,)+\.\d{2}$/), ).not.toBeVisible() } @@ -138,14 +138,14 @@ export default class AssetsHelper { await this.assertVerifyAssetPopup( assetSymbol, assetType, - tokenAddressShortened + tokenAddressShortened, ) this.closeVerifyAssetPopup() await this.popup.getByRole("button", { name: "Verify asset" }).click() await this.assertVerifyAssetPopup( assetSymbol, assetType, - tokenAddressShortened + tokenAddressShortened, ) this.closeVerifyAssetPopup() } else { @@ -158,12 +158,12 @@ export default class AssetsHelper { await this.assertVerifyAssetPopup( assetSymbol, assetType, - tokenAddressShortened + tokenAddressShortened, ) this.closeVerifyAssetPopup() } else { await expect( - this.popup.getByRole("button", { name: "Verified by you" }) + this.popup.getByRole("button", { name: "Verified by you" }), ).not.toBeVisible() } @@ -179,10 +179,10 @@ export default class AssetsHelper { .click({ trial: true }) } else { await expect( - this.popup.getByRole("button", { name: "Send", exact: true }) + this.popup.getByRole("button", { name: "Send", exact: true }), ).not.toBeVisible() await expect( - this.popup.getByRole("button", { name: "Swap", exact: true }) + this.popup.getByRole("button", { name: "Swap", exact: true }), ).not.toBeVisible() } @@ -208,10 +208,10 @@ export default class AssetsHelper { async assertVerifyAssetPopup( assetSymbol: RegExp, assetType: "unverified" | "trusted", - tokenAddressShortened: string | undefined + tokenAddressShortened: string | undefined, ): Promise { await expect( - this.popup.getByText("Asset automatically imported") + this.popup.getByText("Asset automatically imported"), ).toBeVisible() const verifyAssetPopup = this.popup @@ -220,24 +220,24 @@ export default class AssetsHelper { if (assetType === "trusted") { await expect( - verifyAssetPopup.getByText("Asset verified by you") + verifyAssetPopup.getByText("Asset verified by you"), ).toBeVisible() await expect( - verifyAssetPopup.getByText("Asset not verified") + verifyAssetPopup.getByText("Asset not verified"), ).not.toBeVisible() } else { await expect( - verifyAssetPopup.getByText("Asset not verified") + verifyAssetPopup.getByText("Asset not verified"), ).toBeVisible() await expect( - verifyAssetPopup.getByText("Asset verified by you") + verifyAssetPopup.getByText("Asset verified by you"), ).not.toBeVisible() } await expect( verifyAssetPopup.getByText( - "Be aware of scam and spam assets, only interact with assets you trust." - ) + "Be aware of scam and spam assets, only interact with assets you trust.", + ), ).toBeVisible() await expect( @@ -246,7 +246,7 @@ export default class AssetsHelper { .filter({ hasText: "Symbol", }) - .locator(".right") + .locator(".right"), ).toHaveText(assetSymbol) if (tokenAddressShortened !== undefined) { @@ -256,7 +256,7 @@ export default class AssetsHelper { .filter({ hasText: "Contract address", }) - .locator(".right") + .locator(".right"), ).toHaveText(tokenAddressShortened) } else { throw new Error("`tokenAddressShortened` not defined.") @@ -284,7 +284,7 @@ export default class AssetsHelper { verifyAssetPopup.getByRole("button", { name: "Add to asset list", exact: true, - }) + }), ).not.toBeVisible() } } @@ -295,14 +295,14 @@ export default class AssetsHelper { */ async assertNoUnverifiedAssetsOnWalletPage(): Promise { await expect( - this.popup.getByRole("button", { name: "See unverified assets" }) + this.popup.getByRole("button", { name: "See unverified assets" }), ).not.toBeVisible() await expect(this.popup.getByText("Asset not verified")).not.toBeVisible() await expect( - this.popup.getByRole("button", { name: "Verify asset" }) + this.popup.getByRole("button", { name: "Verify asset" }), ).not.toBeVisible() await expect( - this.popup.getByTestId("hidden_assets_container") + this.popup.getByTestId("hidden_assets_container"), ).not.toBeVisible() } @@ -317,16 +317,16 @@ export default class AssetsHelper { await expect( this.popup.getByRole("button", { name: /^See unverified assets \(\d+\)$/, - }) + }), ).toBeVisible() await expect( this.popup.getByRole("button", { name: /^Hide unverified assets \(\d+\)$/, - }) + }), ).not.toBeVisible() await expect( - this.popup.getByTestId("hidden_assets_container") + this.popup.getByTestId("hidden_assets_container"), ).not.toBeVisible() // Below assertions fail, as `Verify asset` and `Asset not verified` // elements are present in DOM even when unverified assets are collapsed. @@ -352,25 +352,25 @@ export default class AssetsHelper { await expect( this.popup.getByRole("button", { name: /^Hide unverified assets \(\d+\)$/, - }) + }), ).toBeVisible() await expect( - this.popup.getByRole("button", { name: "See unverified assets" }) + this.popup.getByRole("button", { name: "See unverified assets" }), ).not.toBeVisible() await expect( - this.popup.getByTestId("hidden_assets_container") + this.popup.getByTestId("hidden_assets_container"), ).toBeVisible() // Similarly as commented above, below assertions are not perfect. The // assertions can pass even when the list of unverified assets is collapsed. await expect(this.popup.getByText("Asset not verified")).toBeVisible() await expect( this.popup.getByText( - "Be aware of scam and spam assets, only interact with assets you trust." - ) + "Be aware of scam and spam assets, only interact with assets you trust.", + ), ).toBeVisible() await expect( - this.popup.getByRole("button", { name: "Verify asset" }).first() + this.popup.getByRole("button", { name: "Verify asset" }).first(), ).toBeVisible() /** @@ -385,15 +385,15 @@ export default class AssetsHelper { await expect( this.popup.getByRole("button", { name: /^See unverified assets \(\d+\)$/, - }) + }), ).toBeVisible() await expect( this.popup.getByRole("button", { name: /^Hide unverified assets \(\d+\)$/, - }) + }), ).not.toBeVisible() await expect( - this.popup.getByTestId("hidden_assets_container") + this.popup.getByTestId("hidden_assets_container"), ).not.toBeVisible() } @@ -402,15 +402,15 @@ export default class AssetsHelper { * available on the Transaction/Swap form. */ async assertAssetsNotPresentOnAssetsList( - tokens: Array + tokens: Array, ): Promise { await expect(this.popup.getByTestId("assets_list")).toHaveCount(1) await Promise.all( tokens.map(async (token) => { await expect( - this.popup.getByTitle(token as string, { exact: true }) + this.popup.getByTitle(token as string, { exact: true }), ).toHaveCount(0) - }) + }), ) } @@ -423,9 +423,9 @@ export default class AssetsHelper { await Promise.all( tokens.map(async (token) => { await expect( - this.popup.getByTitle(token as string, { exact: true }) + this.popup.getByTitle(token as string, { exact: true }), ).toHaveCount(1) - }) + }), ) } @@ -452,7 +452,7 @@ export default class AssetsHelper { .getByTestId("toggle") .click({ trial: true }) await expect( - showUnverifiedAssetsSetting.getByTestId("toggle") + showUnverifiedAssetsSetting.getByTestId("toggle"), ).toHaveAttribute("aria-checked", enabled.toString()) await showUnverifiedAssetsSetting .getByTestId("tooltip_wrap") @@ -460,14 +460,14 @@ export default class AssetsHelper { await expect( this.popup.getByText( `Discover assets that you own but are not on our asset list. Some - spam/scam assets may show up, so treat them with caution.` - ) + spam/scam assets may show up, so treat them with caution.`, + ), ).toBeVisible() await expect( this.popup.getByText( `They will show up on the bottom of the asset page until you verify - them.` - ) + them.`, + ), ).toBeVisible() } diff --git a/e2e-tests/utils/onboarding.ts b/e2e-tests/utils/onboarding.ts index 394792d8c7..a54220af62 100644 --- a/e2e-tests/utils/onboarding.ts +++ b/e2e-tests/utils/onboarding.ts @@ -2,7 +2,7 @@ import { BrowserContext, test as base, expect, Page } from "@playwright/test" import * as path from "path" export const getOnboardingPage = async ( - context: BrowserContext + context: BrowserContext, ): Promise => { const getOnboardingOrThrow = () => { const pages = context.pages() @@ -51,12 +51,12 @@ export default class OnboardingHelper { constructor( public readonly popup: Page, // public readonly backgroundPage: Page, - public readonly context: BrowserContext + public readonly context: BrowserContext, ) {} async addReadOnlyAccount( addressOrName: string, - onboardingPage?: Page + onboardingPage?: Page, ): Promise { const page = onboardingPage || (await getOnboardingPage(this.context)) @@ -67,7 +67,7 @@ export default class OnboardingHelper { await page.getByRole("button", { name: "Preview Taho" }).click() await expect( - page.getByRole("heading", { name: "Welcome to Taho" }) + page.getByRole("heading", { name: "Welcome to Taho" }), ).toBeVisible() }) } @@ -102,7 +102,7 @@ export default class OnboardingHelper { await page.getByRole("button", { name: "Import account" }).click() await expect( - page.getByRole("heading", { name: "Welcome to Taho" }) + page.getByRole("heading", { name: "Welcome to Taho" }), ).toBeVisible() }) } @@ -143,10 +143,10 @@ export default class OnboardingHelper { await fileChooser.setFiles(file) await expect( - page.getByTestId("file_status").getByText(path.basename(file)) + page.getByTestId("file_status").getByText(path.basename(file)), ).toBeVisible() await expect( - page.getByText("Wrong file, only JSON accepted") + page.getByText("Wrong file, only JSON accepted"), ).toHaveCount(0) await page.getByPlaceholder(" ").fill(filePassword) @@ -161,7 +161,7 @@ export default class OnboardingHelper { await page.getByRole("button", { name: "Finalize" }).click() await expect( - page.getByRole("heading", { name: "Welcome to Taho" }) + page.getByRole("heading", { name: "Welcome to Taho" }), ).toBeVisible() }) } @@ -191,11 +191,11 @@ export default class OnboardingHelper { await page.getByRole("button", { name: "I wrote it down" }).click() const seedWordPlaceholders = page.getByTestId( - "verify_seed_word_placeholder" + "verify_seed_word_placeholder", ) const wordsToVerify = (await seedWordPlaceholders.allTextContents()).map( - (word) => Number((word.match(/\d+/) ?? ["0"])[0]) + (word) => Number((word.match(/\d+/) ?? ["0"])[0]), ) await seedWordPlaceholders.first().click() @@ -219,7 +219,7 @@ export default class OnboardingHelper { await page.getByRole("button", { name: "Finalize" }).click() await expect( - page.getByRole("heading", { name: "Welcome to Taho" }) + page.getByRole("heading", { name: "Welcome to Taho" }), ).toBeVisible() } } diff --git a/e2e-tests/utils/transactions.ts b/e2e-tests/utils/transactions.ts index c6f0ca8435..af2d898378 100644 --- a/e2e-tests/utils/transactions.ts +++ b/e2e-tests/utils/transactions.ts @@ -5,7 +5,7 @@ import WalletPageHelper from "./walletPageHelper" export default class TransactionsHelper { constructor( public readonly popup: Page, - public readonly walletPageHelper: WalletPageHelper + public readonly walletPageHelper: WalletPageHelper, ) {} /** @@ -17,10 +17,10 @@ export default class TransactionsHelper { accountLabel: RegExp, assetSymbol: string, regexAssetBalance: string, // a balance of the asset in RegEx syntax, with special chars double escaped (e.g. `\\d+`) and without leading `/^` and ending `$/` - baseAsset: boolean + baseAsset: boolean, ): Promise { await expect( - this.popup.getByRole("heading", { name: "Send Asset", exact: true }) + this.popup.getByRole("heading", { name: "Send Asset", exact: true }), ).toBeVisible() await this.walletPageHelper.assertTopWrap(network, accountLabel) @@ -31,7 +31,7 @@ export default class TransactionsHelper { await expect(this.popup.getByText(/^Asset \/ Amount$/)).toBeVisible() await expect(this.popup.getByTestId("selected_asset_button")).toHaveText( - assetSymbol + assetSymbol, ) const assetBalance = await this.popup.locator(".available") @@ -39,11 +39,11 @@ export default class TransactionsHelper { expect(assetBalance).toHaveText(balanceRegEx) if (baseAsset) { expect( - await this.popup.getByRole("button", { name: "Max" }).count() + await this.popup.getByRole("button", { name: "Max" }).count(), ).toEqual(0) } else { await expect( - this.popup.getByRole("button", { name: "Max" }) + this.popup.getByRole("button", { name: "Max" }), ).toBeVisible() await this.popup .getByRole("button", { name: "Max" }) @@ -56,7 +56,7 @@ export default class TransactionsHelper { await expect(this.popup.getByPlaceholder(/^0x\.\.\.$/)).toBeVisible() await expect( - this.popup.getByRole("button", { name: "Continue", exact: true }) + this.popup.getByRole("button", { name: "Continue", exact: true }), ).toHaveClass(/disabled/) await this.popup .getByRole("button", { name: "Continue", exact: true }) @@ -75,19 +75,19 @@ export default class TransactionsHelper { sendToAddressShortened: string, regexSpendAmount: string, // a spend amount in RegEx syntax, with special chars double escaped (e.g. `\\d+`) and without leading `/^` and ending `$/` regexAssetSymbol: string, // an asset symbol in RegEx syntax, with special chars double escaped (e.g. `\\d+`) and without leading `/^` and ending `$/` - baseAsset: boolean + baseAsset: boolean, ): Promise { await expect( - this.popup.getByRole("heading", { name: "Transfer", exact: true }) + this.popup.getByRole("heading", { name: "Transfer", exact: true }), ).toBeVisible() const networkRegEx = new RegExp(`^${regexNetwork}$`) await expect( - this.popup.locator(".top_bar_wrap").getByText(networkRegEx) + this.popup.locator(".top_bar_wrap").getByText(networkRegEx), ).toBeVisible() const accountLabelRegEx = new RegExp(`^${regexAccountLabel}$`) await expect( - this.popup.locator(".top_bar_wrap").getByText(accountLabelRegEx) + this.popup.locator(".top_bar_wrap").getByText(accountLabelRegEx), ).toBeVisible() // TODO: We could also add verification that checks we can't change the // network and the wallet address at this stage. One way to do it would be @@ -96,27 +96,27 @@ export default class TransactionsHelper { await expect(this.popup.getByText(/^Send to$/)).toBeVisible() await expect( - await this.popup.getByRole("button", { name: sendToAddressShortened }) + await this.popup.getByRole("button", { name: sendToAddressShortened }), ).toBeEnabled() await this.popup .getByRole("button", { name: sendToAddressShortened }) .click() const clipboardReceipientAddress = await this.popup.evaluate(() => - navigator.clipboard.readText() + navigator.clipboard.readText(), ) expect(clipboardReceipientAddress.toLowerCase()).toBe( - sendToAddressFull.toLowerCase() + sendToAddressFull.toLowerCase(), ) // We need `toLowerCase()`, because for non-base assets the capitalization of the address may differ from the entered one. const spendAmountContainer = this.popup .locator(".container") .filter({ hasText: "Spend Amount" }) const spendAmountRegEx = new RegExp( - `^${regexSpendAmount} ${regexAssetSymbol}$` + `^${regexSpendAmount} ${regexAssetSymbol}$`, ) await expect(spendAmountContainer.getByText(spendAmountRegEx)).toBeVisible() await expect( - spendAmountContainer.getByText(/^\$(\d|,)+(\.\d{1,2})*$/) + spendAmountContainer.getByText(/^\$(\d|,)+(\.\d{1,2})*$/), ).toBeVisible() await this.popup @@ -126,10 +126,10 @@ export default class TransactionsHelper { .locator("span") .filter({ hasText: "Estimated network fee" }) await expect( - estimatedFeeContainer.getByText(/^~\$\d+(\.\d{1,2})*$/) + estimatedFeeContainer.getByText(/^~\$\d+(\.\d{1,2})*$/), ).toBeVisible() await expect( - estimatedFeeContainer.getByText(/^\(\d+(\.\d{1,2})* Gwei\)$/) + estimatedFeeContainer.getByText(/^\(\d+(\.\d{1,2})* Gwei\)$/), ).toBeVisible() await estimatedFeeContainer.getByRole("button").click({ trial: true }) // TODO: Add network fees verification @@ -140,7 +140,7 @@ export default class TransactionsHelper { .locator(".raw_data_wrap") .filter({ hasText: "Copy hex" }) const clipboardHex = await this.popup.evaluate(() => - navigator.clipboard.readText() + navigator.clipboard.readText(), ) if (baseAsset) { expect(clipboardHex).toBe("") @@ -167,7 +167,7 @@ export default class TransactionsHelper { sendToAddressFull: string, sendToAddressShortened: string, amount: RegExp, - gas: RegExp + gas: RegExp, ): Promise { /** * Assert header. @@ -196,11 +196,11 @@ export default class TransactionsHelper { dedent(` Copy to clipboard: ${sendFromAddressFull} - `) + `), ) await senderButton.click() const clipboardSendFromAddress = await this.popup.evaluate(() => - navigator.clipboard.readText() + navigator.clipboard.readText(), ) expect(clipboardSendFromAddress).toBe(sendFromAddressFull) @@ -217,11 +217,11 @@ export default class TransactionsHelper { dedent(` Copy to clipboard: ${sendToAddressFull} - `) + `), ) await receipientButton.click() const clipboardSendToAddress = await this.popup.evaluate(() => - navigator.clipboard.readText() + navigator.clipboard.readText(), ) expect(clipboardSendToAddress).toBe(sendToAddressFull) @@ -232,7 +232,7 @@ export default class TransactionsHelper { has: this.popup.locator(".label").filter({ hasText: /^Block Height$/ }), }) await expect( - blockHeightRow.locator(".right").getByText(/^\d+$/) + blockHeightRow.locator(".right").getByText(/^\d+$/), ).toBeVisible() const amountRow = this.popup.locator("li").filter({ @@ -244,14 +244,14 @@ export default class TransactionsHelper { has: this.popup.locator(".label").filter({ hasText: /^Max Fee\/Gas$/ }), }) await expect( - maxFeeRow.locator(".right").getByText(/^\d+\.\d{2} Gwei$/) + maxFeeRow.locator(".right").getByText(/^\d+\.\d{2} Gwei$/), ).toBeVisible() const gasPriceRow = this.popup.locator("li").filter({ has: this.popup.locator(".label").filter({ hasText: /^Gas Price$/ }), }) await expect( - gasPriceRow.locator(".right").getByText(/^\d+\.\d{2} Gwei$/) + gasPriceRow.locator(".right").getByText(/^\d+\.\d{2} Gwei$/), ).toBeVisible() const gasRow = this.popup.locator("li").filter({ @@ -271,7 +271,7 @@ export default class TransactionsHelper { timestampRow .locator(".right") // eslint-disable-next-line no-irregular-whitespace - .getByText(/^\d{1,2}\/\d{1,2}\/\d{4}, \d{1,2}:\d{2}:\d{2}( AM| PM)*$/) + .getByText(/^\d{1,2}\/\d{1,2}\/\d{4}, \d{1,2}:\d{2}:\d{2}( AM| PM)*$/), ).toBeVisible() } diff --git a/e2e-tests/utils/walletPageHelper.ts b/e2e-tests/utils/walletPageHelper.ts index 74b23ae88d..82a7495280 100644 --- a/e2e-tests/utils/walletPageHelper.ts +++ b/e2e-tests/utils/walletPageHelper.ts @@ -14,7 +14,7 @@ export default class WalletPageHelper { constructor( public readonly popup: Page, public readonly context: BrowserContext, - public readonly extensionId: string + public readonly extensionId: string, ) { this.url = `chrome-extension://${extensionId}/popup.html` this.#onboardingHelper = new OnboardingHelper(popup, context) @@ -57,7 +57,7 @@ export default class WalletPageHelper { async onboardWithJSON( account: Account | "custom", customJsonBody?: string, - customFilePassword?: string + customFilePassword?: string, ): Promise { /** * Set variables storing JSON file content and password. @@ -106,7 +106,7 @@ export default class WalletPageHelper { // TODO: maybe we could also verify graphical elements (network icon, profile picture, etc)? await expect( - this.popup.getByTestId("top_menu_network_switcher").last() + this.popup.getByTestId("top_menu_network_switcher").last(), ).toHaveText(network) await this.popup .getByTestId("top_menu_network_switcher") @@ -114,12 +114,12 @@ export default class WalletPageHelper { .click({ trial: true }) await expect(this.popup.getByText("Connect to website using:")).toHaveCount( - 1 + 1, ) await this.popup.locator(".bulb").last().click({ trial: true }) await expect( - this.popup.getByTestId("top_menu_profile_button").last() + this.popup.getByTestId("top_menu_profile_button").last(), ).toHaveText(accountLabel, { timeout: 240000 }) await this.popup .getByTestId("top_menu_profile_button") @@ -153,13 +153,13 @@ export default class WalletPageHelper { async assertCommonElements( network: RegExp, testnet: boolean, - accountLabel: RegExp + accountLabel: RegExp, ): Promise { await expect(this.popup.getByText("Total account balance")).toBeVisible({ timeout: 240000, }) // we need longer timeout, because on fork it often takes long to load this section await expect(this.popup.getByTestId("wallet_balance")).toHaveText( - /^\$(\d|,)+(\.\d{1,2})*$/ + /^\$(\d|,)+(\.\d{1,2})*$/, ) await this.assertTopWrap(network, accountLabel) @@ -200,8 +200,8 @@ export default class WalletPageHelper { await expect( analyticsBanner.getByText( "They help us improve the wallet. You can disable anytime", - { exact: true } - ) + { exact: true }, + ), ).toBeVisible() await analyticsBanner .getByText("Change settings", { exact: true }) @@ -219,7 +219,7 @@ export default class WalletPageHelper { async assertDefaultWalletBanner(): Promise { await expect( - this.popup.getByText("Taho is not your default wallet") + this.popup.getByText("Taho is not your default wallet"), ).toBeVisible() await this.popup .locator(".default_toggle") @@ -231,7 +231,7 @@ export default class WalletPageHelper { await this.popup.getByTestId("top_menu_network_switcher").last().click() await this.popup.getByText(network).click() await expect( - this.popup.getByTestId("top_menu_network_switcher").last() + this.popup.getByTestId("top_menu_network_switcher").last(), ).toHaveText(network) } @@ -259,10 +259,10 @@ export default class WalletPageHelper { await accountLabelButton.click() await this.popup.getByText(/^Add address$/).click() await expect(this.popup.getByTestId("wallet_address_item")).toHaveCount( - numberOfAccounts + 1 + numberOfAccounts + 1, ) await expect( - this.popup.getByTestId("slide_up_menu").locator(".spinner") + this.popup.getByTestId("slide_up_menu").locator(".spinner"), ).toHaveCount(0) /** @@ -284,7 +284,7 @@ export default class WalletPageHelper { async switchToAddress( accountLabel: string, addressNo: number, // 1 for the 1st address under the `accountLabel` label, 2 for the 2nd, etc. - accountName: RegExp // the name displayed in the top menu after account switching + accountName: RegExp, // the name displayed in the top menu after account switching ): Promise { await this.popup.getByTestId("top_menu_profile_button").last().click() await this.popup @@ -296,7 +296,7 @@ export default class WalletPageHelper { .nth(addressNo - 1) .click() await expect( - this.popup.getByTestId("top_menu_profile_button").last() + this.popup.getByTestId("top_menu_profile_button").last(), ).toHaveText(accountName) } diff --git a/env.d.ts b/env.d.ts index 82e5752648..de60e672dc 100644 --- a/env.d.ts +++ b/env.d.ts @@ -28,11 +28,11 @@ type BaseWalletProvider = { emit: (eventName: string | symbol, ...args: unknown[]) => boolean on: ( eventName: string | symbol, - listener: (...args: unknown[]) => void + listener: (...args: unknown[]) => void, ) => unknown removeListener: ( eventName: string | symbol, - listener: (...args: unknown[]) => void + listener: (...args: unknown[]) => void, ) => unknown } @@ -61,16 +61,16 @@ interface Window { providers: WalletProvider[] shouldSetTallyForCurrentProvider: ( shouldSetTaho: boolean, - shouldReload?: boolean + shouldReload?: boolean, ) => void shouldSetTahoForCurrentProvider: ( shouldSetTaho: boolean, - shouldReload?: boolean + shouldReload?: boolean, ) => void routeToNewNonTahoDefault: (request: unknown) => Promise reemitTahoEvent: (event: string | symbol, ...args: unknown[]) => boolean getProviderInfo: ( - provider: WalletProvider + provider: WalletProvider, ) => WalletProvider["providerInfo"] addProvider: (newProvider: WalletProvider) => void } diff --git a/package.json b/package.json index d34ffeb15f..909fb1a667 100644 --- a/package.json +++ b/package.json @@ -78,29 +78,30 @@ "window-provider" ], "dependencies": { - "@ethersproject/providers": "5.5.3", + "@ethersproject/providers": "5.7.2", "@fortawesome/fontawesome-free": "^5.15.2", + "@reduxjs/toolkit": "^1.9.4", "@tallyho/provider-bridge": "0.0.1", "@tallyho/provider-bridge-shared": "0.0.1", "@tallyho/tally-background": "0.0.1", "@tallyho/tally-ui": "0.0.1", "@tallyho/window-provider": "0.0.1", "buffer": "^6.0.3", - "react": "^17.0.2", + "react": "^18.2.0", "sinon": "^14.0.1", "webext-options-sync": "^2.0.1", "webext-redux": "^2.1.7", "webextension-polyfill": "^0.7.0" }, "devDependencies": { - "@babel/core": "^7.13.1", - "@babel/preset-env": "^7.15.0", - "@babel/preset-react": "^7.12.13", - "@babel/preset-typescript": "^7.15.0", - "@babel/register": "^7.14.5", + "@babel/core": "^7.22.11", + "@babel/preset-env": "^7.22.10", + "@babel/preset-react": "^7.22.5", + "@babel/preset-typescript": "^7.22.11", + "@babel/register": "^7.22.5", "@playwright/test": "^1.31", - "@redux-devtools/cli": "^1.0.7", - "@thesis-co/eslint-config": "^0.5.0", + "@redux-devtools/cli": "^2.0.0", + "@thesis-co/eslint-config": "^0.6.1", "@types/archiver": "^5.1.0", "@types/copy-webpack-plugin": "^8.0.0", "@types/dotenv-webpack": "^7.0.3", @@ -110,16 +111,16 @@ "@types/remote-redux-devtools": "^0.5.5", "@types/terser-webpack-plugin": "^5.0.3", "@types/webpack-livereload-plugin": "^2.3.2", - "@typescript-eslint/eslint-plugin": "^4.28.4", - "@typescript-eslint/parser": "^4.28.4", + "@typescript-eslint/eslint-plugin": "^6.5.0", + "@typescript-eslint/parser": "^6.5.0", "archiver": "^5.3.0", "babel-loader": "^8.2.2", "copy-webpack-plugin": "^9.0.0", "dedent-js": "^1.0.1", - "dexie": "^3.0.3", + "dexie": "^3.0.4", "dotenv-defaults": "^2.0.2", "dotenv-webpack": "^7.0.3", - "eslint": "^7.28.0", + "eslint": "^8.48.0", "fork-ts-checker-webpack-plugin": "^6.3.2", "install": "^0.13.0", "jest": "^29.5.0", @@ -127,14 +128,14 @@ "npm": "^7.5.6", "npm-run-all": "^4.1.5", "patch-package": "^6.4.7", - "prettier": "^2.5.1", + "prettier": "^3.0.2", "process": "^0.11.10", "size-plugin": "^2.0.2", "stream-browserify": "^3.0.0", - "styled-jsx": "^3.4.4", + "styled-jsx": "^5.1.2", "terser-webpack-plugin": "^5.1.1", "ts-loader": "^9.2.3", - "typescript": "^5.0.4", + "typescript": "5.2.2", "webpack": "^5.58.1", "webpack-cli": "4.5.0", "webpack-livereload-plugin": "^3.0.1", diff --git a/patches/@ethersproject+providers+5.5.3.patch b/patches/@ethersproject+providers+5.5.3.patch deleted file mode 100644 index 62ba204df0..0000000000 --- a/patches/@ethersproject+providers+5.5.3.patch +++ /dev/null @@ -1,199 +0,0 @@ -diff --git a/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.d.ts.map b/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.d.ts.map -index f519e6f..0dbc393 100644 ---- a/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.d.ts.map -+++ b/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.d.ts.map -@@ -1 +1 @@ --{"version":3,"file":"alchemy-provider.d.ts","sourceRoot":"","sources":["../src.ts/alchemy-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAS7D,qBAAa,wBAAyB,SAAQ,iBAAkB,YAAW,oBAAoB;IAC3F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG;IAU9C,mBAAmB,IAAI,OAAO;CAGjC;AAED,qBAAa,eAAgB,SAAQ,kBAAkB;IAEnD,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,wBAAwB;IAIzF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG;IAQlC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc;IAoD/D,mBAAmB,IAAI,OAAO;CAGjC"} -\ No newline at end of file -+{"version":3,"file":"alchemy-provider.d.ts","sourceRoot":"","sources":["../src.ts/alchemy-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAS7D,qBAAa,wBAAyB,SAAQ,iBAAkB,YAAW,oBAAoB;IAC3F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG;IAU9C,mBAAmB,IAAI,OAAO;CAGjC;AAED,qBAAa,eAAgB,SAAQ,kBAAkB;IAEnD,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,wBAAwB;IAIzF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG;IAQlC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc;IAuD/D,mBAAmB,IAAI,OAAO;CAGjC"} -\ No newline at end of file -diff --git a/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js b/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js -index 27d62b2..28d2700 100644 ---- a/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js -+++ b/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js -@@ -77,7 +77,9 @@ export class AlchemyProvider extends UrlJsonRpcProvider { - } - return { - allowGzip: true, -- url: ("https:/" + "/" + host + apiKey), -+ url: process.env.USE_MAINNET_FORK === "true" -+ ? process.env.MAINNET_FORK_URL -+ : ("https:/" + "/" + host + apiKey), - throttleCallback: (attempt, url) => { - if (apiKey === defaultApiKey) { - showThrottleMessage(); -diff --git a/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js.map b/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js.map -index 5d16342..2a38330 100644 ---- a/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js.map -+++ b/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js.map -@@ -1 +1 @@ --{"version":3,"file":"alchemy-provider.js","sourceRoot":"","sources":["../src.ts/alchemy-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -+{"version":3,"file":"alchemy-provider.js","sourceRoot":"","sources":["../src.ts/alchemy-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js b/node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js -index 7db7f78..b482a87 100644 ---- a/node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js -+++ b/node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js -@@ -34,13 +34,14 @@ export class JsonRpcBatchProvider extends JsonRpcProvider { - request: deepCopy(request), - provider: this - }); -- return fetchJson(this.connection, JSON.stringify(request)).then((result) => { -+ return fetchJson(this.connection, JSON.stringify(request)).then((rawResult) => { - this.emit("debug", { - action: "response", - request: request, -- response: result, -+ response: rawResult, - provider: this - }); -+ const result = rawResult.sort((a,b) => a.id - b.id); - // For each result, feed it to the correct Promise, depending - // on whether it was a success or error - batch.forEach((inflightRequest, index) => { -diff --git a/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.d.ts.map b/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.d.ts.map -index dd2f5e6..bf9d68c 100644 ---- a/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.d.ts.map -+++ b/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.d.ts.map -@@ -1 +1 @@ --{"version":3,"file":"json-rpc-provider.d.ts","sourceRoot":"","sources":["../src.ts/json-rpc-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -+{"version":3,"file":"json-rpc-provider.d.ts","sourceRoot":"","sources":["../src.ts/json-rpc-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js b/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js -index df86a3f..9d56134 100644 ---- a/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js -+++ b/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js -@@ -301,7 +301,7 @@ export class JsonRpcProvider extends BaseProvider { - } - if (typeof (url) === "string") { - defineReadOnly(this, "connection", Object.freeze({ -- url: url -+ url: process.env.USE_MAINNET_FORK === "true" ? process.env.MAINNET_FORK_URL : url - })); - } - else { -@@ -344,7 +344,9 @@ export class JsonRpcProvider extends BaseProvider { - if (chainId != null) { - const getNetwork = getStatic(this.constructor, "getNetwork"); - try { -- return getNetwork(BigNumber.from(chainId).toNumber()); -+ return process.env.USE_MAINNET_FORK === "true" -+ ? getNetwork(1) -+ : getNetwork(BigNumber.from(chainId).toNumber()); - } - catch (error) { - return logger.throwError("could not detect network", Logger.errors.NETWORK_ERROR, { -diff --git a/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js.map b/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js.map -index 44615c4..17cbe23 100644 ---- a/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js.map -+++ b/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js.map -@@ -1 +1 @@ --{"version":3,"file":"json-rpc-provider.js","sourceRoot":"","sources":["../src.ts/json-rpc-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -+{"version":3,"file":"json-rpc-provider.js","sourceRoot":"","sources":["../src.ts/json-rpc-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@ethersproject/providers/lib/alchemy-provider.d.ts.map b/node_modules/@ethersproject/providers/lib/alchemy-provider.d.ts.map -index f519e6f..0dbc393 100644 ---- a/node_modules/@ethersproject/providers/lib/alchemy-provider.d.ts.map -+++ b/node_modules/@ethersproject/providers/lib/alchemy-provider.d.ts.map -@@ -1 +1 @@ --{"version":3,"file":"alchemy-provider.d.ts","sourceRoot":"","sources":["../src.ts/alchemy-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAS7D,qBAAa,wBAAyB,SAAQ,iBAAkB,YAAW,oBAAoB;IAC3F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG;IAU9C,mBAAmB,IAAI,OAAO;CAGjC;AAED,qBAAa,eAAgB,SAAQ,kBAAkB;IAEnD,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,wBAAwB;IAIzF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG;IAQlC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc;IAoD/D,mBAAmB,IAAI,OAAO;CAGjC"} -\ No newline at end of file -+{"version":3,"file":"alchemy-provider.d.ts","sourceRoot":"","sources":["../src.ts/alchemy-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAS7D,qBAAa,wBAAyB,SAAQ,iBAAkB,YAAW,oBAAoB;IAC3F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG;IAU9C,mBAAmB,IAAI,OAAO;CAGjC;AAED,qBAAa,eAAgB,SAAQ,kBAAkB;IAEnD,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,wBAAwB;IAIzF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG;IAQlC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc;IAuD/D,mBAAmB,IAAI,OAAO;CAGjC"} -\ No newline at end of file -diff --git a/node_modules/@ethersproject/providers/lib/alchemy-provider.js b/node_modules/@ethersproject/providers/lib/alchemy-provider.js -index 97366d7..14b31fe 100644 ---- a/node_modules/@ethersproject/providers/lib/alchemy-provider.js -+++ b/node_modules/@ethersproject/providers/lib/alchemy-provider.js -@@ -103,7 +103,9 @@ var AlchemyProvider = /** @class */ (function (_super) { - } - return { - allowGzip: true, -- url: ("https:/" + "/" + host + apiKey), -+ url: process.env.USE_MAINNET_FORK === "true" -+ ? process.env.MAINNET_FORK_URL -+ : ("https:/" + "/" + host + apiKey), - throttleCallback: function (attempt, url) { - if (apiKey === defaultApiKey) { - (0, formatter_1.showThrottleMessage)(); -diff --git a/node_modules/@ethersproject/providers/lib/alchemy-provider.js.map b/node_modules/@ethersproject/providers/lib/alchemy-provider.js.map -index 9bd7b34..ae72f4f 100644 ---- a/node_modules/@ethersproject/providers/lib/alchemy-provider.js.map -+++ b/node_modules/@ethersproject/providers/lib/alchemy-provider.js.map -@@ -1 +1 @@ --{"version":3,"file":"alchemy-provider.js","sourceRoot":"","sources":["../src.ts/alchemy-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -+{"version":3,"file":"alchemy-provider.js","sourceRoot":"","sources":["../src.ts/alchemy-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@ethersproject/providers/lib/json-rpc-provider.d.ts.map b/node_modules/@ethersproject/providers/lib/json-rpc-provider.d.ts.map -index dd2f5e6..bf9d68c 100644 ---- a/node_modules/@ethersproject/providers/lib/json-rpc-provider.d.ts.map -+++ b/node_modules/@ethersproject/providers/lib/json-rpc-provider.d.ts.map -@@ -1 +1 @@ --{"version":3,"file":"json-rpc-provider.d.ts","sourceRoot":"","sources":["../src.ts/json-rpc-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -+{"version":3,"file":"json-rpc-provider.d.ts","sourceRoot":"","sources":["../src.ts/json-rpc-provider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAE1G,OAAO,EAAE,KAAK,EAAkC,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAA6B,UAAU,EAA6D,MAAM,2BAA2B,CAAC;AAE7I,OAAO,EAAE,UAAU,EAAiB,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAmB,MAAM,oBAAoB,CAAC;AAMrE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AA6FtD,qBAAa,aAAc,SAAQ,MAAO,YAAW,eAAe;IAChE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;gBAEL,gBAAgB,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IA0B9F,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa;IAM1C,gBAAgB,IAAI,aAAa;IAIjC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAe7B,wBAAwB,CAAC,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAmDtF,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAMvE,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsB1F,WAAW,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrD,kBAAkB,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ5D,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAclI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAOnD;AAED,cAAM,sBAAuB,SAAQ,aAAa;IAC9C,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAgB7F;AAQD,qBAAa,eAAgB,SAAQ,YAAY;IAC7C,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IAEpC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAKhB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAKzC;gBAEW,GAAG,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;IAkC/D,MAAM,CAAC,UAAU,IAAI,MAAM;IAI3B,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAY3B,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC;IAgChD,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa;IAI1D,kBAAkB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,sBAAsB;IAI5E,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAMtC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAqDtD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAE;IA4D7D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IA+BxD,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAK/B,aAAa,IAAI,IAAI;IA2CrB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAgB9B,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA;KAAE;CAgC9I"} -\ No newline at end of file -diff --git a/node_modules/@ethersproject/providers/lib/json-rpc-provider.js b/node_modules/@ethersproject/providers/lib/json-rpc-provider.js -index ecac1e7..643f6d0 100644 ---- a/node_modules/@ethersproject/providers/lib/json-rpc-provider.js -+++ b/node_modules/@ethersproject/providers/lib/json-rpc-provider.js -@@ -504,7 +504,9 @@ var JsonRpcProvider = /** @class */ (function (_super) { - if (chainId != null) { - getNetwork = (0, properties_1.getStatic)(this.constructor, "getNetwork"); - try { -- return [2 /*return*/, getNetwork(bignumber_1.BigNumber.from(chainId).toNumber())]; -+ return [2 /*return*/, process.env.USE_MAINNET_FORK === "true" -+ ? getNetwork(1) -+ : getNetwork(bignumber_1.BigNumber.from(chainId).toNumber())]; - } - catch (error) { - return [2 /*return*/, logger.throwError("could not detect network", logger_1.Logger.errors.NETWORK_ERROR, { -diff --git a/node_modules/@ethersproject/providers/lib/json-rpc-provider.js.map b/node_modules/@ethersproject/providers/lib/json-rpc-provider.js.map -index 9d3ce2d..68a0c77 100644 ---- a/node_modules/@ethersproject/providers/lib/json-rpc-provider.js.map -+++ b/node_modules/@ethersproject/providers/lib/json-rpc-provider.js.map -@@ -1 +1 @@ --{"version":3,"file":"json-rpc-provider.js","sourceRoot":"","sources":["../src.ts/json-rpc-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -+{"version":3,"file":"json-rpc-provider.js","sourceRoot":"","sources":["../src.ts/json-rpc-provider.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts b/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts -index 1ae53e0..38fb985 100644 ---- a/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts -+++ b/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts -@@ -88,13 +88,16 @@ export class AlchemyProvider extends UrlJsonRpcProvider { - case "optimism-kovan": - host = "opt-kovan.g.alchemy.com/v2/"; - break; -+ - default: - logger.throwArgumentError("unsupported network", "network", arguments[0]); - } - - return { - allowGzip: true, -- url: ("https:/" + "/" + host + apiKey), -+ url: process.env.USE_MAINNET_FORK === "true" -+ ? process.env.MAINNET_FORK_URL -+ : ("https:/" + "/" + host + apiKey), - throttleCallback: (attempt: number, url: string) => { - if (apiKey === defaultApiKey) { - showThrottleMessage(); -diff --git a/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts b/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts -index 3b3df22..a1f3c8e 100644 ---- a/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts -+++ b/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts -@@ -390,7 +390,9 @@ export class JsonRpcProvider extends BaseProvider { - if (chainId != null) { - const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, "getNetwork"); - try { -- return getNetwork(BigNumber.from(chainId).toNumber()); -+ return process.env.USE_MAINNET_FORK === "true" -+ ? getNetwork(1) -+ : getNetwork(BigNumber.from(chainId).toNumber()); - } catch (error) { - return logger.throwError("could not detect network", Logger.errors.NETWORK_ERROR, { - chainId: chainId, diff --git a/patches/@ethersproject+providers+5.7.2.patch b/patches/@ethersproject+providers+5.7.2.patch new file mode 100644 index 0000000000..98bfe4e241 --- /dev/null +++ b/patches/@ethersproject+providers+5.7.2.patch @@ -0,0 +1,268 @@ +diff --git a/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js b/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js +index 9c80426..89307e9 100644 +--- a/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js ++++ b/node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js +@@ -1,11 +1,11 @@ + "use strict"; +-import { defineReadOnly } from "@ethersproject/properties"; +-import { showThrottleMessage } from "./formatter"; +-import { WebSocketProvider } from "./websocket-provider"; +-import { Logger } from "@ethersproject/logger"; +-import { version } from "./_version"; ++import {defineReadOnly} from "@ethersproject/properties"; ++import {showThrottleMessage} from "./formatter"; ++import {WebSocketProvider} from "./websocket-provider"; ++import {Logger} from "@ethersproject/logger"; ++import {version} from "./_version"; + const logger = new Logger(version); +-import { UrlJsonRpcProvider } from "./url-json-rpc-provider"; ++import {UrlJsonRpcProvider} from "./url-json-rpc-provider"; + // This key was provided to ethers.js by Alchemy to be used by the + // default provider, but it is recommended that for your own + // production environments, that you acquire your own API key at: +@@ -68,7 +68,9 @@ export class AlchemyProvider extends UrlJsonRpcProvider { + } + return { + allowGzip: true, +- url: ("https:/" + "/" + host + apiKey), ++ url: process.env.USE_MAINNET_FORK === "true" ++ ? process.env.MAINNET_FORK_URL ++ : ("https:/" + "/" + host + apiKey), + throttleCallback: (attempt, url) => { + if (apiKey === defaultApiKey) { + showThrottleMessage(); +diff --git a/node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js b/node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js +index 7db7f78..b95b041 100644 +--- a/node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js ++++ b/node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js +@@ -1,6 +1,6 @@ +-import { deepCopy } from "@ethersproject/properties"; +-import { fetchJson } from "@ethersproject/web"; +-import { JsonRpcProvider } from "./json-rpc-provider"; ++import {deepCopy} from "@ethersproject/properties"; ++import {fetchJson} from "@ethersproject/web"; ++import {JsonRpcProvider} from "./json-rpc-provider"; + // Experimental + export class JsonRpcBatchProvider extends JsonRpcProvider { + send(method, params) { +@@ -13,7 +13,7 @@ export class JsonRpcBatchProvider extends JsonRpcProvider { + if (this._pendingBatch == null) { + this._pendingBatch = []; + } +- const inflightRequest = { request, resolve: null, reject: null }; ++ const inflightRequest = {request, resolve: null, reject: null}; + const promise = new Promise((resolve, reject) => { + inflightRequest.resolve = resolve; + inflightRequest.reject = reject; +@@ -34,13 +34,14 @@ export class JsonRpcBatchProvider extends JsonRpcProvider { + request: deepCopy(request), + provider: this + }); +- return fetchJson(this.connection, JSON.stringify(request)).then((result) => { ++ return fetchJson(this.connection, JSON.stringify(request)).then((rawResult) => { + this.emit("debug", { + action: "response", + request: request, +- response: result, ++ response: rawResult, + provider: this + }); ++ const result = rawResult.sort((a, b) => a.id - b.id); + // For each result, feed it to the correct Promise, depending + // on whether it was a success or error + batch.forEach((inflightRequest, index) => { +diff --git a/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js b/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +index 02f6b39..be59be6 100644 +--- a/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js ++++ b/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +@@ -1,25 +1,25 @@ + "use strict"; + var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { +- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } ++ function adopt(value) {return value instanceof P ? value : new P(function (resolve) {resolve(value);});} + return new (P || (P = Promise))(function (resolve, reject) { +- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } +- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } +- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } ++ function fulfilled(value) {try {step(generator.next(value));} catch (e) {reject(e);} } ++ function rejected(value) {try {step(generator["throw"](value));} catch (e) {reject(e);} } ++ function step(result) {result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);} + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; +-import { Signer } from "@ethersproject/abstract-signer"; +-import { BigNumber } from "@ethersproject/bignumber"; +-import { hexlify, hexValue, hexZeroPad, isHexString } from "@ethersproject/bytes"; +-import { _TypedDataEncoder } from "@ethersproject/hash"; +-import { checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy } from "@ethersproject/properties"; +-import { toUtf8Bytes } from "@ethersproject/strings"; +-import { accessListify } from "@ethersproject/transactions"; +-import { fetchJson, poll } from "@ethersproject/web"; +-import { Logger } from "@ethersproject/logger"; +-import { version } from "./_version"; ++import {Signer} from "@ethersproject/abstract-signer"; ++import {BigNumber} from "@ethersproject/bignumber"; ++import {hexlify, hexValue, hexZeroPad, isHexString} from "@ethersproject/bytes"; ++import {_TypedDataEncoder} from "@ethersproject/hash"; ++import {checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy} from "@ethersproject/properties"; ++import {toUtf8Bytes} from "@ethersproject/strings"; ++import {accessListify} from "@ethersproject/transactions"; ++import {fetchJson, poll} from "@ethersproject/web"; ++import {Logger} from "@ethersproject/logger"; ++import {version} from "./_version"; + const logger = new Logger(version); +-import { BaseProvider } from "./base-provider"; ++import {BaseProvider} from "./base-provider"; + const errorGas = ["call", "estimateGas"]; + function spelunk(value, requireData) { + if (value == null) { +@@ -29,7 +29,7 @@ function spelunk(value, requireData) { + if (typeof (value.message) === "string" && value.message.match("reverted")) { + const data = isHexString(value.data) ? value.data : null; + if (!requireData || data) { +- return { message: value.message, data }; ++ return {message: value.message, data}; + } + } + // Spelunk further... +@@ -47,7 +47,7 @@ function spelunk(value, requireData) { + try { + return spelunk(JSON.parse(value), requireData); + } +- catch (error) { } ++ catch (error) {} + } + return null; + } +@@ -217,7 +217,7 @@ export class JsonRpcSigner extends Signer { + return resolveProperties({ + tx: resolveProperties(transaction), + sender: fromAddress +- }).then(({ tx, sender }) => { ++ }).then(({tx, sender}) => { + if (tx.from != null) { + if (tx.from.toLowerCase() !== sender) { + logger.throwArgumentError("from address mismatch", "transaction", transaction); +@@ -226,7 +226,7 @@ export class JsonRpcSigner extends Signer { + else { + tx.from = sender; + } +- const hexTx = this.provider.constructor.hexlifyTransaction(tx, { from: true }); ++ const hexTx = this.provider.constructor.hexlifyTransaction(tx, {from: true}); + return this.provider.send("eth_sendTransaction", [hexTx]).then((hash) => { + return hash; + }, (error) => { +@@ -261,7 +261,7 @@ export class JsonRpcSigner extends Signer { + return undefined; + } + return this.provider._wrapTransaction(tx, hash, blockNumber); +- }), { oncePoll: this.provider }); ++ }), {oncePoll: this.provider}); + } + catch (error) { + error.transactionHash = hash; +@@ -326,7 +326,7 @@ export class JsonRpcSigner extends Signer { + logger.throwError("user rejected signing", Logger.errors.ACTION_REJECTED, { + action: "_signTypedData", + from: address, +- messageData: { domain: populated.domain, types, value: populated.value } ++ messageData: {domain: populated.domain, types, value: populated.value} + }); + } + throw error; +@@ -354,7 +354,7 @@ class UncheckedJsonRpcSigner extends JsonRpcSigner { + chainId: null, + confirmations: 0, + from: null, +- wait: (confirmations) => { return this.provider.waitForTransaction(hash, confirmations); } ++ wait: (confirmations) => {return this.provider.waitForTransaction(hash, confirmations);} + }; + }); + } +@@ -424,12 +424,14 @@ export class JsonRpcProvider extends BaseProvider { + try { + chainId = yield this.send("net_version", []); + } +- catch (error) { } ++ catch (error) {} + } + if (chainId != null) { + const getNetwork = getStatic(this.constructor, "getNetwork"); + try { +- return getNetwork(BigNumber.from(chainId).toNumber()); ++ return process.env.USE_MAINNET_FORK === "true" ++ ? getNetwork(1) ++ : getNetwork(BigNumber.from(chainId).toNumber()); + } + catch (error) { + return logger.throwError("could not detect network", Logger.errors.NETWORK_ERROR, { +@@ -529,11 +531,11 @@ export class JsonRpcProvider extends BaseProvider { + return ["eth_getTransactionReceipt", [params.transactionHash]]; + case "call": { + const hexlifyTransaction = getStatic(this.constructor, "hexlifyTransaction"); +- return ["eth_call", [hexlifyTransaction(params.transaction, { from: true }), params.blockTag]]; ++ return ["eth_call", [hexlifyTransaction(params.transaction, {from: true}), params.blockTag]]; + } + case "estimateGas": { + const hexlifyTransaction = getStatic(this.constructor, "hexlifyTransaction"); +- return ["eth_estimateGas", [hexlifyTransaction(params.transaction, { from: true })]]; ++ return ["eth_estimateGas", [hexlifyTransaction(params.transaction, {from: true})]]; + } + case "getLogs": + if (params.filter && params.filter.address != null) { +@@ -566,7 +568,7 @@ export class JsonRpcProvider extends BaseProvider { + } + const args = this.prepareRequest(method, params); + if (args == null) { +- logger.throwError(method + " not implemented", Logger.errors.NOT_IMPLEMENTED, { operation: method }); ++ logger.throwError(method + " not implemented", Logger.errors.NOT_IMPLEMENTED, {operation: method}); + } + try { + return yield this.send(args[0], args[1]); +@@ -614,13 +616,13 @@ export class JsonRpcProvider extends BaseProvider { + self.send("eth_uninstallFilter", [filterId]); + return; + } +- setTimeout(function () { poll(); }, 0); ++ setTimeout(function () {poll();}, 0); + return null; +- }).catch((error) => { }); ++ }).catch((error) => {}); + } + poll(); + return filterId; +- }).catch((error) => { }); ++ }).catch((error) => {}); + } + _stopEvent(event) { + if (event.tag === "pending" && this.listenerCount("pending") === 0) { +diff --git a/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts b/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts +index f23b494..0355b84 100644 +--- a/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts ++++ b/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts +@@ -85,7 +85,9 @@ export class AlchemyProvider extends UrlJsonRpcProvider { + + return { + allowGzip: true, +- url: ("https:/" + "/" + host + apiKey), ++ url: process.env.USE_MAINNET_FORK === "true" ++ ? process.env.MAINNET_FORK_URL ++ : ("https:/" + "/" + host + apiKey), + throttleCallback: (attempt: number, url: string) => { + if (apiKey === defaultApiKey) { + showThrottleMessage(); +diff --git a/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts b/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts +index de4957f..e4227da 100644 +--- a/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts ++++ b/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts +@@ -470,7 +470,9 @@ export class JsonRpcProvider extends BaseProvider { + if (chainId != null) { + const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, "getNetwork"); + try { +- return getNetwork(BigNumber.from(chainId).toNumber()); ++ return process.env.USE_MAINNET_FORK === "true" ++ ? getNetwork(1) ++ : getNetwork(BigNumber.from(chainId).toNumber()); + } catch (error) { + return logger.throwError("could not detect network", Logger.errors.NETWORK_ERROR, { + chainId: chainId, diff --git a/provider-bridge-shared/eip-1193.ts b/provider-bridge-shared/eip-1193.ts index af1fbcc57a..b81fa684fa 100644 --- a/provider-bridge-shared/eip-1193.ts +++ b/provider-bridge-shared/eip-1193.ts @@ -35,12 +35,12 @@ export const EIP1193_ERROR_CODES = { } as const export type EIP1193ErrorPayload = - | typeof EIP1193_ERROR_CODES[keyof typeof EIP1193_ERROR_CODES] & { - data?: unknown - } + (typeof EIP1193_ERROR_CODES)[keyof typeof EIP1193_ERROR_CODES] & { + data?: unknown + } export type EIP1193ErrorCodeNumbers = Pick< - typeof EIP1193_ERROR_CODES[keyof typeof EIP1193_ERROR_CODES], + (typeof EIP1193_ERROR_CODES)[keyof typeof EIP1193_ERROR_CODES], "code" > export class EIP1193Error extends Error { @@ -54,7 +54,7 @@ export class EIP1193Error extends Error { } export function isEIP1193ErrorCodeNumber( - code: unknown + code: unknown, ): code is EIP1193ErrorCodeNumbers { return ( isNumber(code) && diff --git a/provider-bridge-shared/runtime-typechecks.ts b/provider-bridge-shared/runtime-typechecks.ts index 39164c5121..5ac56bb55d 100644 --- a/provider-bridge-shared/runtime-typechecks.ts +++ b/provider-bridge-shared/runtime-typechecks.ts @@ -12,7 +12,7 @@ export function getType(arg: unknown): string { } export function isObject( - arg: unknown + arg: unknown, ): arg is Record { return getType(arg) === "Object" } @@ -38,13 +38,13 @@ export function isMessageEvent(arg: unknown): arg is MessageEvent { } export function isRPCRequestParamsType( - arg: unknown + arg: unknown, ): arg is RPCRequest["params"] { return isObject(arg) || isArray(arg) } export function isWindowResponseEvent( - arg: unknown + arg: unknown, ): arg is WindowResponseEvent { return ( isMessageEvent(arg) && @@ -70,10 +70,10 @@ export const AllowedQueryParamPage = { } as const export type AllowedQueryParamPageType = - typeof AllowedQueryParamPage[keyof typeof AllowedQueryParamPage] + (typeof AllowedQueryParamPage)[keyof typeof AllowedQueryParamPage] export function isAllowedQueryParamPage( - url: unknown + url: unknown, ): url is AllowedQueryParamPageType { // The typing for Array.includes in `lib.es.2016.array.include.ts` does not make any sense here -> Object.values // interface Array { ... includes(searchElement: T, fromIndex?: number): boolean; ... @@ -81,7 +81,7 @@ export function isAllowedQueryParamPage( } export function isTahoInternalCommunication( - arg: unknown + arg: unknown, ): arg is TahoInternalCommunication { return isObject(arg) && arg.id === "tallyHo" } diff --git a/provider-bridge/index.ts b/provider-bridge/index.ts index 17fa89844e..622f058614 100644 --- a/provider-bridge/index.ts +++ b/provider-bridge/index.ts @@ -25,7 +25,7 @@ export function connectProviderBridge(): void { const faviconElements: NodeListOf = window.document.querySelectorAll("link[rel*='icon']") const largestFavicon = [...faviconElements].sort((el) => - parseInt(el.sizes?.toString().split("x")[0], 10) + parseInt(el.sizes?.toString().split("x")[0], 10), )[0] const faviconUrl = largestFavicon?.href ?? "" const { title } = window.document ?? "" @@ -45,7 +45,7 @@ export function connectProviderBridge(): void { // eslint-disable-next-line no-console console.log( `%c content: inpage > background: ${JSON.stringify(event.data)}`, - "background: #bada55; color: #222" + "background: #bada55; color: #222", ) port.postMessage(event.data) @@ -57,14 +57,14 @@ export function connectProviderBridge(): void { // eslint-disable-next-line no-console console.log( `%c content: background > inpage: ${JSON.stringify(data)}`, - "background: #222; color: #bada55" + "background: #222; color: #bada55", ) window.postMessage( { ...data, target: WINDOW_PROVIDER_TARGET, }, - windowOriginAtLoadTime + windowOriginAtLoadTime, ) }) @@ -93,7 +93,7 @@ export function injectTahoWindowProvider(): void { throw new Error( `Taho: oh nos the content-script failed to initilaize the Taho window provider. ${e} - It's time for a seppuku...🗡` + It's time for a seppuku...🗡`, ) } } diff --git a/scripts/key-generation/export-key-as-json.js b/scripts/key-generation/export-key-as-json.js index 6bfa54ccea..229d14403f 100644 --- a/scripts/key-generation/export-key-as-json.js +++ b/scripts/key-generation/export-key-as-json.js @@ -5,7 +5,7 @@ const wallet = require("ethereumjs-wallet").default const pk = Buffer.from( process.env.PRIVATE_KEY, // should not contrain `0x` prefix - "hex" + "hex", ) const account = wallet.fromPrivateKey(pk) const password = process.env.PASSWORD diff --git a/scripts/unreliable-rpc-provider-utils.ts b/scripts/unreliable-rpc-provider-utils.ts index bd1b955f35..efe564ec46 100644 --- a/scripts/unreliable-rpc-provider-utils.ts +++ b/scripts/unreliable-rpc-provider-utils.ts @@ -2,11 +2,11 @@ export const patchRPCURL = (url: string): string => `http://localhost:9000?rpc=${url}` export const patchRPCURLS = ( - chainIDToRPCMap: Record + chainIDToRPCMap: Record, ): typeof chainIDToRPCMap => Object.fromEntries( Object.entries(chainIDToRPCMap).map(([_, urls]) => [ _, urls.map(patchRPCURL), - ]) + ]), ) diff --git a/setupJest.ts b/setupJest.ts index 138782955e..3b823f011d 100644 --- a/setupJest.ts +++ b/setupJest.ts @@ -42,7 +42,7 @@ Object.defineProperty(Dexie.dependencies, "indexedDB", { Object.defineProperty(window, "fetch", { writable: true, value: async ( - url: string + url: string, ): Promise<{ status: number; body: string | Buffer } | undefined> => { if (url.endsWith(".wasm")) { const file = readFileSync(url) diff --git a/src/background.ts b/src/background.ts index 37d9dce508..104dec640b 100644 --- a/src/background.ts +++ b/src/background.ts @@ -20,7 +20,7 @@ browser.runtime.onInstalled.addListener((obj) => { !isEnabled(FeatureFlags.SWITCH_RUNTIME_FLAGS) ) { Object.keys(RuntimeFlag).forEach((flagName) => - localStorage.removeItem(flagName) + localStorage.removeItem(flagName), ) } }) diff --git a/src/popup.ts b/src/popup.ts index 0ae8be6f96..00ee084114 100644 --- a/src/popup.ts +++ b/src/popup.ts @@ -12,7 +12,7 @@ setTimeout(() => { const state = window.history?.state || {} let reloadCount = state?.reloadCount || 0 const navigationItem = performance.getEntriesByType( - "navigation" + "navigation", )[0] as PerformanceNavigationTiming if (navigationItem?.type?.toString() === "reload") { diff --git a/src/window-provider.ts b/src/window-provider.ts index dad14ab677..d685734d94 100644 --- a/src/window-provider.ts +++ b/src/window-provider.ts @@ -15,21 +15,19 @@ const tahoWindowProvider: TahoProvider = new TahoWindowProvider({ origin: window.location.origin, }) -const tahoRoutedProperties = new Set( - [ - "request", - "isConnected", - "enable", - "send", - "sendAsync", - "on", - "addListener", - "removeListener", - "removeAllListeners", - "listeners", - "listenerCount", - ] /* satisfies (keyof TahoWindowProvider)[] FIXME TypeScript 4.9 */ -) +const tahoRoutedProperties = new Set([ + "request", + "isConnected", + "enable", + "send", + "sendAsync", + "on", + "addListener", + "removeListener", + "removeAllListeners", + "listeners", + "listenerCount", +] satisfies (keyof TahoWindowProvider)[]) // Used exclusively if Taho is set to replace MetaMask AND MetaMask is not seen // to be installed. In this case, we drop a MetaMask mock so that sites that @@ -99,7 +97,7 @@ function wrapMetaMaskProvider(provider: WalletProvider): { // attempt at connecting. tahoWindowProvider, prop, - tahoWindowProvider + tahoWindowProvider, ) } @@ -130,7 +128,7 @@ function wrapMetaMaskProvider(provider: WalletProvider): { * Taho when it is set as default. */ function metaMaskWrappedProviders( - providers: (WalletProvider | undefined)[] + providers: (WalletProvider | undefined)[], ): WalletProvider[] { const tahoIsDefault = window.walletRouter !== undefined && @@ -161,7 +159,7 @@ function metaMaskWrappedProviders( metaMaskDetected: metaMaskDetected || wasMetaMaskLike, } }, - { defaultManagedProviders: [], metaMaskDetected: false } + { defaultManagedProviders: [], metaMaskDetected: false }, ) if (!metaMaskDetected && tahoIsDefault) { @@ -214,13 +212,13 @@ if (!window.walletRouter) { providers: dedupedProviders, shouldSetTallyForCurrentProvider( shouldSetTally: boolean, - shouldReload = false + shouldReload = false, ) { this.shouldSetTahoForCurrentProvider(shouldSetTally, shouldReload) }, shouldSetTahoForCurrentProvider( shouldSetTaho: boolean, - shouldReload = false + shouldReload = false, ) { if (shouldSetTaho && this.currentProvider !== this.tahoProvider) { this.currentProvider = this.tahoProvider @@ -239,8 +237,8 @@ if (!window.walletRouter) { this.currentProvider, ...metaMaskWrappedProviders( this.providers.filter( - (provider: WalletProvider) => provider !== this.currentProvider - ) + (provider: WalletProvider) => provider !== this.currentProvider, + ), ), ] @@ -255,7 +253,7 @@ if (!window.walletRouter) { } }, routeToNewNonTahoDefault( - request: Required + request: Required, ): Promise { // Don't route to a new default if it's Taho. This avoids situations // where Taho is default, then default is turned off, but no other @@ -263,7 +261,7 @@ if (!window.walletRouter) { // as the only other provider. if (this.currentProvider === this.tahoProvider) { return Promise.reject( - new Error("Only the Taho provider is installed.") + new Error("Only the Taho provider is installed."), ) } return this.currentProvider.request(request) @@ -320,7 +318,7 @@ Object.defineProperty(window, "ethereum", { get() { if (!window.walletRouter) { throw new Error( - "window.walletRouter is expected to be set to change the injected provider on window.ethereum." + "window.walletRouter is expected to be set to change the injected provider on window.ethereum.", ) } if ( @@ -371,7 +369,7 @@ Object.defineProperty(window, "ethereum", { // attempt at connecting. window.walletRouter?.currentProvider ?? target, prop, - target + target, ) }, }) diff --git a/ui/__mocks__/IntersectionObserver.ts b/ui/__mocks__/IntersectionObserver.ts index 50913e7a75..8b76ee16e6 100644 --- a/ui/__mocks__/IntersectionObserver.ts +++ b/ui/__mocks__/IntersectionObserver.ts @@ -2,7 +2,7 @@ export default class IntersectionObserverMock { callbackMap: Map void> = new Map() constructor( - protected callback: (entry: [Partial]) => void + protected callback: (entry: [Partial]) => void, ) {} observe(element: HTMLElement): void { diff --git a/ui/_locales/i18n.ts b/ui/_locales/i18n.ts index 2f0de90501..290fdf7a43 100644 --- a/ui/_locales/i18n.ts +++ b/ui/_locales/i18n.ts @@ -30,7 +30,7 @@ const setLanguage = (lang: string): void => { declare module "react-i18next" { interface CustomTypeOptions { - resources: typeof resources["en"] + resources: (typeof resources)["en"] } } diff --git a/ui/components/AccountItem/AccountItemEditName.tsx b/ui/components/AccountItem/AccountItemEditName.tsx index f5ff47299c..5968172950 100644 --- a/ui/components/AccountItem/AccountItemEditName.tsx +++ b/ui/components/AccountItem/AccountItemEditName.tsx @@ -40,7 +40,7 @@ export default function AccountItemEditName({ ( event: | React.FormEvent - | React.MouseEvent + | React.MouseEvent, ) => { event.preventDefault() if (!newName) { @@ -55,11 +55,11 @@ export default function AccountItemEditName({ addOrEditAddressName({ ...addressOnNetwork, name: newName, - }) + }), ) close() }, - [addressOnNetwork, close, dispatch, error, newName, t] + [addressOnNetwork, close, dispatch, error, newName, t], ) return ( diff --git a/ui/components/AccountItem/AccountItemRemovalConfirm.tsx b/ui/components/AccountItem/AccountItemRemovalConfirm.tsx index a61677f524..c0a8eb9b78 100644 --- a/ui/components/AccountItem/AccountItemRemovalConfirm.tsx +++ b/ui/components/AccountItem/AccountItemRemovalConfirm.tsx @@ -40,7 +40,9 @@ export default function AccountItemRemovalConfirm({ const dispatch = useBackgroundDispatch() const areInternalSignersUnlocked = useAreInternalSignersUnlocked(false) const history = useHistory() - const keyring = useBackgroundSelector(selectKeyringByAddress(address)) + const keyring = useBackgroundSelector((state) => + selectKeyringByAddress(state, address), + ) const { selectedAddress, accountsData } = useBackgroundSelector((state) => ({ selectedAddress: state.ui.selectedAccount.address, accountsData: state.account.accountsData, @@ -50,7 +52,7 @@ export default function AccountItemRemovalConfirm({ const lastAddressInKeyring = keyring?.addresses.length === 1 const ledgerDeviceByAddress = useBackgroundSelector( - selectLedgerDeviceByAddresses + selectLedgerDeviceByAddresses, ) const allAddresses = useBackgroundSelector(getAllAddresses) @@ -63,7 +65,7 @@ export default function AccountItemRemovalConfirm({ !allAddresses.some( (otherAddress: string) => address !== otherAddress && - ledgerDeviceByAddress[otherAddress]?.id === signer.deviceID + ledgerDeviceByAddress[otherAddress]?.id === signer.deviceID, ) const lastAccountInTallyWallet = Object.keys(allAddresses).length === 1 @@ -119,7 +121,7 @@ export default function AccountItemRemovalConfirm({ addressOnNetwork: { address, network }, signer: accountSigners[address], lastAddressInAccount, - }) + }), ) if (lastAccountInTallyWallet) { @@ -130,14 +132,14 @@ export default function AccountItemRemovalConfirm({ if (sameEVMAddress(selectedAddress, address)) { const newAddress = Object.keys( - accountsData.evm[network.chainID] + accountsData.evm[network.chainID], ).find((accountAddress) => accountAddress !== address) if (newAddress) { dispatch( setNewSelectedAccount({ address: newAddress, network, - }) + }), ) } } diff --git a/ui/components/AccountsBackup/CopyToClipboard.tsx b/ui/components/AccountsBackup/CopyToClipboard.tsx index 24eca59c74..19be384958 100644 --- a/ui/components/AccountsBackup/CopyToClipboard.tsx +++ b/ui/components/AccountsBackup/CopyToClipboard.tsx @@ -29,7 +29,7 @@ export default function CopyToClipboard({ const dispatch = useBackgroundDispatch() const shouldShowCopyWarning = useBackgroundSelector( - selectShouldShowDismissableItem("copy-sensitive-material-warning") + selectShouldShowDismissableItem("copy-sensitive-material-warning"), ) const [isOpen, setIsOpen] = useState(false) diff --git a/ui/components/AccountsBackup/RevealMnemonic.tsx b/ui/components/AccountsBackup/RevealMnemonic.tsx index ae5ec002fe..032a0589cd 100644 --- a/ui/components/AccountsBackup/RevealMnemonic.tsx +++ b/ui/components/AccountsBackup/RevealMnemonic.tsx @@ -50,7 +50,7 @@ export default function RevealMnemonic({ useEffect(() => { const fetchMnemonic = async () => { const mnemonicText = (await dispatch( - exportMnemonic(address) + exportMnemonic(address), )) as unknown as AsyncThunkFulfillmentType if (mnemonicText) { diff --git a/ui/components/AccountsBackup/RevealPrivateKey.tsx b/ui/components/AccountsBackup/RevealPrivateKey.tsx index 8e7206a5b6..a39be14ef9 100644 --- a/ui/components/AccountsBackup/RevealPrivateKey.tsx +++ b/ui/components/AccountsBackup/RevealPrivateKey.tsx @@ -21,7 +21,7 @@ export default function RevealPrivateKey({ useEffect(() => { const fetchPrivateKey = async () => { const key = (await dispatch( - exportPrivateKey(address) + exportPrivateKey(address), )) as unknown as AsyncThunkFulfillmentType if (key) { diff --git a/ui/components/AccountsNotificationPanel/AccountsNotificationPanelAccounts.tsx b/ui/components/AccountsNotificationPanel/AccountsNotificationPanelAccounts.tsx index 3fdc4daa2c..8dc5703077 100644 --- a/ui/components/AccountsNotificationPanel/AccountsNotificationPanelAccounts.tsx +++ b/ui/components/AccountsNotificationPanel/AccountsNotificationPanelAccounts.tsx @@ -90,7 +90,7 @@ export const walletTypeDetails: { [key in AccountType]: WalletTypeInfo } = { const shouldAddHeader = ( existingAccountTypes: AccountType[], - currentAccountType: AccountType + currentAccountType: AccountType, ): boolean => { // Ledger and read-only accounts have their own sections. // Internal accounts, imported with mnemonic or private key are in the same section so we @@ -132,12 +132,12 @@ function WalletTypeHeader({ const dispatch = useBackgroundDispatch() const settingsBySigner = useBackgroundSelector( - (state) => state.ui.accountSignerSettings + (state) => state.ui.accountSignerSettings, ) const signerSettings = accountSigner.type !== "read-only" ? settingsBySigner.find(({ signer }) => - isSameAccountSignerWithId(signer, accountSigner) + isSameAccountSignerWithId(signer, accountSigner), ) : undefined @@ -313,7 +313,7 @@ export default function AccountsNotificationPanelAccounts({ const isMounted = useRef(false) const accountTotals = useBackgroundSelector( - selectCurrentNetworkAccountTotalsByCategory + selectCurrentNetworkAccountTotalsByCategory, ) const [pendingSelectedAddress, setPendingSelectedAddress] = useState("") @@ -328,7 +328,7 @@ export default function AccountsNotificationPanelAccounts({ setNewSelectedAccount({ address, network: selectedNetwork, - }) + }), ) } @@ -352,7 +352,7 @@ export default function AccountsNotificationPanelAccounts({ }, [history, areInternalSignersUnlocked, dispatch, t]) const existingAccountTypes = accountTypes.filter( - (type) => (accountTotals[type]?.length ?? 0) > 0 + (type) => (accountTotals[type]?.length ?? 0) > 0, ) return ( @@ -376,7 +376,7 @@ export default function AccountsNotificationPanelAccounts({ } return acc }, - {} as { [signerId: string]: AccountTotal[] } + {} as { [signerId: string]: AccountTotal[] }, ) return ( @@ -408,8 +408,8 @@ export default function AccountsNotificationPanelAccounts({ if (accountTotalsBySignerId[0].signerId) { dispatch( deriveAddress( - accountTotalsBySignerId[0].signerId - ) + accountTotalsBySignerId[0].signerId, + ), ) } } @@ -419,12 +419,12 @@ export default function AccountsNotificationPanelAccounts({
    {accountTotalsBySignerId.map((accountTotal) => { const normalizedAddress = normalizeEVMAddress( - accountTotal.address + accountTotal.address, ) const isSelected = sameEVMAddress( normalizedAddress, - selectedAccountAddress + selectedAccountAddress, ) return ( @@ -476,7 +476,7 @@ export default function AccountsNotificationPanelAccounts({ })}
- ) + ), )} ) diff --git a/ui/components/AccountsNotificationPanel/EditSectionForm.tsx b/ui/components/AccountsNotificationPanel/EditSectionForm.tsx index 3086e88bb8..926a9abb30 100644 --- a/ui/components/AccountsNotificationPanel/EditSectionForm.tsx +++ b/ui/components/AccountsNotificationPanel/EditSectionForm.tsx @@ -48,7 +48,7 @@ function EditSectionForm({ callbackRef.current(newName) }, - [error, newName, t] + [error, newName, t], ) return ( diff --git a/ui/components/AccountsNotificationPanel/SigningButton.tsx b/ui/components/AccountsNotificationPanel/SigningButton.tsx index b0c95744e1..cfa027b74c 100644 --- a/ui/components/AccountsNotificationPanel/SigningButton.tsx +++ b/ui/components/AccountsNotificationPanel/SigningButton.tsx @@ -40,7 +40,7 @@ export default function SigningButton({ {t( `accounts.notificationPanel.signing.${ areInternalSignersUnlocked ? "lock" : "unlock" - }` + }`, )} { , - { preloadedState: getPreloadedState("locked") } + { preloadedState: getPreloadedState("locked") }, ) const buttonElement = ui.getByRole("button") @@ -40,7 +40,7 @@ describe("SigningButton", () => { , - { preloadedState: getPreloadedState("unlocked") } + { preloadedState: getPreloadedState("unlocked") }, ) const buttonElement = ui.getByRole("button") diff --git a/ui/components/BalanceReloader/BalanceReloader.tsx b/ui/components/BalanceReloader/BalanceReloader.tsx index 4ff73954ae..e9ce62a307 100644 --- a/ui/components/BalanceReloader/BalanceReloader.tsx +++ b/ui/components/BalanceReloader/BalanceReloader.tsx @@ -12,7 +12,7 @@ export default function BalanceReloader(): ReactElement { // 0 = never const [timeWhenLastReloaded, setTimeWhenLastReloaded] = useLocalStorage( "timeWhenLastReloaded", - "0" + "0", ) const loadingTimeMs = 15000 diff --git a/ui/components/BonusProgram/BonusProgramModal.tsx b/ui/components/BonusProgram/BonusProgramModal.tsx index 03563f8327..0bb8cf4315 100644 --- a/ui/components/BonusProgram/BonusProgramModal.tsx +++ b/ui/components/BonusProgram/BonusProgramModal.tsx @@ -21,7 +21,7 @@ function BonusProgramModalContent(): ReactElement { amount: bonusTotal, decimals: DOGGO.decimals, }, - 2 + 2, ) const referralLink = useMemo( @@ -29,10 +29,10 @@ function BonusProgramModalContent(): ReactElement { link: `${WEBSITE_ORIGIN}/claim/${currentAccount.address}`, shortLink: `${WEBSITE_ORIGIN?.replace( /^https?:\/\//, - "" + "", )}/claim/${truncateAddress(currentAccount.address)}`, }), - [currentAccount.address] + [currentAccount.address], ) const copyLink = useCallback(() => { diff --git a/ui/components/Claim/ClaimDelegate.tsx b/ui/components/Claim/ClaimDelegate.tsx index a92d0a5531..28b04dc31d 100644 --- a/ui/components/Claim/ClaimDelegate.tsx +++ b/ui/components/Claim/ClaimDelegate.tsx @@ -23,7 +23,7 @@ function CustomDelegatePanel({ const [addressInputValue, setAddressInputValue] = useState( selectedDelegate.enteredBy === "custom" ? selectedDelegate.address - : undefined + : undefined, ) const clearSelectedDelegate = useCallback(() => { @@ -33,7 +33,7 @@ function CustomDelegatePanel({ }, [dispatch, selectedDelegate.enteredBy]) const handleAddressInputChange = useCallback( - (value) => { + (value: string) => { if (isAddress(value)) { setErrorMessage("") dispatch(chooseDelegate({ address: value, enteredBy: "custom" })) @@ -47,7 +47,7 @@ function CustomDelegatePanel({ } setAddressInputValue(value) }, - [dispatch, clearSelectedDelegate] + [dispatch, clearSelectedDelegate], ) return ( diff --git a/ui/components/Claim/ClaimFooter.tsx b/ui/components/Claim/ClaimFooter.tsx index e4ea531933..ddbb45c488 100644 --- a/ui/components/Claim/ClaimFooter.tsx +++ b/ui/components/Claim/ClaimFooter.tsx @@ -41,7 +41,7 @@ export default function ClaimFooter({ const buttonText = useMemo( () => ["Get started", "Continue", "I'm In", "Continue", lastStepButtonText], - [lastStepButtonText] + [lastStepButtonText], ) if (isCurrentlyClaiming) { diff --git a/ui/components/Claim/ClaimReferral.tsx b/ui/components/Claim/ClaimReferral.tsx index 376fc7b110..a94e08c77a 100644 --- a/ui/components/Claim/ClaimReferral.tsx +++ b/ui/components/Claim/ClaimReferral.tsx @@ -16,7 +16,7 @@ function DAOButton( props: DAO & { isActive: boolean onSelect: (dao: DAO) => void - } + }, ) { const { address, name, avatar, isActive, onSelect } = props @@ -74,7 +74,7 @@ function getInitialCustomDAO(selectedForBonus: DAO | null, DAOs: DAO[]) { if (!selectedForBonus) return undefined const isCustom = !DAOs.some( - (current) => current.address === selectedForBonus.address + (current) => current.address === selectedForBonus.address, ) return isCustom @@ -93,7 +93,7 @@ export default function ClaimReferral(props: { const amountWithBonus = formatCurrencyAmount( mainCurrency, claimAmount * 0.05, - 2 + 2, ) const [isCustomDAOEmpty, setIsCustomDAOEmpty] = useState(false) const [customAddressForBonus, setCustomAddressForBonus] = useState< @@ -102,7 +102,7 @@ export default function ClaimReferral(props: { const setSelectedForBonus = useCallback( (newDAO: DAO | null) => dispatch(chooseSelectedForBonus(newDAO)), - [dispatch] + [dispatch], ) const handleInputChange = useCallback( @@ -115,7 +115,7 @@ export default function ClaimReferral(props: { setSelectedForBonus(null) } }, - [setSelectedForBonus] + [setSelectedForBonus], ) const handleInputFocus = () => { diff --git a/ui/components/Claim/ClaimReferralByUser.tsx b/ui/components/Claim/ClaimReferralByUser.tsx index 0789fe3de8..4f38fa9f42 100644 --- a/ui/components/Claim/ClaimReferralByUser.tsx +++ b/ui/components/Claim/ClaimReferralByUser.tsx @@ -19,10 +19,10 @@ export default function ClaimReferralByUser({ const amountWithBonus = formatCurrencyAmount( mainCurrency, claimAmount * 0.05, - 2 + 2, ) const referrer: Referrer | null = useBackgroundSelector( - (state) => state.claim.referrer + (state) => state.claim.referrer, ) const discardReferrer = () => dispatch(resetReferrer()) diff --git a/ui/components/Claim/ClaimReview.tsx b/ui/components/Claim/ClaimReview.tsx index f4f486faff..3616f28cc4 100644 --- a/ui/components/Claim/ClaimReview.tsx +++ b/ui/components/Claim/ClaimReview.tsx @@ -19,10 +19,10 @@ export default function ClaimReview({ backToChooseDelegate: () => void }): ReactElement { const { selectedDelegate, selectedForBonus } = useBackgroundSelector( - selectClaimSelections + selectClaimSelections, ) const referrer: Referrer | null = useBackgroundSelector( - (state) => state.claim.referrer + (state) => state.claim.referrer, ) return ( diff --git a/ui/components/DAppConnection/ActiveDAppConnection.tsx b/ui/components/DAppConnection/ActiveDAppConnection.tsx index e401a70ff3..45e357442e 100644 --- a/ui/components/DAppConnection/ActiveDAppConnection.tsx +++ b/ui/components/DAppConnection/ActiveDAppConnection.tsx @@ -31,11 +31,11 @@ export default function ActiveDAppConnection({ allowedPages.map(async (permission) => { if (permission.origin === currentPermission.origin) { return dispatch( - denyOrRevokePermission({ ...permission, state: "deny" }) + denyOrRevokePermission({ ...permission, state: "deny" }), ) } return undefined - }) + }), ) } }, [dispatch, currentPermission, allowedPages]) diff --git a/ui/components/DAppConnection/DAppConnection.tsx b/ui/components/DAppConnection/DAppConnection.tsx index 61d58cfca1..2edf230791 100644 --- a/ui/components/DAppConnection/DAppConnection.tsx +++ b/ui/components/DAppConnection/DAppConnection.tsx @@ -21,14 +21,14 @@ export default function DAppConnection(): ReactElement { lastFocusedWindow: true, }) .then((tabs) => - tabs[0] ? tabs[0] : { url: "", favIconUrl: "", title: "" } + tabs[0] ? tabs[0] : { url: "", favIconUrl: "", title: "" }, ) if (!url) return const { origin } = new URL(url) const allowPermission = allowedPages.find( - (permission) => permission.origin === origin + (permission) => permission.origin === origin, ) if (allowPermission) { diff --git a/ui/components/DAppConnection/DAppConnectionInfoBar.tsx b/ui/components/DAppConnection/DAppConnectionInfoBar.tsx index 387f387b03..6abd6edf3c 100644 --- a/ui/components/DAppConnection/DAppConnectionInfoBar.tsx +++ b/ui/components/DAppConnection/DAppConnectionInfoBar.tsx @@ -98,8 +98,10 @@ function DefaultConnectionPopover({ close }: PopoverProps): ReactElement { background-color: var(--green-120); border: 1px solid var(--green-80); border-radius: 16px; - box-shadow: 0 10px 12px rgba(0, 20, 19, 0.34), - 0 14px 16px rgba(0, 20, 19, 0.24), 0 24px 24px rgba(0, 20, 19, 0.14); + box-shadow: + 0 10px 12px rgba(0, 20, 19, 0.34), + 0 14px 16px rgba(0, 20, 19, 0.24), + 0 24px 24px rgba(0, 20, 19, 0.14); } section:before, @@ -184,7 +186,7 @@ export default function DAppConnectionInfoBar(): ReactElement { const dispatch = useBackgroundDispatch() const shouldImmediatelyShowPopover = useBackgroundSelector( - selectShouldShowDismissableItem("default-connection-popover") + selectShouldShowDismissableItem("default-connection-popover"), ) const [ diff --git a/ui/components/Earn/Clock.tsx b/ui/components/Earn/Clock.tsx index 56a74e1316..cd79db4b08 100644 --- a/ui/components/Earn/Clock.tsx +++ b/ui/components/Earn/Clock.tsx @@ -30,7 +30,8 @@ export default function Clock(): ReactElement { position: relative; width: 52px; text-align: center; - box-shadow: 0px 24px 24px rgba(0, 20, 19, 0.04), + box-shadow: + 0px 24px 24px rgba(0, 20, 19, 0.04), 0px 14px 16px rgba(0, 20, 19, 0.14), 0px 10px 12px rgba(0, 20, 19, 0.54); border-radius: 4px; diff --git a/ui/components/GlobalModal/GlobalModal.tsx b/ui/components/GlobalModal/GlobalModal.tsx index b9beb9216f..9029293140 100644 --- a/ui/components/GlobalModal/GlobalModal.tsx +++ b/ui/components/GlobalModal/GlobalModal.tsx @@ -13,7 +13,7 @@ export default function GlobalModal({ id }: { id: string }): ReactElement { const [showModal, setShowModal] = useLocalStorage( `modal_${id}`, - getLocalStorageItem(`modal_${id}`, "true") + getLocalStorageItem(`modal_${id}`, "true"), ) const handleClick = () => { diff --git a/ui/components/InternalSigner/InternalSignerUnlock.tsx b/ui/components/InternalSigner/InternalSignerUnlock.tsx index b54e3a69d7..f1608a75c8 100644 --- a/ui/components/InternalSigner/InternalSignerUnlock.tsx +++ b/ui/components/InternalSigner/InternalSignerUnlock.tsx @@ -41,7 +41,7 @@ export default function InternalSignerUnlock({ }, [history, areInternalSignersUnlocked, dispatch, t]) const dispatchUnlockWallet = async ( - event: React.FormEvent + event: React.FormEvent, ): Promise => { event.preventDefault() await dispatch(unlockInternalSigners(password)) diff --git a/ui/components/InternalSigner/__tests__/InternalSignerUnlock.test.tsx b/ui/components/InternalSigner/__tests__/InternalSignerUnlock.test.tsx index a7a1aeb29b..d22c7cbb78 100644 --- a/ui/components/InternalSigner/__tests__/InternalSignerUnlock.test.tsx +++ b/ui/components/InternalSigner/__tests__/InternalSignerUnlock.test.tsx @@ -19,7 +19,7 @@ describe("InternalSignerUnlock", () => { test("should not unlock the wallet when an incorrect password is submitted", async () => { const ui = renderWithProviders( , - { preloadedState: getPreloadedState("locked") } + { preloadedState: getPreloadedState("locked") }, ) const inputElement = ui.getByLabelText(label) const submitBtnElement = ui.getByRole("button") diff --git a/ui/components/NFTs/ExploreMarketLink.tsx b/ui/components/NFTs/ExploreMarketLink.tsx index 04af2b6c28..b5d35d6772 100644 --- a/ui/components/NFTs/ExploreMarketLink.tsx +++ b/ui/components/NFTs/ExploreMarketLink.tsx @@ -202,7 +202,7 @@ function ExploreMarketIcon(props: ExploreMarketIconProps): ReactElement { } export default function ExploreMarketLink( - props: ExploreMarketLinkProps + props: ExploreMarketLinkProps, ): ReactElement { const { type, title, url } = props return ( diff --git a/ui/components/NFTs/Filters/FilterList.tsx b/ui/components/NFTs/Filters/FilterList.tsx index f5d66eec80..d225b56aef 100644 --- a/ui/components/NFTs/Filters/FilterList.tsx +++ b/ui/components/NFTs/Filters/FilterList.tsx @@ -68,7 +68,7 @@ const FilterList = React.forwardRef( `} ) - } + }, ) export default FilterList diff --git a/ui/components/NFTs/Filters/NFTsFilters.tsx b/ui/components/NFTs/Filters/NFTsFilters.tsx index df3f39a010..8df301f457 100644 --- a/ui/components/NFTs/Filters/NFTsFilters.tsx +++ b/ui/components/NFTs/Filters/NFTsFilters.tsx @@ -77,21 +77,21 @@ export default function NFTsFilters(): ReactElement { clearTimeout(timerRef.current) } }, - [] + [], ) const handleUpdateSortType = useCallback( (type: SortType) => { dispatch(updateSortType(type)) }, - [dispatch] + [dispatch], ) const handleUpdateCollectionFilter = useCallback( (filter: Filter) => { dispatch(updateCollectionFilter(filter)) }, - [dispatch] + [dispatch], ) const handleUpdateAccountFilter = useCallback( @@ -100,11 +100,11 @@ export default function NFTsFilters(): ReactElement { dispatch(updateAccountFilter(filter)).then(() => { timerRef.current = window.setTimeout( () => setIsLoading(false), - LOADING_DELAY + LOADING_DELAY, ) }) }, - [dispatch] + [dispatch], ) return ( diff --git a/ui/components/NFTs/Filters/__tests__/FilterList.test.tsx b/ui/components/NFTs/Filters/__tests__/FilterList.test.tsx index 2c2e5e424a..e282d67257 100644 --- a/ui/components/NFTs/Filters/__tests__/FilterList.test.tsx +++ b/ui/components/NFTs/Filters/__tests__/FilterList.test.tsx @@ -32,7 +32,7 @@ describe("FilterList", () => { filters={FILTER_LIST} onChange={onChange} emptyMessage={EMPTY_MESSAGE} - /> + />, ) const list = ui.getByTestId("nft_filters_list") @@ -45,7 +45,7 @@ describe("FilterList", () => { filters={[]} onChange={onChange} emptyMessage={EMPTY_MESSAGE} - /> + />, ) const emptyMessage = ui.queryByText(EMPTY_MESSAGE) @@ -58,7 +58,7 @@ describe("FilterList", () => { filters={FILTER_LIST} onChange={onChange} emptyMessage={EMPTY_MESSAGE} - /> + />, ) const items = ui.getAllByTestId("toggle_item") @@ -72,7 +72,7 @@ describe("FilterList", () => { onChange={onChange} emptyMessage={EMPTY_MESSAGE} isLoaded={false} - /> + />, ) const items = ui.getAllByTestId("loading_skeleton") @@ -85,7 +85,7 @@ describe("FilterList", () => { filters={FILTER_LIST} onChange={onChange} emptyMessage={EMPTY_MESSAGE} - /> + />, ) expect(ui.queryByText(FILTER_LIST[0].name)).toBeInTheDocument() @@ -99,17 +99,17 @@ describe("FilterList", () => { filters={FILTER_LIST} onChange={onChange} emptyMessage={EMPTY_MESSAGE} - /> + />, ) const thumbnails = ui.getAllByRole("img") expect(thumbnails.length).toEqual(FILTER_LIST.length) expect(thumbnails[0]).toHaveStyle( - `background: url(${FILTER_LIST[0].thumbnailURL}) center no-repeat` + `background: url(${FILTER_LIST[0].thumbnailURL}) center no-repeat`, ) expect(thumbnails[1]).toHaveStyle( - `background: url(${FILTER_LIST[1].thumbnailURL}) center no-repeat` + `background: url(${FILTER_LIST[1].thumbnailURL}) center no-repeat`, ) }) @@ -119,14 +119,14 @@ describe("FilterList", () => { filters={FILTER_LIST} onChange={onChange} emptyMessage={EMPTY_MESSAGE} - /> + />, ) const thumbnails = ui.getAllByRole("img") expect(thumbnails.length).toEqual(FILTER_LIST.length) expect(thumbnails[2]).toHaveStyle( - `background: url(${STARS_GREY_URL}) center no-repeat` + `background: url(${STARS_GREY_URL}) center no-repeat`, ) }) @@ -136,7 +136,7 @@ describe("FilterList", () => { filters={FILTER_LIST} onChange={onChange} emptyMessage={EMPTY_MESSAGE} - /> + />, ) const toggleButtons = ui.getAllByRole("checkbox") diff --git a/ui/components/NFTs/NFTCollection.tsx b/ui/components/NFTs/NFTCollection.tsx index 6e9469793b..7e59fbec21 100644 --- a/ui/components/NFTs/NFTCollection.tsx +++ b/ui/components/NFTs/NFTCollection.tsx @@ -33,9 +33,9 @@ export default function NFTCollection(props: { fetchNFTsFromCollection({ collectionID: id, account: { address: owner, network }, - }) + }), ), - [id, owner, network, dispatch] + [id, owner, network, dispatch], ) const fetchMore = useCallback( @@ -44,12 +44,12 @@ export default function NFTCollection(props: { fetchMoreNFTsFromCollection({ collectionID: id, account: { address: owner, network }, - }) + }), ), - [id, owner, network, dispatch] + [id, owner, network, dispatch], ) - const intersectionCallback = useCallback( + const intersectionCallback = useCallback( ([element]) => { if (element.isIntersecting && !wasUpdated) { // if collection doesn't have nfts then load some @@ -71,15 +71,15 @@ export default function NFTCollection(props: { } } }, - [fetchCollection, isLoading, isUpdating, wasUpdated, nfts.length] + [fetchCollection, isLoading, isUpdating, wasUpdated, nfts.length], ) const collectionRef = useIntersectionObserver( intersectionCallback, - { threshold: 0.1 } + { threshold: 0.1 }, ) - const loadMoreCallback = useCallback( + const loadMoreCallback = useCallback( ([element]) => { if (element.isIntersecting && !isUpdating) { if (hasNextPage) setIsUpdating(true) // if next page is known show loader @@ -88,12 +88,12 @@ export default function NFTCollection(props: { }) } }, - [fetchMore, hasNextPage, isUpdating] + [fetchMore, hasNextPage, isUpdating], ) const loadMoreRef = useIntersectionObserver( loadMoreCallback, - { threshold: 0.1 } + { threshold: 0.1 }, ) useEffect(() => { @@ -192,8 +192,10 @@ export default function NFTCollection(props: { margin: 8px -16px; padding: 8px 16px 6px; background: var(--green-120); - box-shadow: 0 3px 7px rgb(0 20 19 / 54%), - 0 14px 16px rgb(0 20 19 / 54%), 0 32px 32px rgb(0 20 19 / 20%); + box-shadow: + 0 3px 7px rgb(0 20 19 / 54%), + 0 14px 16px rgb(0 20 19 / 54%), + 0 32px 32px rgb(0 20 19 / 20%); border-radius: 16px; display: flex; flex-wrap: wrap; diff --git a/ui/components/NFTs/NFTItem.tsx b/ui/components/NFTs/NFTItem.tsx index b9ba75d4f1..afcadfa908 100644 --- a/ui/components/NFTs/NFTItem.tsx +++ b/ui/components/NFTs/NFTItem.tsx @@ -9,7 +9,7 @@ import NFTHover from "./NFTHover" import SharedNetworkIcon from "../Shared/SharedNetworkIcon" export default function NFTItem< - T extends NFTCached | NFTCollectionCached + T extends NFTCached | NFTCollectionCached, >(props: { item: T isCollection?: boolean diff --git a/ui/components/NFTs/NFTList.tsx b/ui/components/NFTs/NFTList.tsx index 9805de0545..8eb3b36d19 100644 --- a/ui/components/NFTs/NFTList.tsx +++ b/ui/components/NFTs/NFTList.tsx @@ -20,12 +20,12 @@ export default function NFTList(props: { const [currentNFTPreview, setCurrentNFTPreview] = useState(null) const [currentExpandedID, setCurrentExpandedID] = useState( - null + null, ) const setExpandedID = useCallback( (id: string | null, owner: string | null) => setCurrentExpandedID(`${id}_${owner}`), // TODO: owner can be removed after we will merge collections owned by multiple accounts - [] + [], ) const isReloading = useBackgroundSelector(selectIsReloadingNFTs) @@ -73,7 +73,7 @@ export default function NFTList(props: { `${collection.id}_${collection.owner}` === currentExpandedID } /> - ) + ), )} - getAccountNameOnChain(state, { address: owner, network }) + getAccountNameOnChain(state, { address: owner, network }), ) // Chrome seems to have problems when elements with backdrop style are rendered initially @@ -68,7 +68,7 @@ export default function NFTPreview(props: NFTWithCollection): ReactElement { div.target.classList.add("preview_backdrop") } }, - { threshold: 0.8 } + { threshold: 0.8 }, ) const marketsList = useMemo(() => getRelevantMarketsList(nft), [nft]) @@ -82,9 +82,9 @@ export default function NFTPreview(props: NFTWithCollection): ReactElement { refetchNFTsFromCollection({ collectionID, account: { address: owner, network }, - }) + }), ), - [collectionID, owner, network, dispatch] + [collectionID, owner, network, dispatch], ) const localizedTotalCount = (totalNftCount ?? supply)?.toLocaleString() @@ -237,7 +237,7 @@ export default function NFTPreview(props: NFTWithCollection): ReactElement { {value} - ) + ), )} )} diff --git a/ui/components/NFTs/NFTsExploreBanner.tsx b/ui/components/NFTs/NFTsExploreBanner.tsx index 93e6c90d4d..2b4406e5da 100644 --- a/ui/components/NFTs/NFTsExploreBanner.tsx +++ b/ui/components/NFTs/NFTsExploreBanner.tsx @@ -43,7 +43,7 @@ export default function NFTsExploreBanner(props: { icon, }} /> - ) + ), )} ) : null, - modalElement + modalElement, ) } diff --git a/ui/components/Shared/SharedSecretText.tsx b/ui/components/Shared/SharedSecretText.tsx index 1a43418760..0ca6965e8e 100644 --- a/ui/components/Shared/SharedSecretText.tsx +++ b/ui/components/Shared/SharedSecretText.tsx @@ -73,7 +73,9 @@ export default function SharedSecretText(props: Props): ReactElement { flex-direction: column; align-items: center; justify-content: center; - transition: opacity 200ms ease-in-out, filter 200ms ease-in-out; + transition: + opacity 200ms ease-in-out, + filter 200ms ease-in-out; } `} diff --git a/ui/components/Shared/SharedSelect.tsx b/ui/components/Shared/SharedSelect.tsx index 37c30ca46f..d61a733eb6 100644 --- a/ui/components/Shared/SharedSelect.tsx +++ b/ui/components/Shared/SharedSelect.tsx @@ -58,9 +58,9 @@ export default function SharedSelect(props: Props): ReactElement { : { value: option, label: option, - } + }, ) as Option[], - [initialOptions] + [initialOptions], ) const currentOption = @@ -224,14 +224,17 @@ export default function SharedSelect(props: Props): ReactElement { border-radius: 5px; overflow-y: auto; color: var(--green-60); - box-shadow: 0px 16px 16px rgba(0, 20, 19, 0.14), + box-shadow: + 0px 16px 16px rgba(0, 20, 19, 0.14), 0px 6px 8px rgba(0, 20, 19, 0.24), 0px 2px 4px rgba(0, 20, 19, 0.34); max-height: 0; height: fit-content; opacity: 0; line-height: 1.5; - transition: max-height 0.2s ease-in-out, opacity 0.2s ease-in-out; + transition: + max-height 0.2s ease-in-out, + opacity 0.2s ease-in-out; z-index: 1; } diff --git a/ui/components/Shared/SharedSlideUpMenu.tsx b/ui/components/Shared/SharedSlideUpMenu.tsx index 8b764facc5..b3bfd4d5c7 100644 --- a/ui/components/Shared/SharedSlideUpMenu.tsx +++ b/ui/components/Shared/SharedSlideUpMenu.tsx @@ -15,7 +15,10 @@ const SLIDE_TRANSITION_MS = 445 type Props = { isOpen: boolean close: ( - e: MouseEvent | TouchEvent | React.MouseEvent + e: + | MouseEvent + | TouchEvent + | React.MouseEvent, ) => void children: React.ReactNode customSize?: string @@ -61,7 +64,7 @@ export default function SharedSlideUpMenu(props: Props): ReactElement { const displayChildren = useDelayContentChange( visibleChildren, !isOpen, - SLIDE_TRANSITION_MS + SLIDE_TRANSITION_MS, ) const menuHeight = menuHeights[size] ?? customSize ?? menuHeights.medium @@ -138,7 +141,8 @@ export default function SharedSlideUpMenu(props: Props): ReactElement { z-index: 998; background: var(--green-120); opacity: 0.7; - transition: opacity cubic-bezier(0.19, 1, 0.22, 1) 0.445s, + transition: + opacity cubic-bezier(0.19, 1, 0.22, 1) 0.445s, visiblity 0.445s; } .overlay.closed { @@ -151,8 +155,8 @@ export default function SharedSlideUpMenu(props: Props): ReactElement { } .slide_up_menu.closed { transform: translateY(100%); - transition: transform cubic-bezier(0.19, 1, 0.22, 1) - ${SLIDE_TRANSITION_MS}ms, + transition: + transform cubic-bezier(0.19, 1, 0.22, 1) ${SLIDE_TRANSITION_MS}ms, // Drop opacity all at once at the end. opacity 0ms ${SLIDE_TRANSITION_MS}ms; opacity: 0; diff --git a/ui/components/Shared/SharedTooltip.tsx b/ui/components/Shared/SharedTooltip.tsx index 43430656fa..a5ca2984be 100644 --- a/ui/components/Shared/SharedTooltip.tsx +++ b/ui/components/Shared/SharedTooltip.tsx @@ -27,7 +27,7 @@ interface Props { function getHorizontalPosition( horizontal: HorizontalPosition, width: number, - horizontalShift: number + horizontalShift: number, ) { switch (horizontal) { case "center": @@ -44,7 +44,7 @@ function getHorizontalPosition( function getVerticalPosition( vertical: VerticalPosition, height: number, - verticalShift: number + verticalShift: number, ) { switch (vertical) { case "bottom": @@ -123,8 +123,10 @@ export default function SharedTooltip(props: Props): ReactElement { .tooltip { width: ${width !== undefined ? `${width}px` : "auto"}; position: absolute; - box-shadow: 0 2px 4px rgba(0, 20, 19, 0.24), - 0 6px 8px rgba(0, 20, 19, 0.14), 0 16px 16px rgba(0, 20, 19, 0.04); + box-shadow: + 0 2px 4px rgba(0, 20, 19, 0.24), + 0 6px 8px rgba(0, 20, 19, 0.14), + 0 16px 16px rgba(0, 20, 19, 0.04); background-color: var(--green-20); color: var(--green-95); font-size: 14px; @@ -138,7 +140,7 @@ export default function SharedTooltip(props: Props): ReactElement { ? getHorizontalPosition( horizontalPosition, width, - horizontalShift + horizontalShift, ) : ""} } diff --git a/ui/components/Shared/SharedTwitterButton.tsx b/ui/components/Shared/SharedTwitterButton.tsx index b806f12dcb..87f64f74bf 100644 --- a/ui/components/Shared/SharedTwitterButton.tsx +++ b/ui/components/Shared/SharedTwitterButton.tsx @@ -15,7 +15,7 @@ export default function SharedTwitterButton({ return ( { priceImpact={undefined} isLoading={false} mainCurrencySign={hardcodedMainCurrencySign} - /> + />, ) expect(ui.getByText(`${hardcodedMainCurrencySign}${amount}`)).toBeVisible() }) @@ -25,7 +25,7 @@ describe("PriceDetails", () => { priceImpact={undefined} isLoading={false} mainCurrencySign={hardcodedMainCurrencySign} - /> + />, ) expect(ui.getByText(`<${hardcodedMainCurrencySign}${amount}`)).toBeVisible() }) @@ -39,7 +39,7 @@ describe("PriceDetails", () => { isLoading mainCurrencySign={hardcodedMainCurrencySign} />, - {} + {}, ) expect(ui.getByText(`${hardcodedMainCurrencySign}${amount}`)).toBeVisible() expect(ui.queryByTestId("price_impact_percent")).not.toBeInTheDocument() @@ -54,7 +54,7 @@ describe("PriceDetails", () => { priceImpact={priceImpact} isLoading={false} mainCurrencySign={hardcodedMainCurrencySign} - /> + />, ) expect(ui.getByText(`(${priceImpact}%)`)).toBeVisible() @@ -67,7 +67,7 @@ describe("PriceDetails", () => { priceImpact={undefined} isLoading={false} mainCurrencySign={hardcodedMainCurrencySign} - /> + />, ) expect(ui.queryByTestId("price_impact_percent")).not.toBeInTheDocument() @@ -80,7 +80,7 @@ describe("PriceDetails", () => { priceImpact={0} isLoading={false} mainCurrencySign={hardcodedMainCurrencySign} - /> + />, ) expect(ui.queryByTestId("price_impact_percent")).not.toBeInTheDocument() @@ -93,7 +93,7 @@ describe("PriceDetails", () => { priceImpact={0} isLoading={false} mainCurrencySign={hardcodedMainCurrencySign} - /> + />, ) expect(ui.getByText("No price information")).toBeVisible() @@ -109,7 +109,7 @@ describe("PriceDetails", () => { priceImpact={priceImpact} isLoading={false} mainCurrencySign={hardcodedMainCurrencySign} - /> + />, ) expect(ui.queryByTestId("price_impact_percent")).not.toBeInTheDocument() diff --git a/ui/components/Shared/__tests__/SharedAssetIcon.test.tsx b/ui/components/Shared/__tests__/SharedAssetIcon.test.tsx index b16699c00b..3847b46f3b 100644 --- a/ui/components/Shared/__tests__/SharedAssetIcon.test.tsx +++ b/ui/components/Shared/__tests__/SharedAssetIcon.test.tsx @@ -9,7 +9,7 @@ describe("SharedAssetIcon", () => { size="small" symbol="USDC" logoURL="http://localhost:8097/supercoolassetlogo.jpg" - /> + />, ) expect(ui.getByRole("img")).toBeInTheDocument() @@ -22,7 +22,7 @@ describe("SharedAssetIcon", () => { size="small" symbol="" logoURL="http://localhost:8097/supercoolassetlogo.jpg" - /> + />, ) expect(ui.getByRole("img")).toBeInTheDocument() diff --git a/ui/components/Shared/__tests__/SharedAssetInput.test.tsx b/ui/components/Shared/__tests__/SharedAssetInput.test.tsx index 903d4d82e9..3468601191 100644 --- a/ui/components/Shared/__tests__/SharedAssetInput.test.tsx +++ b/ui/components/Shared/__tests__/SharedAssetInput.test.tsx @@ -98,7 +98,7 @@ describe("SharedAssetInput", () => { selectedAsset={undefined} assetsAndAmounts={[]} label={label} - /> + />, ) expect(ui.getByText(label)).toBeInTheDocument() @@ -195,7 +195,7 @@ describe("SharedAssetInput", () => { test("should display asset price", () => { const ui = renderWithProviders( - + , ) expect(ui.getByText("$1")).toBeVisible() @@ -219,7 +219,7 @@ describe("SharedAssetInput", () => { assetsAndAmounts={assetsAndAmounts} label={label} disableDropdown - /> + />, ) const assetButton = ui.getByText("FAKE") diff --git a/ui/components/Shared/__tests__/SharedCurrentAccountInformation.test.tsx b/ui/components/Shared/__tests__/SharedCurrentAccountInformation.test.tsx index e37897b62b..107095a045 100644 --- a/ui/components/Shared/__tests__/SharedCurrentAccountInformation.test.tsx +++ b/ui/components/Shared/__tests__/SharedCurrentAccountInformation.test.tsx @@ -16,7 +16,7 @@ describe("SharedCurrentAccountInformation", () => { name={name} shortenedAddress="" avatarURL={undefined} - /> + />, ) expect(ui.getByText(name)).toBeInTheDocument() @@ -28,7 +28,7 @@ describe("SharedCurrentAccountInformation", () => { name={undefined} shortenedAddress={shortenedAddress} avatarURL={undefined} - /> + />, ) expect(ui.getByText(shortenedAddress)).toBeInTheDocument() @@ -41,7 +41,7 @@ describe("SharedCurrentAccountInformation", () => { shortenedAddress="" avatarURL={undefined} showLockStatus={false} - /> + />, ) const keyringElement = ui.queryByTestId(keyringId) @@ -55,12 +55,12 @@ describe("SharedCurrentAccountInformation", () => { shortenedAddress="" avatarURL={undefined} showLockStatus - /> + />, ) const keyringElement = ui.getByTestId(keyringId) expect(keyringElement).toBeInTheDocument() expect(keyringElement.firstChild).toHaveStyle( - `mask-image: url("./images/icons/s/${lock}-bold.svg")` + `mask-image: url("./images/icons/s/${lock}-bold.svg")`, ) }) @@ -79,12 +79,12 @@ describe("SharedCurrentAccountInformation", () => { status: "unlocked", }, }, - } + }, ) const keyringElement = ui.getByTestId(keyringId) expect(keyringElement).toBeInTheDocument() expect(keyringElement.firstChild).toHaveStyle( - `mask-image: url("./images/icons/s/${unlock}-bold.svg")` + `mask-image: url("./images/icons/s/${unlock}-bold.svg")`, ) }) }) diff --git a/ui/components/Shared/__tests__/SharedDropDown.test.tsx b/ui/components/Shared/__tests__/SharedDropDown.test.tsx index 4f27f03116..7753c2823b 100644 --- a/ui/components/Shared/__tests__/SharedDropDown.test.tsx +++ b/ui/components/Shared/__tests__/SharedDropDown.test.tsx @@ -21,7 +21,7 @@ describe("SharedDropdown", () => { icon: "somesvg.svg", }, ]} - /> + />, ) const toggler = await ui.findByText("toggle dropdown") @@ -51,7 +51,7 @@ describe("SharedDropdown", () => { icon: "somesvg.svg", }, ]} - /> + />, ) const toggler = await ui.findByText("toggle dropdown") @@ -70,7 +70,7 @@ describe("SharedDropdown", () => { fireEvent.transitionEnd(firstItem, { bubbles: true }) await waitFor(() => - expect(ui.queryByText("First Item")).not.toBeInTheDocument() + expect(ui.queryByText("First Item")).not.toBeInTheDocument(), ) }) }) diff --git a/ui/components/Shared/__tests__/SharedInput.test.tsx b/ui/components/Shared/__tests__/SharedInput.test.tsx index c28ac4f850..f814f53a44 100644 --- a/ui/components/Shared/__tests__/SharedInput.test.tsx +++ b/ui/components/Shared/__tests__/SharedInput.test.tsx @@ -66,7 +66,7 @@ describe("SharedInput", () => { label={label} value={text} errorMessage={errorMessage} - /> + />, ) const errorElement = ui.queryByText(errorMessage) @@ -81,7 +81,7 @@ describe("SharedInput", () => { label={label} value={text} warningMessage={warningMessage} - /> + />, ) const errorElement = ui.queryByText(warningMessage) @@ -97,7 +97,7 @@ describe("SharedInput", () => { value={text} errorMessage={errorMessage} isEmpty - /> + />, ) const inputElement = ui.getByLabelText(label) const errorElement = ui.queryByText(errorMessage) @@ -109,14 +109,14 @@ describe("SharedInput", () => { test("should not be able to type more than 1 character into input", async () => { const maxLength = 1 const ui = render( - + , ) const inputElement = ui.getByLabelText(label) await userEvent.click(inputElement) await userEvent.type(inputElement, text) await waitFor(() => - expect(inputElement).toHaveValue(text.slice(0, maxLength)) + expect(inputElement).toHaveValue(text.slice(0, maxLength)), ) }) diff --git a/ui/components/Shared/__tests__/SharedToggleItem.test.tsx b/ui/components/Shared/__tests__/SharedToggleItem.test.tsx index c45068449f..48305c7d1b 100644 --- a/ui/components/Shared/__tests__/SharedToggleItem.test.tsx +++ b/ui/components/Shared/__tests__/SharedToggleItem.test.tsx @@ -14,7 +14,7 @@ describe("SharedToggleItem", () => { thumbnailURL={undefined} checked={false} onChange={onChange} - /> + />, ) expect(ui.queryByText(NAME)).toBeInTheDocument() @@ -27,7 +27,7 @@ describe("SharedToggleItem", () => { thumbnailURL={undefined} checked={false} onChange={onChange} - /> + />, ) expect(ui.queryByText("0x208e…090cd")).toBeInTheDocument() @@ -41,13 +41,13 @@ describe("SharedToggleItem", () => { thumbnailURL={thumbnailURL} checked onChange={onChange} - /> + />, ) const thumbnail = ui.getByRole("img") expect(thumbnail).toBeInTheDocument() expect(thumbnail).toHaveStyle( - `background: url(${thumbnailURL}) center no-repeat` + `background: url(${thumbnailURL}) center no-repeat`, ) }) @@ -58,13 +58,13 @@ describe("SharedToggleItem", () => { thumbnailURL={undefined} checked onChange={onChange} - /> + />, ) const thumbnail = ui.getByRole("img") expect(thumbnail).toBeInTheDocument() expect(thumbnail).toHaveStyle( - `background: url(${STARS_GREY_URL}) center no-repeat` + `background: url(${STARS_GREY_URL}) center no-repeat`, ) }) @@ -75,7 +75,7 @@ describe("SharedToggleItem", () => { thumbnailURL={undefined} checked onChange={onChange} - /> + />, ) const toggleButton = ui.getByRole("checkbox") @@ -89,7 +89,7 @@ describe("SharedToggleItem", () => { thumbnailURL={undefined} checked={false} onChange={onChange} - /> + />, ) const toggleButton = ui.getByRole("checkbox") diff --git a/ui/components/Shared/__tests__/SharedTooltip.test.tsx b/ui/components/Shared/__tests__/SharedTooltip.test.tsx index 998b15b87c..bf04aac3ba 100644 --- a/ui/components/Shared/__tests__/SharedTooltip.test.tsx +++ b/ui/components/Shared/__tests__/SharedTooltip.test.tsx @@ -11,7 +11,7 @@ describe("SharedTooltip", () => { const ui = render(

{text}

-
+ , ) const tooltipElement = ui.getByTestId(id) diff --git a/ui/components/Signing/SignatureDetails/DataSignatureDetails/TypedDataSignatureDetails.tsx b/ui/components/Signing/SignatureDetails/DataSignatureDetails/TypedDataSignatureDetails.tsx index 83bbcb6dfa..71734dcf2d 100644 --- a/ui/components/Signing/SignatureDetails/DataSignatureDetails/TypedDataSignatureDetails.tsx +++ b/ui/components/Signing/SignatureDetails/DataSignatureDetails/TypedDataSignatureDetails.tsx @@ -61,14 +61,14 @@ function TypedDataFieldValue({ value }: { value: unknown }): ReactElement { } type BasicTypedDataDetailsProps< - T extends Record = Record + T extends Record = Record, > = { primaryType: string fieldsToDisplay: T } function BasicTypedDataDetails< - T extends Record = Record + T extends Record = Record, >({ primaryType, fieldsToDisplay, diff --git a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/DetailsPanel.tsx b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/DetailsPanel.tsx index e7afc19752..c667b4a091 100644 --- a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/DetailsPanel.tsx +++ b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/DetailsPanel.tsx @@ -40,7 +40,7 @@ export default function DetailPanel({ defaultPanelState, }: DetailPanelProps): ReactElement | null { const [panelState, setPanelState] = useState( - defaultPanelState ?? { dismissedWarnings: [] } + defaultPanelState ?? { dismissedWarnings: [] }, ) const [networkSettingsModalOpen, setNetworkSettingsModalOpen] = useState(false) @@ -76,7 +76,7 @@ export default function DetailPanel({ if (transactionRequest === undefined) return null const isEIP1559Compliant = EIP_1559_COMPLIANT_CHAIN_IDS.has( - transactionRequest.network.chainID + transactionRequest.network.chainID, ) const hasInsufficientFundsWarning = @@ -86,7 +86,7 @@ export default function DetailPanel({ transactionRequest.annotation?.warnings?.includes("send-to-contract") const canUseFlashbots = FLASHBOTS_SUPPORTED_CHAIN_IDS.has( - transactionRequest.chainID + transactionRequest.chainID, ) const networkSettingsSaved = () => { @@ -208,7 +208,9 @@ export default function DetailPanel({ width: 100%; max-height: 0; transform: translateX(calc(-100% - 24px)); - transition: transform ease-out 0.2s, max-height ease-out 0.2s; + transition: + transform ease-out 0.2s, + max-height ease-out 0.2s; } .warning.visible { transform: translateX(0); diff --git a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureDetailsWarning.tsx b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureDetailsWarning.tsx index 8d4a67da7c..ab2f4e2ada 100644 --- a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureDetailsWarning.tsx +++ b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureDetailsWarning.tsx @@ -15,7 +15,7 @@ type DismissableProps = type WarningProps = { message: string } & DismissableProps export default function TransactionSignatureDetailsWarning( - props: WarningProps + props: WarningProps, ): ReactElement { const { message, dismissable = false, onDismiss } = props diff --git a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/SpendApprovalSummary.tsx b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/SpendApprovalSummary.tsx index 0407ffd0a0..5d1c3fe052 100644 --- a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/SpendApprovalSummary.tsx +++ b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/SpendApprovalSummary.tsx @@ -43,11 +43,11 @@ export default function SpendApprovalSummary({ } = annotation const [approvalLimitString, setApprovalLimitString] = useState( - null + null, ) const [approvalLimitInput, setApprovalLimitInput] = useState( - null + null, ) const [isLoading, setIsLoading] = useState(false) @@ -96,13 +96,13 @@ export default function SpendApprovalSummary({ const updatedInput = ERC20_INTERFACE.encodeFunctionData( ERC20_FUNCTIONS.approve, - [spenderAddress, hexlify(bigintAmount)] + [spenderAddress, hexlify(bigintAmount)], ) dispatch( updateTransactionData({ ...transactionRequest, input: updatedInput, - }) + }), ) } @@ -113,7 +113,7 @@ export default function SpendApprovalSummary({ : fixedPointNumberToString({ amount: approvalLimit, decimals: asset.decimals, - }) + }), ) setIsLoading(false) }, [approvalLimit, asset.decimals]) @@ -121,8 +121,8 @@ export default function SpendApprovalSummary({ useEffect(() => { dispatch( updateAdditionalSigningStatus( - approvalLimitInput !== null ? "editing" : undefined - ) + approvalLimitInput !== null ? "editing" : undefined, + ), ) }, [approvalLimitInput, dispatch]) diff --git a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransactionSignatureSummaryDefault.tsx b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransactionSignatureSummaryDefault.tsx index 9371c4fe0b..593fbee547 100644 --- a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransactionSignatureSummaryDefault.tsx +++ b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransactionSignatureSummaryDefault.tsx @@ -30,7 +30,7 @@ export default function TransactionSignatureSummaryDefault({ const mainCurrencySymbol = useBackgroundSelector(selectMainCurrencySymbol) const baseAssetPricePoint = useBackgroundSelector((state) => - selectAssetPricePoint(state.prices, network.baseAsset, mainCurrencySymbol) + selectAssetPricePoint(state.prices, network.baseAsset, mainCurrencySymbol), ) const transactionAssetAmount = enrichAssetAmountWithDecimalValues( { @@ -41,8 +41,8 @@ export default function TransactionSignatureSummaryDefault({ 2, typeof baseAssetPricePoint !== "undefined" ? unitPricePointForPricePoint(baseAssetPricePoint) - : undefined - ) + : undefined, + ), ) return ( diff --git a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransactionSignatureSummaryProps.tsx b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransactionSignatureSummaryProps.tsx index 5e07a32322..7d4027c7df 100644 --- a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransactionSignatureSummaryProps.tsx +++ b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransactionSignatureSummaryProps.tsx @@ -6,7 +6,7 @@ import { export type TransactionSignatureSummaryProps< T extends TransactionAnnotation | undefined = | TransactionAnnotation - | undefined + | undefined, > = { transactionRequest: EnrichedEVMTransactionRequest annotation: T diff --git a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransferSummary.tsx b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransferSummary.tsx index dffb707963..8b3388bd67 100644 --- a/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransferSummary.tsx +++ b/ui/components/Signing/SignatureDetails/TransactionSignatureDetails/TransactionSignatureSummary/TransferSummary.tsx @@ -38,7 +38,7 @@ export function TransferSummaryBase({ const assetPricePoint = selectAssetPricePoint( prices, assetAmount.asset, - mainCurrencySymbol + mainCurrencySymbol, ) const localizedMainCurrencyAmount = enrichAssetAmountWithMainCurrencyValues(assetAmount, assetPricePoint, 2) diff --git a/ui/components/Signing/SignatureDetails/index.tsx b/ui/components/Signing/SignatureDetails/index.tsx index 2ed2775f1e..ec390eaa08 100644 --- a/ui/components/Signing/SignatureDetails/index.tsx +++ b/ui/components/Signing/SignatureDetails/index.tsx @@ -121,7 +121,7 @@ export function resolveSignatureDetails({ } export function useResolvedSignatureDetails( - signOperation: SignOperation | undefined + signOperation: SignOperation | undefined, ): ResolvedSignatureDetails | undefined { return signOperation === undefined ? undefined diff --git a/ui/components/Signing/Signer/SignerBaseFrame.tsx b/ui/components/Signing/Signer/SignerBaseFrame.tsx index dcd7e006a3..31b14a08f2 100644 --- a/ui/components/Signing/Signer/SignerBaseFrame.tsx +++ b/ui/components/Signing/Signer/SignerBaseFrame.tsx @@ -21,7 +21,7 @@ export default function SignerBaseFrame({ const { t } = useTranslation("translation", { keyPrefix: "signTransaction" }) const hasInsufficientFunds = useBackgroundSelector(selectHasInsufficientFunds) const additionalSigningStatus = useBackgroundSelector( - selectAdditionalSigningStatus + selectAdditionalSigningStatus, ) const tooltip = additionalSigningStatus === "editing" ? t("unsavedChangesTooltip") : "" diff --git a/ui/components/Signing/Signer/SignerFrame.tsx b/ui/components/Signing/Signer/SignerFrame.tsx index 5a672c891a..e4efba34b3 100644 --- a/ui/components/Signing/Signer/SignerFrame.tsx +++ b/ui/components/Signing/Signer/SignerFrame.tsx @@ -17,7 +17,7 @@ import { SignerFrameProps } from "." * the signing flow based on the signer specified in the passed props. */ export default function SignerFrame( - props: SignerFrameProps + props: SignerFrameProps, ): ReactElement { const { signer } = props diff --git a/ui/components/Signing/Signer/SignerLedger/SignerLedgerConnect/ActivateBlindSigning.tsx b/ui/components/Signing/Signer/SignerLedger/SignerLedgerConnect/ActivateBlindSigning.tsx index 07bae22661..18d27e0307 100644 --- a/ui/components/Signing/Signer/SignerLedger/SignerLedgerConnect/ActivateBlindSigning.tsx +++ b/ui/components/Signing/Signer/SignerLedger/SignerLedgerConnect/ActivateBlindSigning.tsx @@ -13,7 +13,7 @@ export default function LedgerActivateBlindSigning(): ReactElement { steps={[<>{t("step1")}, <>{t("step2")}, <>{t("step3")}]} onHelpClick={() => window.open( - "https://support.ledger.com/hc/en-us/articles/4405481324433-Enable-blind-signing-in-the-Ethereum-ETH-app?docs=true" + "https://support.ledger.com/hc/en-us/articles/4405481324433-Enable-blind-signing-in-the-Ethereum-ETH-app?docs=true", ) } /> diff --git a/ui/components/Signing/Signer/SignerLedger/SignerLedgerConnect/WrongLedgerConnected.tsx b/ui/components/Signing/Signer/SignerLedger/SignerLedgerConnect/WrongLedgerConnected.tsx index 9fc66ae3ac..feae651086 100644 --- a/ui/components/Signing/Signer/SignerLedger/SignerLedgerConnect/WrongLedgerConnected.tsx +++ b/ui/components/Signing/Signer/SignerLedger/SignerLedgerConnect/WrongLedgerConnected.tsx @@ -31,7 +31,7 @@ export default function WrongLedgerConnected({ window .open( `https://etherscan.io/address/${requiredAddress}`, - "_blank" + "_blank", ) ?.focus() }} diff --git a/ui/components/Signing/Signer/SignerLedger/SignerLedgerFrame.tsx b/ui/components/Signing/Signer/SignerLedger/SignerLedgerFrame.tsx index 282d25362e..e4516faefa 100644 --- a/ui/components/Signing/Signer/SignerLedger/SignerLedgerFrame.tsx +++ b/ui/components/Signing/Signer/SignerLedger/SignerLedgerFrame.tsx @@ -22,7 +22,7 @@ import TransactionButton from "../TransactionButton" export default function SignerLedgerFrame< T extends SignOperationType, - S extends LedgerAccountSigner + S extends LedgerAccountSigner, >({ children, request, @@ -69,7 +69,7 @@ export default function SignerLedgerFrame< const hasInsufficientFunds = useBackgroundSelector(selectHasInsufficientFunds) const additionalSigningStatus = useBackgroundSelector( - selectAdditionalSigningStatus + selectAdditionalSigningStatus, ) const mustEnableArbitraryDataSigning = diff --git a/ui/components/Signing/Signer/SignerLedger/SignerLedgerSigning/index.tsx b/ui/components/Signing/Signer/SignerLedger/SignerLedgerSigning/index.tsx index 46f2b7935f..3a1f9b4591 100644 --- a/ui/components/Signing/Signer/SignerLedger/SignerLedgerSigning/index.tsx +++ b/ui/components/Signing/Signer/SignerLedger/SignerLedgerSigning/index.tsx @@ -43,7 +43,7 @@ function SignerLedgerSigningMessage({ name="Message" /* intentionally not i18ned, see above */ value={`${message.substring( 0, - ledgerDisplayDetails.messageSigningDisplayLength - 3 + ledgerDisplayDetails.messageSigningDisplayLength - 3, )}…`} /> @@ -102,8 +102,8 @@ function SignerLedgerSigningTransaction({ : transactionRequest.gasPrice, decimals: transactionRequest.network.baseAsset.decimals, }, - { amount: transactionRequest.gasLimit, decimals: 0 } - ) + { amount: transactionRequest.gasLimit, decimals: 0 }, + ), ) return ( diff --git a/ui/components/Signing/Signer/TransactionButton.tsx b/ui/components/Signing/Signer/TransactionButton.tsx index 52be82b5f1..b2aa1ed891 100644 --- a/ui/components/Signing/Signer/TransactionButton.tsx +++ b/ui/components/Signing/Signer/TransactionButton.tsx @@ -46,7 +46,7 @@ export default function TransactionButton({ // Debounced unlock buttons because dispatching transaction events is async and can happen in batches const [unlockButtons, setUnlockButtons] = useDebounce( isTransactionDataReady, - 300 + 300, ) const [focusChangeNonce, setFocusChangeNonce] = useState(0) @@ -57,10 +57,9 @@ export default function TransactionButton({ } } - useEffect( - () => setUnlockButtons(isTransactionDataReady), - [isTransactionDataReady, setUnlockButtons] - ) + useEffect(() => { + setUnlockButtons(isTransactionDataReady) + }, [isTransactionDataReady, setUnlockButtons]) useEffect(() => { const increaseFocusChangeNonce = () => { @@ -80,10 +79,13 @@ export default function TransactionButton({ clearDelaySignButtonTimeout() if (document.hasFocus()) { - delaySignButtonTimeout.current = window.setTimeout(() => { - setIsOnDelayToSign(false) - // Random delay between 0.5 and 2 seconds - }, Math.floor(Math.random() * 4 + 1) * 500) + delaySignButtonTimeout.current = window.setTimeout( + () => { + setIsOnDelayToSign(false) + // Random delay between 0.5 and 2 seconds + }, + Math.floor(Math.random() * 4 + 1) * 500, + ) } else { setIsOnDelayToSign(true) } diff --git a/ui/components/Signing/Signer/index.tsx b/ui/components/Signing/Signer/index.tsx index d4541ed6b9..87f19ca228 100644 --- a/ui/components/Signing/Signer/index.tsx +++ b/ui/components/Signing/Signer/index.tsx @@ -9,7 +9,7 @@ import { ResolvedSignatureDetails } from "../SignatureDetails" */ export type SignerFrameProps< T extends SignOperationType, - S extends AccountSigner = AccountSigner + S extends AccountSigner = AccountSigner, > = ResolvedSignatureDetails & { request: T signer: S diff --git a/ui/components/Signing/index.tsx b/ui/components/Signing/index.tsx index ff176d4b99..634d0e81c6 100644 --- a/ui/components/Signing/index.tsx +++ b/ui/components/Signing/index.tsx @@ -34,7 +34,7 @@ function SigningLoaded({ const { signingAddress, renderedSigningData } = signatureDetails const signerAccountTotal = useBackgroundSelector((state) => - getAccountTotal(state, signingAddress) + getAccountTotal(state, signingAddress), ) return ( @@ -66,7 +66,7 @@ function SigningLoaded({ } section :global(h1.title) { color: var(--trophy-gold); - font-size: ; + font-size:; font-weight: 500; line-height: 42px; text-align: center; @@ -110,7 +110,7 @@ export default function Signing({ : { request, accountSigner, - } + }, ) // Note that signatureDetails should only be undefined if request is diff --git a/ui/components/Snackbar/Snackbar.tsx b/ui/components/Snackbar/Snackbar.tsx index 5a4ce41356..cdbf8f52b5 100644 --- a/ui/components/Snackbar/Snackbar.tsx +++ b/ui/components/Snackbar/Snackbar.tsx @@ -42,7 +42,7 @@ export default function Snackbar({ const displayMessage = useDelayContentChange( snackbarMessage, shouldHide, - DISMISS_ANIMATION_MS + DISMISS_ANIMATION_MS, ) const snackbarTimeout = useRef() @@ -100,7 +100,8 @@ export default function Snackbar({ font-weight: 500; background: var(--green-120); color: var(--green-20); - box-shadow: 0px 24px 24px rgba(0, 20, 19, 0.14), + box-shadow: + 0px 24px 24px rgba(0, 20, 19, 0.14), 0px 14px 16px rgba(0, 20, 19, 0.24), 0px 10px 12px rgba(0, 20, 19, 0.34); border-radius: 8px; diff --git a/ui/components/Swap/SwapQuoteBalanceChange.tsx b/ui/components/Swap/SwapQuoteBalanceChange.tsx index e9063cdb15..d76d1f8495 100644 --- a/ui/components/Swap/SwapQuoteBalanceChange.tsx +++ b/ui/components/Swap/SwapQuoteBalanceChange.tsx @@ -23,7 +23,7 @@ type SwapQuoteBalanceChangeProps = { priceImpact: number } export default function SwapQuoteBalanceChange( - props: SwapQuoteBalanceChangeProps + props: SwapQuoteBalanceChangeProps, ): ReactElement { const { fromAsset, toAsset, priceImpact } = props const { t } = useTranslation() @@ -39,23 +39,23 @@ export default function SwapQuoteBalanceChange( const fromAssetPricePoint = selectAssetPricePoint( prices, fromAsset.asset, - mainCurrencySymbol + mainCurrencySymbol, ) const toAssetPricePoint = selectAssetPricePoint( prices, toAsset.asset, - mainCurrencySymbol + mainCurrencySymbol, ) const fromAssetMainCurrencyAmount = enrichAssetAmountWithMainCurrencyValues( fromAsset, fromAssetPricePoint, - 2 + 2, ).localizedMainCurrencyAmount const toAssetMainCurrencyAmount = enrichAssetAmountWithMainCurrencyValues( toAsset, toAssetPricePoint, - 2 + 2, ).localizedMainCurrencyAmount return ( diff --git a/ui/components/TabBar/TabBar.tsx b/ui/components/TabBar/TabBar.tsx index b1876fccb2..a3b32e7f54 100644 --- a/ui/components/TabBar/TabBar.tsx +++ b/ui/components/TabBar/TabBar.tsx @@ -30,12 +30,12 @@ export default function TabBar(): ReactElement { const { t } = useTranslation() const noActiveTab = ["abilities"].some((pathName) => - location.pathname.includes(pathName) + location.pathname.includes(pathName), ) const activeTab = tabs.find(({ path }) => - matchPath(location.pathname, { path, exact: false }) + matchPath(location.pathname, { path, exact: false }), ) ?? defaultTab const hasNotifications = useCallback( @@ -47,7 +47,7 @@ export default function TabBar(): ReactElement { return false } }, - [abilityCount] + [abilityCount], ) return ( diff --git a/ui/components/TabBar/TabBarIconButton.tsx b/ui/components/TabBar/TabBarIconButton.tsx index 3eb9497f9d..0357b45981 100644 --- a/ui/components/TabBar/TabBarIconButton.tsx +++ b/ui/components/TabBar/TabBarIconButton.tsx @@ -10,7 +10,7 @@ type TabBarIconButtonProps = { } export default function TabBarIconButton( - props: TabBarIconButtonProps + props: TabBarIconButtonProps, ): ReactElement { const { icon, title, isActive, showNotifications = false, onClick } = props @@ -56,7 +56,9 @@ export default function TabBarIconButton( font-size: 12px; font-weight: 600; text-transform: capitalize; - transition: opacity 0.3s ease, color 0.1s ease; + transition: + opacity 0.3s ease, + color 0.1s ease; } .active .icon { background-color: var(--trophy-gold); diff --git a/ui/components/TopMenu/TopMenuConnectedDAppInfo.tsx b/ui/components/TopMenu/TopMenuConnectedDAppInfo.tsx index ec92a97091..e5c50c20d1 100644 --- a/ui/components/TopMenu/TopMenuConnectedDAppInfo.tsx +++ b/ui/components/TopMenu/TopMenuConnectedDAppInfo.tsx @@ -18,7 +18,7 @@ function ConnectionDAppGuideline({ const showWalletConnectInfo = isEnabled(FeatureFlags.SUPPORT_WALLET_CONNECT) const { t: tShared } = useTranslation("translation", { keyPrefix: "shared" }) const [currentPanel, setCurrentPanel] = useState( - showWalletConnectInfo ? 0 : 1 + showWalletConnectInfo ? 0 : 1, ) return ( @@ -275,8 +275,10 @@ export default function TopMenuConnectedDAppInfo(props: { .window { width: 352px; max-height: 90%; - box-shadow: 0 10px 12px rgba(0, 20, 19, 0.34), - 0 14px 16px rgba(0, 20, 19, 0.24), 0 24px 24px rgba(0, 20, 19, 0.14); + box-shadow: + 0 10px 12px rgba(0, 20, 19, 0.34), + 0 14px 16px rgba(0, 20, 19, 0.24), + 0 24px 24px rgba(0, 20, 19, 0.14); border-radius: 8px; background-color: var(--green-95); display: flex; diff --git a/ui/components/TopMenu/TopMenuProfileButton.tsx b/ui/components/TopMenu/TopMenuProfileButton.tsx index 779314fbcd..ac233921c2 100644 --- a/ui/components/TopMenu/TopMenuProfileButton.tsx +++ b/ui/components/TopMenu/TopMenuProfileButton.tsx @@ -31,7 +31,7 @@ export default function TopMenuProfileButton(props: { const showTooltip = () => { timerRef.current = window.setTimeout( () => setShouldDisplayTooltip(true), - TOOLTIP_DELAY + TOOLTIP_DELAY, ) } const hideTooltip = () => { diff --git a/ui/components/TopMenu/TopMenuProtocolList.tsx b/ui/components/TopMenu/TopMenuProtocolList.tsx index 5170045ae4..4dccb0180e 100644 --- a/ui/components/TopMenu/TopMenuProtocolList.tsx +++ b/ui/components/TopMenu/TopMenuProtocolList.tsx @@ -56,7 +56,7 @@ export default function TopMenuProtocolList({ const builtinNetworks = productionNetworks.filter(isBuiltInNetwork) const customNetworks = productionNetworks.filter( - (network) => !isBuiltInNetwork(network) + (network) => !isBuiltInNetwork(network), ) return ( diff --git a/ui/components/Wallet/AssetListItem/CommonAssetListItem.tsx b/ui/components/Wallet/AssetListItem/CommonAssetListItem.tsx index dcc3846a45..b5fa82fc40 100644 --- a/ui/components/Wallet/AssetListItem/CommonAssetListItem.tsx +++ b/ui/components/Wallet/AssetListItem/CommonAssetListItem.tsx @@ -27,14 +27,14 @@ type CommonAssetListItemProps = { assetAmount: CompleteAssetAmount initializationLoadingTimeExpired: boolean onUnverifiedAssetWarningClick?: ( - asset: CompleteAssetAmount["asset"] + asset: CompleteAssetAmount["asset"], ) => void } const MAX_SYMBOL_LENGTH = 10 export default function CommonAssetListItem( - props: CommonAssetListItemProps + props: CommonAssetListItemProps, ): ReactElement { const { t } = useTranslation("translation", { keyPrefix: "wallet", diff --git a/ui/components/Wallet/Banner/WalletBanner.tsx b/ui/components/Wallet/Banner/WalletBanner.tsx index b5a73fd9a2..9b091104d4 100644 --- a/ui/components/Wallet/Banner/WalletBanner.tsx +++ b/ui/components/Wallet/Banner/WalletBanner.tsx @@ -31,7 +31,7 @@ export default function WalletBanner(): ReactElement { const [currentCampaignId, setCurrentCampaignId] = useState("") const [dismissedCampaignId, setDismissedCampaignId] = useLocalStorage( "dismissedCampaignBanner", - "" + "", ) useEffect(() => { diff --git a/ui/components/Wallet/Banner/useBannerCampaigns.ts b/ui/components/Wallet/Banner/useBannerCampaigns.ts index eec51e2c94..5c1766110d 100644 --- a/ui/components/Wallet/Banner/useBannerCampaigns.ts +++ b/ui/components/Wallet/Banner/useBannerCampaigns.ts @@ -47,7 +47,7 @@ export default function useBannerCampaigns(chainID: string): Campaign | null { (campaign) => campaign.startDate <= currentDate && currentDate <= campaign.endDate && - campaign.chains.includes(chainID) + campaign.chains.includes(chainID), ) setCurrentCampaign(relevantCampaings.reverse()[0] ?? null) diff --git a/ui/components/Wallet/UnverifiedAsset/AssetWarning.tsx b/ui/components/Wallet/UnverifiedAsset/AssetWarning.tsx index 0b37d650e1..efdb8a04ed 100644 --- a/ui/components/Wallet/UnverifiedAsset/AssetWarning.tsx +++ b/ui/components/Wallet/UnverifiedAsset/AssetWarning.tsx @@ -80,7 +80,7 @@ export default function AssetWarning(props: AssetWarningProps): ReactElement { asset.metadata?.discoveryTxHash?.[activityInitiatorAddress] const currentAccountActivities = useBackgroundSelector( - selectCurrentAccountActivities + selectCurrentAccountActivities, ) const activityItem = discoveryTxHash ? currentAccountActivities.find(({ hash }) => hash === discoveryTxHash) @@ -120,7 +120,7 @@ export default function AssetWarning(props: AssetWarningProps): ReactElement { window .open( `${blockExplorerUrl}/token/${contractAddress}`, - "_blank" + "_blank", ) ?.focus() } @@ -159,7 +159,7 @@ export default function AssetWarning(props: AssetWarningProps): ReactElement { window .open( `${blockExplorerUrl}/tx/${discoveryTxHash}`, - "_blank" + "_blank", ) ?.focus() } diff --git a/ui/components/Wallet/UnverifiedAsset/AssetWarningWrapper.tsx b/ui/components/Wallet/UnverifiedAsset/AssetWarningWrapper.tsx index 3b9491f66c..a208fe60af 100644 --- a/ui/components/Wallet/UnverifiedAsset/AssetWarningWrapper.tsx +++ b/ui/components/Wallet/UnverifiedAsset/AssetWarningWrapper.tsx @@ -11,7 +11,7 @@ type AssetWarningWrapperProps = { } export default function AssetWarningWrapper( - props: AssetWarningWrapperProps + props: AssetWarningWrapperProps, ): ReactElement { const { asset, close } = props diff --git a/ui/components/Wallet/WalletAccountBalanceControl.tsx b/ui/components/Wallet/WalletAccountBalanceControl.tsx index 1da7b9d351..0271c18ef5 100644 --- a/ui/components/Wallet/WalletAccountBalanceControl.tsx +++ b/ui/components/Wallet/WalletAccountBalanceControl.tsx @@ -129,7 +129,7 @@ interface Props { } export default function WalletAccountBalanceControl( - props: Props + props: Props, ): ReactElement { const { t } = useTranslation("translation", { keyPrefix: "wallet", diff --git a/ui/components/Wallet/WalletActivityDetails.tsx b/ui/components/Wallet/WalletActivityDetails.tsx index 9c53cbd23c..65034a90fa 100644 --- a/ui/components/Wallet/WalletActivityDetails.tsx +++ b/ui/components/Wallet/WalletActivityDetails.tsx @@ -117,7 +117,7 @@ interface WalletActivityDetailsProps { // has real data export default function WalletActivityDetails( - props: WalletActivityDetailsProps + props: WalletActivityDetailsProps, ): ReactElement { const { activityItem, activityInitiatorAddress } = props const dispatch = useBackgroundDispatch() @@ -137,8 +137,8 @@ export default function WalletActivityDetails( if (activityItem?.hash) { setDetails( (await dispatch( - fetchSelectedActivityDetails(activityItem.hash) - )) as unknown as ActivityDetail[] + fetchSelectedActivityDetails(activityItem.hash), + )) as unknown as ActivityDetail[], ) } } @@ -147,7 +147,7 @@ export default function WalletActivityDetails( const activityViewDetails = useActivityViewDetails( activityItem, - activityInitiatorAddress + activityInitiatorAddress, ) return ( diff --git a/ui/components/Wallet/WalletActivityList.tsx b/ui/components/Wallet/WalletActivityList.tsx index 0c02545da5..5c9e14d412 100644 --- a/ui/components/Wallet/WalletActivityList.tsx +++ b/ui/components/Wallet/WalletActivityList.tsx @@ -27,7 +27,7 @@ export default function WalletActivityList({ }) const dispatch = useBackgroundDispatch() const showingActivityDetail = useBackgroundSelector( - selectShowingActivityDetail + selectShowingActivityDetail, ) // Used to fix Tx Details Slide-up menu should close @@ -50,7 +50,7 @@ export default function WalletActivityList({ window .open( `${blockExplorerInfo.url}/address/${activityInitiatorAddress}`, - "_blank" + "_blank", ) ?.focus() }, [blockExplorerInfo, activityInitiatorAddress]) @@ -60,7 +60,7 @@ export default function WalletActivityList({ setInstantlyHideActivityDetails(false) dispatch(setShowingActivityDetail(activityItem.hash)) }, - [dispatch] + [dispatch], ) const handleClose = useCallback(() => { diff --git a/ui/components/Wallet/WalletActivityListItem.tsx b/ui/components/Wallet/WalletActivityListItem.tsx index cecb22fd5b..c83ea8affe 100644 --- a/ui/components/Wallet/WalletActivityListItem.tsx +++ b/ui/components/Wallet/WalletActivityListItem.tsx @@ -18,7 +18,7 @@ interface Props { function isSendActivity( activity: Activity, - activityInitiatorAddress: string + activityInitiatorAddress: string, ): boolean { return activity.type === "asset-transfer" ? sameEVMAddress(activity.sender?.address, activityInitiatorAddress) @@ -49,7 +49,7 @@ export default function WalletActivityListItem(props: Props): ReactElement { const activityViewDetails = useActivityViewDetails( activity, - activityInitiatorAddress + activityInitiatorAddress, ) return ( diff --git a/ui/components/Wallet/WalletAnalyticsNotificationBanner.tsx b/ui/components/Wallet/WalletAnalyticsNotificationBanner.tsx index 7a0daf5c7f..ca458c4367 100644 --- a/ui/components/Wallet/WalletAnalyticsNotificationBanner.tsx +++ b/ui/components/Wallet/WalletAnalyticsNotificationBanner.tsx @@ -17,7 +17,7 @@ export default function WalletAnalyticsNotificationBanner(): ReactElement { const dispatch = useDispatch() const showNotification = useBackgroundSelector( - selectShowAnalyticsNotification + selectShowAnalyticsNotification, ) return ( diff --git a/ui/components/Wallet/WalletAssetList.tsx b/ui/components/Wallet/WalletAssetList.tsx index 5f98c8de94..6150b36e2c 100644 --- a/ui/components/Wallet/WalletAssetList.tsx +++ b/ui/components/Wallet/WalletAssetList.tsx @@ -15,7 +15,7 @@ type WalletAssetListProps = { } export default function WalletAssetList( - props: WalletAssetListProps + props: WalletAssetListProps, ): ReactElement | null { const { t } = useTranslation("translation", { keyPrefix: "wallet.activities", diff --git a/ui/components/Wallet/WalletAssetListItem.tsx b/ui/components/Wallet/WalletAssetListItem.tsx index 37bd71450c..07657255aa 100644 --- a/ui/components/Wallet/WalletAssetListItem.tsx +++ b/ui/components/Wallet/WalletAssetListItem.tsx @@ -13,7 +13,7 @@ type Props = { assetAmount: CompleteAssetAmount initializationLoadingTimeExpired: boolean onUnverifiedAssetWarningClick?: ( - asset: CompleteAssetAmount["asset"] + asset: CompleteAssetAmount["asset"], ) => void } diff --git a/ui/hooks/activity-hooks.ts b/ui/hooks/activity-hooks.ts index ff39cdc405..d3bfe37c40 100644 --- a/ui/hooks/activity-hooks.ts +++ b/ui/hooks/activity-hooks.ts @@ -9,7 +9,7 @@ import { TransactionAnnotation } from "@tallyho/tally-background/services/enrich function isReceiveActivity( activity: Activity, - activityInitiatorAddress: string + activityInitiatorAddress: string, ): boolean { return ( activity.type === "asset-transfer" && @@ -38,7 +38,7 @@ type ActivityViewDetails = { export default function useActivityViewDetails( activity: Activity, - activityInitiatorAddress: string + activityInitiatorAddress: string, ): ActivityViewDetails { const { t } = useTranslation("translation", { keyPrefix: "wallet.activities", diff --git a/ui/hooks/dom-hooks.ts b/ui/hooks/dom-hooks.ts index 4d883f786d..c45043b39e 100644 --- a/ui/hooks/dom-hooks.ts +++ b/ui/hooks/dom-hooks.ts @@ -9,7 +9,7 @@ import { export const useOnClickOutside = ( ref: RefObject, - handler: (event: MouseEvent | TouchEvent) => void + handler: (event: MouseEvent | TouchEvent) => void, ): void => { useEffect(() => { const listener = (event: MouseEvent | TouchEvent) => { @@ -58,7 +58,7 @@ export const useOnClickOutside = ( export function useDelayContentChange( storedContent: T, delayCondition: boolean, - delayMs: number + delayMs: number, ): T { const [delayedContent, setDelayedContent] = useState(storedContent) const delayedContentUpdateTimeout = useRef(undefined) @@ -105,7 +105,7 @@ export const useDebounce = (initial: T, wait = 300): [T, (v: T) => void] => { // eslint-disable-next-line react-hooks/exhaustive-deps const debounceCallback = useCallback( debounce((prop: T) => setState(prop), wait), - [debounce, wait] + [debounce, wait], ) const setDebouncedState = (debounced: T) => { @@ -120,15 +120,15 @@ export const setLocalStorageItem = (key: string, value: string): void => export const getLocalStorageItem = ( key: string, - defaultValue: string + defaultValue: string, ): string => localStorage.getItem(key) || defaultValue export function useLocalStorage( key: string, - initialValue: string + initialValue: string, ): [string, React.Dispatch>] { const [value, setValue] = useState(() => - getLocalStorageItem(key, initialValue) + getLocalStorageItem(key, initialValue), ) useEffect(() => { @@ -140,12 +140,12 @@ export function useLocalStorage( export function useIntersectionObserver( callback: IntersectionObserverCallback, - options?: { threshold: number } + options?: { threshold: number }, ): RefObject { const ref = useRef(null) const observer = useMemo( () => new IntersectionObserver(callback, options), - [callback, options] + [callback, options], ) useEffect(() => { diff --git a/ui/hooks/earn-hooks.ts b/ui/hooks/earn-hooks.ts index ddbdcbec6c..b78973e96e 100644 --- a/ui/hooks/earn-hooks.ts +++ b/ui/hooks/earn-hooks.ts @@ -12,14 +12,14 @@ export const useAllEarnVaults = (): EnrichedAvailableVault[] => { const dispatch = useBackgroundDispatch() const availableVaults = useBackgroundSelector(selectAvailableVaults) const [vaults, setVaults] = useState( - availableVaults as EnrichedAvailableVault[] + availableVaults as EnrichedAvailableVault[], ) const isValutDataStale = useBackgroundSelector(selectIsVaultDataStale) const update = useCallback(async () => { if (isValutDataStale) { const updatedVaults = (await dispatch( - updateVaults(availableVaults) + updateVaults(availableVaults), )) as unknown as EnrichedAvailableVault[] setVaults(updatedVaults) } diff --git a/ui/hooks/index.ts b/ui/hooks/index.ts index ec9029cc4a..78ad4dadbe 100644 --- a/ui/hooks/index.ts +++ b/ui/hooks/index.ts @@ -79,7 +79,7 @@ export function useSwitchablePanels(panels: PanelDescriptor[]): JSX.Element { panelNumber, panelNames: panels.map(({ name }) => name), }), - panels[panelNumber].panelElement() + panels[panelNumber].panelElement(), ) } diff --git a/ui/hooks/nft-hooks.ts b/ui/hooks/nft-hooks.ts index 9a427acba3..64a49a3b05 100644 --- a/ui/hooks/nft-hooks.ts +++ b/ui/hooks/nft-hooks.ts @@ -36,13 +36,13 @@ export const useTotalNFTsFloorPrice = (): { const ETHPricePoint = selectAssetPricePoint( allPrices, ETH, - mainCurrencySymbol + mainCurrencySymbol, ) const mainCurrencyTotalPrice = Object.entries(totalFloorPrice).reduce( (acc, [symbol, price]) => { const baseAsset = BUILT_IN_NETWORK_BASE_ASSETS.find( - (asset) => asset.symbol === symbol + (asset) => asset.symbol === symbol, ) if (!baseAsset) return acc @@ -50,7 +50,7 @@ export const useTotalNFTsFloorPrice = (): { const pricePoint = selectAssetPricePoint( allPrices, baseAsset, - mainCurrencySymbol + mainCurrencySymbol, ) const enrichedPrice = enrichAssetAmountWithMainCurrencyValues( @@ -59,18 +59,18 @@ export const useTotalNFTsFloorPrice = (): { amount: BigInt(Math.round(price * 10 ** baseAsset.decimals)), }, pricePoint, - 2 + 2, ) return acc + (enrichedPrice.mainCurrencyAmount ?? 0) }, - 0 + 0, ) const totalFloorPriceInUSD = formatCurrencyAmount( mainCurrencySymbol, mainCurrencyTotalPrice, - 2 + 2, ) const floorPriceConvertedToETH = @@ -80,7 +80,7 @@ export const useTotalNFTsFloorPrice = (): { asset: USD, amount: BigInt(Math.round(mainCurrencyTotalPrice * 10 ** USD.decimals)), }, - flipPricePoint(ETHPricePoint) + flipPricePoint(ETHPricePoint), ) const totalFloorPriceInETH = diff --git a/ui/hooks/react-hooks.ts b/ui/hooks/react-hooks.ts index f4c679a7e9..35c6cd9c39 100644 --- a/ui/hooks/react-hooks.ts +++ b/ui/hooks/react-hooks.ts @@ -21,7 +21,7 @@ export function useIsMounted(): React.MutableRefObject { */ export function useInterval unknown>( callback: F, - delay: number + delay: number, ): void { const callbackRef = useRef(callback) callbackRef.current = callback @@ -49,7 +49,7 @@ export function useValueRef(value: T): React.MutableRefObject { * it will be called on unmount */ export function useOnMount unknown>( - callback: Fn + callback: Fn, ): void { const callbackRef = useRef(callback) @@ -82,13 +82,13 @@ export function usePrevious(value: T): T { * Useful for "batching" state changes, Similar API to the old Component.setState */ export function useSetState>( - state: S + state: S, ): readonly [S, typeof setter] { const [value, setValue] = useState(state) const setter = useCallback( ( - newValue: ((prev: Readonly) => S) | (Pick | S) + newValue: ((prev: Readonly) => S) | (Pick | S), ) => setValue((prevState) => { if (typeof newValue === "function") { @@ -97,7 +97,7 @@ export function useSetState>( return { ...prevState, ...newValue } }), - [] + [], ) return [value, setter] as const @@ -114,7 +114,7 @@ export function useRunOnFirstRender(func: () => void): void { export function useSkipFirstRenderEffect( func: () => void, - deps: unknown[] = [] + deps: unknown[] = [], ): void { const didMount = useRef(false) diff --git a/ui/hooks/redux-hooks.ts b/ui/hooks/redux-hooks.ts index 0c38e3cc29..0ba6d663fb 100644 --- a/ui/hooks/redux-hooks.ts +++ b/ui/hooks/redux-hooks.ts @@ -3,13 +3,8 @@ import { noopAction } from "@tallyho/tally-background/redux-slices/utils" import { useEffect, useState } from "react" import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux" -// eslint-disable-next-line @typescript-eslint/no-explicit-any -type AsyncifyFn = K extends (...args: any[]) => any - ? (...args: Parameters) => Promise> - : never - -export const useBackgroundDispatch = (): AsyncifyFn => - useDispatch() as AsyncifyFn +export const useBackgroundDispatch = (): BackgroundDispatch => + useDispatch() export const useBackgroundSelector: TypedUseSelectorHook = useSelector diff --git a/ui/hooks/signing-hooks.ts b/ui/hooks/signing-hooks.ts index b15d393437..c41cfbeda4 100644 --- a/ui/hooks/signing-hooks.ts +++ b/ui/hooks/signing-hooks.ts @@ -23,7 +23,7 @@ import { useBackgroundDispatch, useBackgroundSelector } from "./redux-hooks" * status is returned and no further action is taken. */ export const useAreInternalSignersUnlocked = ( - redirectIfNot: boolean + redirectIfNot: boolean, ): boolean => { const lockStatus = useBackgroundSelector(selectInternalSignerStatus) const history = useHistory() @@ -77,13 +77,13 @@ export type SigningLedgerState = export function useSigningLedgerState( signingAddress: HexString, - accountSigner: LedgerAccountSigner + accountSigner: LedgerAccountSigner, ): SigningLedgerState { return useBackgroundSelector((state) => { const { deviceID } = accountSigner const connectedDevices = Object.values(state.ledger.devices).filter( - (device) => device.status !== "disconnected" + (device) => device.status !== "disconnected", ) if (connectedDevices.length === 0) return { state: "no-ledger-connected" } if (state.ledger.usbDeviceCount > 1) diff --git a/ui/hooks/validation-hooks.ts b/ui/hooks/validation-hooks.ts index c08fbd1e80..fa117b6000 100644 --- a/ui/hooks/validation-hooks.ts +++ b/ui/hooks/validation-hooks.ts @@ -23,7 +23,7 @@ export type ValidDataChangeHandler = (validData: T | undefined) => void * valid, undefined. */ export type AdditionalDataValidator = ( - data: T + data: T, ) => { error: string } | undefined export type ValidationHookProperties = { @@ -97,7 +97,7 @@ export type AsyncValidationHook = ( export const useParsedValidation = ( onValidChange: (validValue: T | undefined) => void, parser: (value: string) => { parsed: T } | { error: string }, - additionalValidator?: AdditionalDataValidator + additionalValidator?: AdditionalDataValidator, ): ValidationHookProperties => { const [errorMessage, setErrorMessage] = useState() const [rawValue, setRawValue] = useState("") @@ -179,7 +179,7 @@ export const useAddressOrNameValidation: AsyncValidationHook< validatingValue.current = trimmed const resolved = (await dispatch( - resolveNameOnNetwork({ name: trimmed, network }) + resolveNameOnNetwork({ name: trimmed, network }), )) as unknown as AddressOnNetwork | undefined // Asynchronicity means we could already have started validating another @@ -197,7 +197,7 @@ export const useAddressOrNameValidation: AsyncValidationHook< } } }, - [dispatch, network, onValidChange] + [dispatch, network, onValidChange], ) return { diff --git a/ui/index.ts b/ui/index.ts index 4f6f7b79c8..da2297ad35 100644 --- a/ui/index.ts +++ b/ui/index.ts @@ -1,5 +1,5 @@ import React, { ComponentType } from "react" -import ReactDOM from "react-dom" +import ReactDOM from "react-dom/client" import { Store } from "webext-redux" import { browser, newProxyStore } from "@tallyho/tally-background" import "./_locales/i18n" @@ -13,22 +13,20 @@ logger.contextId = "UI" export async function attachUIToRootElement( component: ComponentType<{ store: Store }>, - store?: Store + store?: Store, ): Promise { const rootElement = document.getElementById("tally-root") if (!rootElement) { throw new Error( - "Failed to find #tally-root element; page structure changed?" + "Failed to find #tally-root element; page structure changed?", ) } const backgroundStore = store ?? (await newProxyStore()) - ReactDOM.render( - React.createElement(component, { store: backgroundStore }), - rootElement - ) + const root = ReactDOM.createRoot(rootElement) + root.render(React.createElement(component, { store: backgroundStore })) } export async function attachTabUIToRootElement(): Promise { @@ -45,7 +43,7 @@ export async function attachPopupUIToRootElement(): Promise { // rather than rendering the popup const baseURL = browser.runtime.getURL("tab.html") const tabs = (await browser.tabs.query({ url: baseURL })).filter( - (tab) => tab?.url && tab.url.includes("onboarding") + (tab) => tab?.url && tab.url.includes("onboarding"), ) if (tabs.length > 0 && tabs[0]?.id) { await browser.tabs.update(tabs[0].id, { active: true }) diff --git a/ui/package.json b/ui/package.json index a613673a0f..0dff022162 100644 --- a/ui/package.json +++ b/ui/package.json @@ -23,39 +23,38 @@ "watch": "webpack --mode=development --watch" }, "dependencies": { - "@ethersproject/abstract-provider": "^5.5.1", - "@ethersproject/address": "^5.5.0", - "@ethersproject/hdnode": "^5.5.0", - "@ethersproject/units": "5.5.0", - "@ethersproject/web": "^5.5.1", - "@ledgerhq/devices": "^6.20.0", - "@reduxjs/toolkit": "^1.6.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ledgerhq/devices": "8.0.3", + "@reduxjs/toolkit": "^1.9.4", "@tallyho/provider-bridge-shared": "0.0.1", "@tallyho/tally-background": "0.0.1", "@testing-library/jest-dom": "5.16.5", - "@testing-library/react": "12.1.5", + "@testing-library/react": "14.0.0", "@testing-library/user-event": "14.4.3", "lodash": "^4.17.21", "classnames": "^2.3.1", "dayjs": "^1.10.6", - "ethers": "^5.5.1", + "ethers": "5.7.2", "history": "^4.9.0", "i18next": "^21.8.10", "prop-types": "^15.7.2", - "react": "^17.0.2", - "react-dom": "^17.0.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", "react-error-boundary": "^3.1.4", "react-i18next": "^11.17.2", - "react-qr-code": "^2.0.0", - "react-redux": "^7.2.4", - "react-router-dom": "^5.3.0", - "react-transition-group": "^4.4.2", + "react-qr-code": "2.0.11", + "react-redux": "^7.2.9", + "react-router-dom": "^5.3.4", + "react-transition-group": "^4.4.5", "redux": "^4.1.0", "webextension-polyfill": "^0.8.0", "zxcvbn": "^4.4.2" }, "devDependencies": { - "@types/react-dom": "^17.0.9", "@types/react-transition-group": "^4.4.4", "@types/zxcvbn": "^4.4.1", "webext-redux": "^2.1.7" diff --git a/ui/pages/Abilities/AbilityCard.tsx b/ui/pages/Abilities/AbilityCard.tsx index e6f452c580..e0c815d025 100644 --- a/ui/pages/Abilities/AbilityCard.tsx +++ b/ui/pages/Abilities/AbilityCard.tsx @@ -130,7 +130,7 @@ function AbilityCard({ ability }: { ability: Ability }): ReactElement | null { completeAbility({ address: ability.address, abilityId: ability.abilityId, - }) + }), ) dispatch(setSnackbarMessage(t("snackbar"))) }} diff --git a/ui/pages/Abilities/AbilityCardHeader.tsx b/ui/pages/Abilities/AbilityCardHeader.tsx index bd8d53e91c..eb35b7e5f1 100644 --- a/ui/pages/Abilities/AbilityCardHeader.tsx +++ b/ui/pages/Abilities/AbilityCardHeader.tsx @@ -20,7 +20,7 @@ const getRequirementLabel = (ability: Ability): string => { const getAccountNameOrShortenedAddress = ( accounts: AccountTotalList, - address: string + address: string, ): string => { const account = accounts[address] return account.ensName ?? account.shortenedAddress diff --git a/ui/pages/Abilities/AbilityFilter.tsx b/ui/pages/Abilities/AbilityFilter.tsx index f33991facb..7a7826a033 100644 --- a/ui/pages/Abilities/AbilityFilter.tsx +++ b/ui/pages/Abilities/AbilityFilter.tsx @@ -72,7 +72,7 @@ export default function AbilityFilter(): ReactElement { const accounts = useBackgroundSelector(selectAbilityFilterAccounts) const accountTotals = useBackgroundSelector(selectAccountTotals) const filteredAccountTotals = accountTotals.filter( - ({ accountType }) => accountType !== AccountType.ReadOnly + ({ accountType }) => accountType !== AccountType.ReadOnly, ) const dispatch = useBackgroundDispatch() @@ -80,7 +80,7 @@ export default function AbilityFilter(): ReactElement { (value: State) => { dispatch(updateState(value)) }, - [dispatch] + [dispatch], ) const handleUpdateType = useCallback( @@ -91,7 +91,7 @@ export default function AbilityFilter(): ReactElement { dispatch(deleteType(value)) } }, - [dispatch] + [dispatch], ) const handleUpdateAccount = useCallback( @@ -102,7 +102,7 @@ export default function AbilityFilter(): ReactElement { dispatch(deleteAccount(value)) } }, - [dispatch] + [dispatch], ) return ( diff --git a/ui/pages/Abilities/AbilityRemovalConfirm.tsx b/ui/pages/Abilities/AbilityRemovalConfirm.tsx index a35f25509d..578a1b8da2 100644 --- a/ui/pages/Abilities/AbilityRemovalConfirm.tsx +++ b/ui/pages/Abilities/AbilityRemovalConfirm.tsx @@ -67,14 +67,14 @@ export default function AbilityRemovalConfirm({ abilitySlug: ability.slug, abilityId: ability.abilityId, reason: spamReason, - }) + }), ) } else { await dispatch( removeAbility({ address: ability.address, abilityId: ability.abilityId, - }) + }), ) } dispatch(setSnackbarMessage(t(`${KEY_PREFIX}.snackbar`))) @@ -134,7 +134,7 @@ export default function AbilityRemovalConfirm({ }} > {t( - `${KEY_PREFIX}.${showSpamReasons ? "submitSpamBtn" : "submitBtn"}` + `${KEY_PREFIX}.${showSpamReasons ? "submitSpamBtn" : "submitBtn"}`, )} { , { preloadedState: { account: createAccountState() }, - } + }, ) expect(ui.queryByText("Closes in 7 days")).toBeInTheDocument() @@ -44,7 +44,7 @@ describe("AbilityCard", () => { , { preloadedState: { account: createAccountState() }, - } + }, ) expect(ui.queryByText("Closes in 1 day")).toBeInTheDocument() @@ -58,7 +58,7 @@ describe("AbilityCard", () => { , { preloadedState: { account: createAccountState() }, - } + }, ) const timeDetails = ui.container.getElementsByClassName("time_details")[0] @@ -73,7 +73,7 @@ describe("AbilityCard", () => { , { preloadedState: { account: createAccountState() }, - } + }, ) expect(ui.queryByText("Starting in 7 days")).toBeInTheDocument() @@ -87,7 +87,7 @@ describe("AbilityCard", () => { , { preloadedState: { account: createAccountState() }, - } + }, ) expect(ui.queryByText("Starting in 1 day")).toBeInTheDocument() @@ -101,7 +101,7 @@ describe("AbilityCard", () => { , { preloadedState: { account: createAccountState() }, - } + }, ) const timeDetails = ui.container.getElementsByClassName("time_details")[0] @@ -125,7 +125,7 @@ describe("AbilityCard", () => { />, { preloadedState: { account: createAccountState() }, - } + }, ) const timeDetails = ui.container.getElementsByClassName("time_details")[0] @@ -140,7 +140,7 @@ describe("AbilityCard", () => { , { preloadedState: { account: createAccountState() }, - } + }, ) const timeDetails = ui.container.getElementsByClassName("time_details")[0] @@ -155,7 +155,7 @@ describe("AbilityCard", () => { , { preloadedState: { account: createAccountState() }, - } + }, ) const timeDetails = ui.container.getElementsByClassName("time_details")[0] diff --git a/ui/pages/Abilities/__tests__/AbilityCardHeader.test.tsx b/ui/pages/Abilities/__tests__/AbilityCardHeader.test.tsx index 2387898999..1bdeabb16f 100644 --- a/ui/pages/Abilities/__tests__/AbilityCardHeader.test.tsx +++ b/ui/pages/Abilities/__tests__/AbilityCardHeader.test.tsx @@ -20,7 +20,7 @@ describe("AbilityCardHeader", () => { , { preloadedState: { account }, - } + }, ) expect(ui.queryByText(accountData.ens.name)).toBeInTheDocument() @@ -35,7 +35,7 @@ describe("AbilityCardHeader", () => { , { preloadedState: { account }, - } + }, ) expect(ui.queryByText("0x208e…090cd")).toBeInTheDocument() diff --git a/ui/pages/Claiming/Eligible.tsx b/ui/pages/Claiming/Eligible.tsx index c0bd066e34..9cd60a2018 100644 --- a/ui/pages/Claiming/Eligible.tsx +++ b/ui/pages/Claiming/Eligible.tsx @@ -34,7 +34,7 @@ export default function Eligible(): ReactElement | null { amount: BigInt(Number(state.claim?.eligibility?.amount)) || 0n, decimals: doggoTokenDecimalDigits, }, - 0 + 0, ), step: state.claim.claimStep, referrer: state.claim.referrer, @@ -44,13 +44,13 @@ export default function Eligible(): ReactElement | null { const [infoModalVisible, setInfoModalVisible] = useState(false) const [showSuccessStep, setShowSuccessStep] = useState(false) const { accountData } = useBackgroundSelector( - selectAccountAndTimestampedActivities + selectAccountAndTimestampedActivities, ) const { selectedDelegate, selectedForBonus } = useBackgroundSelector( - selectClaimSelections + selectClaimSelections, ) const hasAccounts = useBackgroundSelector( - (state) => Object.keys(state.account.accountsData).length > 0 + (state) => Object.keys(state.account.accountsData).length > 0, ) if (!hasAccounts) { diff --git a/ui/pages/DAppConnectRequest.tsx b/ui/pages/DAppConnectRequest.tsx index 69e06061e1..a3f5e10b05 100644 --- a/ui/pages/DAppConnectRequest.tsx +++ b/ui/pages/DAppConnectRequest.tsx @@ -26,7 +26,7 @@ export default function DAppConnectRequest(): ReactElement { denyOrRevokePermission({ ...permission, state: "deny", - }) + }), ) } } @@ -42,7 +42,7 @@ export default function DAppConnectRequest(): ReactElement { ...permission, accountAddress: currentAccountTotal.address, // make sure address is matching current account state: "allow", - }) + }), ) } window.onbeforeunload = null diff --git a/ui/pages/Earn.tsx b/ui/pages/Earn.tsx index b6429b0c98..eb15651ba1 100644 --- a/ui/pages/Earn.tsx +++ b/ui/pages/Earn.tsx @@ -38,7 +38,7 @@ export default function Earn(): ReactElement { ?.map((item) => typeof item.numberValueTotalDeposited !== "undefined" ? item.numberValueTotalDeposited - : 0 + : 0, ) .reduce((prev, curr) => prev + curr, 0) @@ -46,7 +46,7 @@ export default function Earn(): ReactElement { ?.map((item) => typeof item.numberValueUserDeposited !== "undefined" ? item.numberValueUserDeposited - : 0 + : 0, ) .reduce((prev, curr) => prev + curr, 0) @@ -54,8 +54,8 @@ export default function Earn(): ReactElement { ?.map((item) => fromFixedPointNumber( { amount: item.pendingRewards, decimals: DOGGO.decimals }, - 2 - ) + 2, + ), ) .reduce((prev, curr) => prev + curr, 0) .toFixed(2) @@ -82,9 +82,7 @@ export default function Earn(): ReactElement { {stage === EarnStages.PartialyLive && }
    {/* TODO Replace isComing soon with a check if current Timestamp > vault.poolStartTime */} - {vaultsWithLockedValues?.map((vault) => ( - - ))} + {vaultsWithLockedValues?.map((vault) => )}
)} diff --git a/ui/pages/Earn/DepositCard.tsx b/ui/pages/Earn/DepositCard.tsx index 1acd4b5ee4..426170b6ce 100644 --- a/ui/pages/Earn/DepositCard.tsx +++ b/ui/pages/Earn/DepositCard.tsx @@ -10,7 +10,7 @@ import SharedAssetIcon from "../../components/Shared/SharedAssetIcon" import SharedSkeletonLoader from "../../components/Shared/SharedSkeletonLoader" export const getDisplayAPR = ( - data: APRData | undefined + data: APRData | undefined, ): string | ReactElement => { if (typeof data?.totalAPR === "undefined") { if (typeof data?.high === "undefined" || typeof data?.low === "undefined") { @@ -32,14 +32,14 @@ export default function EarnDepositedCard({ amount: userDeposited, decimals: asset.decimals, }, - 4 + 4, ) const availableRewards = fromFixedPointNumber( { amount: vault.pendingRewards, decimals: DOGGO.decimals, }, - 2 + 2, ) return (
  • diff --git a/ui/pages/Earn/PoolCard.tsx b/ui/pages/Earn/PoolCard.tsx index c18d7e28c5..0babaed00a 100644 --- a/ui/pages/Earn/PoolCard.tsx +++ b/ui/pages/Earn/PoolCard.tsx @@ -128,7 +128,8 @@ export default function EarnCard({ vault }: EarnCardProps): ReactElement { } .card:hover { background: linear-gradient(180deg, #034f4b 0%, #033633 100%); - box-shadow: 0px 24px 24px rgba(0, 20, 19, 0.04), + box-shadow: + 0px 24px 24px rgba(0, 20, 19, 0.04), 0px 14px 16px rgba(0, 20, 19, 0.14), 0px 10px 12px rgba(0, 20, 19, 0.54); } diff --git a/ui/pages/EarnDeposit.tsx b/ui/pages/EarnDeposit.tsx index e4ee2bd86f..270d3e7d5e 100644 --- a/ui/pages/EarnDeposit.tsx +++ b/ui/pages/EarnDeposit.tsx @@ -64,8 +64,8 @@ export default function EarnDeposit(): ReactElement | null { } const vault = useBackgroundSelector((state) => state.earn.availableVaults.find( - (availableVault) => availableVault.vaultAddress === vaultAddress - ) + (availableVault) => availableVault.vaultAddress === vaultAddress, + ), ) const [vaultData, setVaultData] = useState(vault) const dispatch = useBackgroundDispatch() @@ -82,7 +82,7 @@ export default function EarnDeposit(): ReactElement | null { const checkApproval = async () => { const getApprovalAmount = async () => { const approvedAmount = (await dispatch( - checkApprovalTargetApproval(vault.asset.contractAddress) + checkApprovalTargetApproval(vault.asset.contractAddress), )) as unknown as ApprovalTargetAllowance return approvedAmount.allowance } @@ -103,7 +103,7 @@ export default function EarnDeposit(): ReactElement | null { const updateCurrentVault = useCallback(async () => { if (typeof vault !== "undefined") { const updatedVault = (await dispatch( - updateVaults([vault]) + updateVaults([vault]), )) as unknown as AvailableVault[] setVaultData(updatedVault[0]) } @@ -133,7 +133,7 @@ export default function EarnDeposit(): ReactElement | null { vault, amount, tokenAddress: vault.asset.contractAddress, - }) + }), ) } }, [amount, dispatch, history, inDepositProcess, vault]) @@ -147,7 +147,7 @@ export default function EarnDeposit(): ReactElement | null { amount: vaultData?.pendingRewards || 0n, decimals: DOGGO.decimals, }, - 2 + 2, ) const userDeposited = fromFixedPointNumber( @@ -155,7 +155,7 @@ export default function EarnDeposit(): ReactElement | null { amount: vaultData?.userDeposited || 0n, decimals: vault.asset.decimals, }, - 4 + 4, ) if ( @@ -186,7 +186,7 @@ export default function EarnDeposit(): ReactElement | null { vault, tokenAddress: vault.asset.contractAddress, amount, - }) + }), ) history.push("/sign-data") } @@ -195,7 +195,7 @@ export default function EarnDeposit(): ReactElement | null { dispatch( vaultWithdraw({ vault, - }) + }), ) setDeposited(false) setWithdrawalSlideupVisible(false) @@ -207,7 +207,7 @@ export default function EarnDeposit(): ReactElement | null { const handleAmountChange = ( value: string, - errorMessage: string | undefined + errorMessage: string | undefined, ) => { setAmount(value) dispatch(inputAmount(value)) diff --git a/ui/pages/ErrorFallback.tsx b/ui/pages/ErrorFallback.tsx index 2e440542d2..cbf045ba7e 100644 --- a/ui/pages/ErrorFallback.tsx +++ b/ui/pages/ErrorFallback.tsx @@ -6,7 +6,7 @@ import SharedButton from "../components/Shared/SharedButton" import { useOnMount } from "../hooks/react-hooks" export default function ErrorFallback( - props: Partial + props: Partial, ): ReactElement { const { t } = useTranslation("translation", { keyPrefix: "genericPages" }) diff --git a/ui/pages/NewCustomNetworkRequest.tsx b/ui/pages/NewCustomNetworkRequest.tsx index 691c533e1b..f8b32793c6 100644 --- a/ui/pages/NewCustomNetworkRequest.tsx +++ b/ui/pages/NewCustomNetworkRequest.tsx @@ -23,7 +23,7 @@ export default function NewCustomNetworkRequest(): JSX.Element | null { useEffect(() => { dispatch(getAddNetworkRequestDetails(requestId)).then((chainDetails) => - setNetworkDetails(chainDetails as unknown as AddChainRequestData) + setNetworkDetails(chainDetails as unknown as AddChainRequestData), ) }, [dispatch, requestId]) @@ -34,7 +34,7 @@ export default function NewCustomNetworkRequest(): JSX.Element | null { } const existingNetwork = allNetworks.find( - (network) => network.chainID === networkDetails.chainId + (network) => network.chainID === networkDetails.chainId, ) const { @@ -50,7 +50,7 @@ export default function NewCustomNetworkRequest(): JSX.Element | null { function handleUserResponse(success: boolean): void { dispatch(addNetworkUserResponse([requestId, success])).then(() => - window.close() + window.close(), ) } diff --git a/ui/pages/Onboarding/Tabbed/ImportPrivateKey.tsx b/ui/pages/Onboarding/Tabbed/ImportPrivateKey.tsx index c4871f1fe9..6ecc062543 100644 --- a/ui/pages/Onboarding/Tabbed/ImportPrivateKey.tsx +++ b/ui/pages/Onboarding/Tabbed/ImportPrivateKey.tsx @@ -40,7 +40,7 @@ export default function ImportPrivateKey(props: Props): ReactElement { importSigner({ type: SignerSourceTypes.privateKey, privateKey: trimmedPrivateKey, - }) + }), )) as unknown as AsyncThunkFulfillmentType if (success) { diff --git a/ui/pages/Onboarding/Tabbed/ImportPrivateKeyJSON.tsx b/ui/pages/Onboarding/Tabbed/ImportPrivateKeyJSON.tsx index cf0d75614f..f3cfe24fd4 100644 --- a/ui/pages/Onboarding/Tabbed/ImportPrivateKeyJSON.tsx +++ b/ui/pages/Onboarding/Tabbed/ImportPrivateKeyJSON.tsx @@ -51,7 +51,7 @@ export default function ImportPrivateKeyJSON(props: Props): ReactElement { type: SignerSourceTypes.jsonFile, jsonFile: file, password, - }) + }), )) as unknown as AsyncThunkFulfillmentType setIsImporting(false) diff --git a/ui/pages/Onboarding/Tabbed/ImportSeed.tsx b/ui/pages/Onboarding/Tabbed/ImportSeed.tsx index d7ca5d8887..3eccbb9418 100644 --- a/ui/pages/Onboarding/Tabbed/ImportSeed.tsx +++ b/ui/pages/Onboarding/Tabbed/ImportSeed.tsx @@ -37,7 +37,7 @@ export default function ImportSeed(props: Props): ReactElement { const [recoveryPhrase, setRecoveryPhrase] = useState("") const [errorMessage, setErrorMessage] = useState("") const [path, setPath] = useState( - selectedNetwork.derivationPath ?? "m/44'/60'/0'/0" + selectedNetwork.derivationPath ?? "m/44'/60'/0'/0", ) const [isImporting, setIsImporting] = useState(false) @@ -73,7 +73,7 @@ export default function ImportSeed(props: Props): ReactElement { mnemonic: plainRecoveryPhrase, path, source: SignerImportSource.import, - }) + }), )) as unknown as AsyncThunkFulfillmentType if (success) { diff --git a/ui/pages/Onboarding/Tabbed/Ledger/Ledger.tsx b/ui/pages/Onboarding/Tabbed/Ledger/Ledger.tsx index 383cead155..08c43c9f2d 100644 --- a/ui/pages/Onboarding/Tabbed/Ledger/Ledger.tsx +++ b/ui/pages/Onboarding/Tabbed/Ledger/Ledger.tsx @@ -16,7 +16,7 @@ const filters = Object.values(LedgerProductDatabase).map( ({ productId }): USBDeviceFilter => ({ vendorId: ledgerUSBVendorId, productId, - }) + }), ) export default function Ledger(): ReactElement { @@ -27,7 +27,7 @@ export default function Ledger(): ReactElement { }) const deviceID = useBackgroundSelector( - (state) => state.ledger.currentDeviceID + (state) => state.ledger.currentDeviceID, ) const [connecting, setConnecting] = useState(false) @@ -35,7 +35,7 @@ export default function Ledger(): ReactElement { const device = deviceID === null ? null : devices[deviceID] ?? null const usbDeviceCount = useBackgroundSelector( - (state) => state.ledger.usbDeviceCount + (state) => state.ledger.usbDeviceCount, ) const dispatch = useBackgroundDispatch() diff --git a/ui/pages/Onboarding/Tabbed/Ledger/LedgerImportAccounts.tsx b/ui/pages/Onboarding/Tabbed/Ledger/LedgerImportAccounts.tsx index e8f2bc5e14..fb285aba09 100644 --- a/ui/pages/Onboarding/Tabbed/Ledger/LedgerImportAccounts.tsx +++ b/ui/pages/Onboarding/Tabbed/Ledger/LedgerImportAccounts.tsx @@ -94,7 +94,7 @@ function usePageData({ path, address, network, - }) + }), ) }, [device.id, dispatch, items, network]) @@ -169,7 +169,7 @@ function LedgerAccountList({ `${ blockExplorer[selectedNetwork.chainID].url }/address/${address}`, - "_blank" + "_blank", ) ?.focus() }} @@ -180,7 +180,7 @@ function LedgerAccountList({ )} - ) + ), )}
    @@ -216,7 +216,7 @@ function LedgerAccountList({ isDisabled={pageData.selectedAccounts.length === 0} onClick={() => { dispatch( - importLedgerAccounts({ accounts: pageData.selectedAccounts }) + importLedgerAccounts({ accounts: pageData.selectedAccounts }), ) onConnect() }} diff --git a/ui/pages/Onboarding/Tabbed/NewSeed.tsx b/ui/pages/Onboarding/Tabbed/NewSeed.tsx index 580fb759c7..00227ce104 100644 --- a/ui/pages/Onboarding/Tabbed/NewSeed.tsx +++ b/ui/pages/Onboarding/Tabbed/NewSeed.tsx @@ -65,7 +65,7 @@ export const NewSeedRoutes = { export default function NewSeed(): ReactElement { const dispatch = useBackgroundDispatch() const mnemonic = useBackgroundSelector( - (state) => state.internalSigner.keyringToVerify?.mnemonic + (state) => state.internalSigner.keyringToVerify?.mnemonic, ) const selectedNetwork = useBackgroundSelector(selectCurrentNetwork) @@ -76,7 +76,7 @@ export default function NewSeed(): ReactElement { const showNewSeedPhrase = () => { dispatch( - generateNewKeyring(selectedNetwork.derivationPath ?? "m/44'/60'/0'/0") + generateNewKeyring(selectedNetwork.derivationPath ?? "m/44'/60'/0'/0"), ).then(() => history.push(NewSeedRoutes.REVIEW_SEED)) } @@ -90,7 +90,7 @@ export default function NewSeed(): ReactElement { type: SignerSourceTypes.keyring, mnemonic: verifiedMnemonic.join(" "), source: SignerImportSource.internal, - }) + }), )) as unknown as AsyncThunkFulfillmentType if (success) { diff --git a/ui/pages/Onboarding/Tabbed/NewSeed/NewSeedVerify.tsx b/ui/pages/Onboarding/Tabbed/NewSeed/NewSeedVerify.tsx index fcd17a684a..0acf880fe3 100644 --- a/ui/pages/Onboarding/Tabbed/NewSeed/NewSeedVerify.tsx +++ b/ui/pages/Onboarding/Tabbed/NewSeed/NewSeedVerify.tsx @@ -133,7 +133,7 @@ export default function NewSeedVerify({ .map((_, index) => index) .sort(() => Math.random() - 0.5) .slice(0, SEED_WORDS_TO_VERIFY), - [mnemonic] + [mnemonic], ) const [placeholderList, setPlaceholders] = useState( @@ -151,13 +151,13 @@ export default function NewSeedVerify({ key: `${word}-${wordIndex}`, wordIndex, })) - } + }, ) const [activePlaceholder, setActivePlaceholder] = useState(0) const [remainingWords, setRemainingWords] = useState(() => - randomIndexes.map((index) => mnemonic[index]) + randomIndexes.map((index) => mnemonic[index]), ) const [submitted, setSubmitted] = useState(false) @@ -165,7 +165,7 @@ export default function NewSeedVerify({ const handleVerification = () => { const isValid = placeholderList.every( - ({ correctWord, selectedWord }) => correctWord === selectedWord + ({ correctWord, selectedWord }) => correctWord === selectedWord, ) setSubmitted(true) @@ -186,7 +186,7 @@ export default function NewSeedVerify({ const newSelectedWords = placeholderList.map((word, index) => index === position ? { ...word, selectedWord: remainingWords[wordIndex] } - : word + : word, ) setPlaceholders(newSelectedWords) @@ -194,7 +194,7 @@ export default function NewSeedVerify({ setRemainingWords((words) => words.filter((_, i) => i !== wordIndex)) const nextActivePlaceholder = newSelectedWords.findIndex( - (word) => word.selectedWord === undefined + (word) => word.selectedWord === undefined, ) // Set the next available placeholder as active @@ -202,7 +202,7 @@ export default function NewSeedVerify({ if (submitted && nextActivePlaceholder === -1) { const isValid = newSelectedWords.every( - ({ correctWord, selectedWord }) => correctWord === selectedWord + ({ correctWord, selectedWord }) => correctWord === selectedWord, ) setIsValidSeed(isValid) @@ -220,8 +220,8 @@ export default function NewSeedVerify({ setPlaceholders((words) => words.map((word, i) => - i === position ? { ...word, selectedWord: undefined } : word - ) + i === position ? { ...word, selectedWord: undefined } : word, + ), ) } diff --git a/ui/pages/Onboarding/Tabbed/SetPassword.tsx b/ui/pages/Onboarding/Tabbed/SetPassword.tsx index 5b4de323e8..82963dbf3b 100644 --- a/ui/pages/Onboarding/Tabbed/SetPassword.tsx +++ b/ui/pages/Onboarding/Tabbed/SetPassword.tsx @@ -73,7 +73,7 @@ export default function SetPassword(): JSX.Element { // Unlock Wallet if (!isOnboarding && lockStatus === "locked") { const handleAttemptUnlock: React.FormEventHandler = async ( - event + event, ) => { const { currentTarget: form } = event event.preventDefault() diff --git a/ui/pages/Onboarding/Tabbed/ViewOnlyWallet.tsx b/ui/pages/Onboarding/Tabbed/ViewOnlyWallet.tsx index 5112e2111f..3e1c2bc066 100644 --- a/ui/pages/Onboarding/Tabbed/ViewOnlyWallet.tsx +++ b/ui/pages/Onboarding/Tabbed/ViewOnlyWallet.tsx @@ -36,7 +36,7 @@ export default function ViewOnlyWallet(): ReactElement { }) } }, - [network] + [network], ) const handleSubmitViewOnlyAddress = useCallback(async () => { diff --git a/ui/pages/Onboarding/VerifySeed/SeedVerification.tsx b/ui/pages/Onboarding/VerifySeed/SeedVerification.tsx index 92451bb53e..412974d758 100644 --- a/ui/pages/Onboarding/VerifySeed/SeedVerification.tsx +++ b/ui/pages/Onboarding/VerifySeed/SeedVerification.tsx @@ -11,7 +11,7 @@ type Word = { } function SeedWord( - props: Word & { onSubmit: (index: number, word?: string) => void } + props: Word & { onSubmit: (index: number, word?: string) => void }, ): ReactElement { const { index, word, isActive = false, onSubmit } = props return ( @@ -107,7 +107,7 @@ function SeedVerification({ function handleVerification() { const isValid = !selectedWords.some( - ({ index, word }) => mnemonic?.[index] !== word + ({ index, word }) => mnemonic?.[index] !== word, ) setStep(isValid ? "success" : "error") } @@ -118,7 +118,7 @@ function SeedVerification({ if (!active) return setRemainingWords( - remainingWords.filter((word: string) => word !== selectedWord) + remainingWords.filter((word: string) => word !== selectedWord), ) setSelectedWords((list) => { let updated = false @@ -159,7 +159,7 @@ function SeedVerification({ } return { ...item, isActive: false } - }) + }), ) if (word) setRemainingWords(() => [...remainingWords, word]) diff --git a/ui/pages/Onboarding/VerifySeed/VerifySeedSuccess.tsx b/ui/pages/Onboarding/VerifySeed/VerifySeedSuccess.tsx index b3b3b190d2..e3d0b94647 100644 --- a/ui/pages/Onboarding/VerifySeed/VerifySeedSuccess.tsx +++ b/ui/pages/Onboarding/VerifySeed/VerifySeedSuccess.tsx @@ -50,7 +50,7 @@ function VerifySeedSuccess({ mnemonic: mnemonic.join(" "), source: SignerImportSource.internal, path: selectedNetwork.derivationPath ?? "m/44'/60'/0'/0", - }) + }), )) as unknown as AsyncThunkFulfillmentType if (success) history.push(nextPage) diff --git a/ui/pages/Overview.tsx b/ui/pages/Overview.tsx index 4b13a0f545..bb1030de53 100644 --- a/ui/pages/Overview.tsx +++ b/ui/pages/Overview.tsx @@ -22,10 +22,10 @@ export default function Overview(): ReactElement { const accountsCount = useBackgroundSelector(getAddressCount) const { combinedData } = useBackgroundSelector( - selectAccountAndTimestampedActivities + selectAccountAndTimestampedActivities, ) const initializationLoadingTimeExpired = useBackgroundSelector( - selectInitializationTimeExpired + selectInitializationTimeExpired, ) return ( diff --git a/ui/pages/Popup.tsx b/ui/pages/Popup.tsx index 662482b45f..35f790a471 100644 --- a/ui/pages/Popup.tsx +++ b/ui/pages/Popup.tsx @@ -39,13 +39,13 @@ const pagePreferences = Object.fromEntries( pageList.map(({ path, hasTabBar, hasTopBar, persistOnClose }) => [ path, { hasTabBar, hasTopBar, persistOnClose }, - ]) + ]), ) function transformLocation( inputLocation: Location, isTransactionPendingSignature: boolean, - hasAccounts: boolean + hasAccounts: boolean, ): Location { // The inputLocation is not populated with the actual query string — even though it should be // so I need to grab it from the window @@ -101,7 +101,7 @@ export function Main(): ReactElement { const [isDirectionRight, setIsDirectionRight] = useState(true) const routeHistoryEntries = useBackgroundSelector( - (state) => state.ui.routeHistoryEntries + (state) => state.ui.routeHistoryEntries, ) // See comment above call of saveHistoryEntries @@ -122,10 +122,10 @@ export function Main(): ReactElement { } const isTransactionPendingSignature = useBackgroundSelector( - selectIsTransactionPendingSignature + selectIsTransactionPendingSignature, ) const hasAccounts = useBackgroundSelector( - (state) => getAddressCount(state) > 0 + (state) => getAddressCount(state) > 0, ) useConnectPopupMonitor() @@ -139,7 +139,7 @@ export function Main(): ReactElement { const transformedLocation = transformLocation( routeProps.location, isTransactionPendingSignature, - hasAccounts + hasAccounts, ) const normalizedPathname = pagePreferences[ @@ -190,7 +190,7 @@ export function Main(): ReactElement { - ) + ), )}
    diff --git a/ui/pages/Receive.tsx b/ui/pages/Receive.tsx index f4c2a989df..b9bdbb7b88 100644 --- a/ui/pages/Receive.tsx +++ b/ui/pages/Receive.tsx @@ -37,7 +37,7 @@ export default function Receive(): ReactElement | null { > {`${currentAccount.address.slice( 0, - 7 + 7, )}...${currentAccount.address.slice(-6)}`} diff --git a/ui/pages/Send.tsx b/ui/pages/Send.tsx index 62a88db33e..5d457aa4ed 100644 --- a/ui/pages/Send.tsx +++ b/ui/pages/Send.tsx @@ -57,7 +57,7 @@ export default function Send(): ReactElement { const currentAccountSigner = useBackgroundSelector(selectCurrentAccountSigner) const [selectedAsset, setSelectedAsset] = useState( - location.state ?? currentAccount.network.baseAsset + location.state ?? currentAccount.network.baseAsset, ) const [assetType, setAssetType] = useState<"token" | "nft">("token") @@ -110,10 +110,10 @@ export default function Send(): ReactElement { (assetAmount): assetAmount is CompleteAssetAmount => isFungibleAssetAmount(assetAmount) && assetAmount.decimalAmount > 0 && - isTrustedAsset(assetAmount.asset) + isTrustedAsset(assetAmount.asset), ) const assetPricePoint = useBackgroundSelector((state) => - selectAssetPricePoint(state.prices, selectedAsset, mainCurrencySymbol) + selectAssetPricePoint(state.prices, selectedAsset, mainCurrencySymbol), ) const assetAmountFromForm = () => { @@ -124,7 +124,7 @@ export default function Send(): ReactElement { const decimalMatched = convertFixedPointNumber( fixedPointAmount, - selectedAsset.decimals + selectedAsset.decimals, ) return enrichAssetAmountWithMainCurrencyValues( @@ -133,7 +133,7 @@ export default function Send(): ReactElement { amount: decimalMatched.amount, }, assetPricePoint, - 2 + 2, ) } @@ -155,7 +155,7 @@ export default function Send(): ReactElement { network: currentAccount.network, }, assetAmount, - }) + }), ) } finally { setIsSendingTransactionRequest(false) @@ -179,7 +179,7 @@ export default function Send(): ReactElement { isValidating: addressIsValidating, handleInputChange: handleAddressChange, } = useAddressOrNameValidation((value) => - setDestinationAddress(value?.address) + setDestinationAddress(value?.address), ) // True if the user input a valid name (ENS, address book, etc) that we diff --git a/ui/pages/Settings.tsx b/ui/pages/Settings.tsx index 8ad58c37f1..cfaf225781 100644 --- a/ui/pages/Settings.tsx +++ b/ui/pages/Settings.tsx @@ -319,7 +319,7 @@ export default function Settings(): ReactElement { label: t("settings.autoLockTimer.interval", { time: item.label }), }))} defaultIndex={AUTO_LOCK_OPTIONS.findIndex( - ({ value }) => value === String(autoLockInterval) + ({ value }) => value === String(autoLockInterval), )} width="100%" onChange={(newValue) => dispatch(updateAutoLockInterval(newValue))} @@ -393,7 +393,7 @@ export default function Settings(): ReactElement { ...wrapIfEnabled(FeatureFlags.SUPPORT_MULTIPLE_LANGUAGES, languages), ...wrapIfEnabled( FeatureFlags.SUPPORT_ACHIEVEMENTS_BANNER, - notificationBanner + notificationBanner, ), ], }, diff --git a/ui/pages/Settings/ConnectedWebsitesListItem.tsx b/ui/pages/Settings/ConnectedWebsitesListItem.tsx index 58516ab867..50c3c8f0d4 100644 --- a/ui/pages/Settings/ConnectedWebsitesListItem.tsx +++ b/ui/pages/Settings/ConnectedWebsitesListItem.tsx @@ -11,7 +11,7 @@ type ConnectedWebsitesListItemProps = { } export default function ConnectedWebsitesListItem( - props: ConnectedWebsitesListItemProps + props: ConnectedWebsitesListItemProps, ): React.ReactElement { const { t } = useTranslation("translation", { keyPrefix: "settings" }) diff --git a/ui/pages/Settings/SettingsAddCustomAsset.tsx b/ui/pages/Settings/SettingsAddCustomAsset.tsx index eb63358df8..563a6dfb42 100644 --- a/ui/pages/Settings/SettingsAddCustomAsset.tsx +++ b/ui/pages/Settings/SettingsAddCustomAsset.tsx @@ -105,7 +105,7 @@ export default function SettingsAddCustomAsset(): ReactElement { const networks = allNetworks.filter( (network) => !TEST_NETWORK_BY_CHAIN_ID.has(network.chainID) || - (showTestNetworks && TEST_NETWORK_BY_CHAIN_ID.has(network.chainID)) + (showTestNetworks && TEST_NETWORK_BY_CHAIN_ID.has(network.chainID)), ) const [chosenNetwork, setChosenNetwork] = useState(currentNetwork) @@ -116,7 +116,7 @@ export default function SettingsAddCustomAsset(): ReactElement { const handleTokenInfoChange = async ( addressLike: HexString, - network: EVMNetwork + network: EVMNetwork, ) => { requestIdRef.current += 1 const callId = requestIdRef.current @@ -145,7 +145,7 @@ export default function SettingsAddCustomAsset(): ReactElement { checkTokenContractDetails({ contractAddress: normalizeEVMAddress(contractAddress), network, - }) + }), )) as unknown as AssetData // async setState safeguard @@ -168,7 +168,7 @@ export default function SettingsAddCustomAsset(): ReactElement { setIsImportingToken(true) const { success } = await dispatch( - importCustomToken({ asset: assetData.asset }) + importCustomToken({ asset: assetData.asset }), ) if (success) { await dispatch(setSnackbarMessage(t("snackbar.success"))) @@ -363,7 +363,7 @@ export default function SettingsAddCustomAsset(): ReactElement { {assetData?.asset?.symbol ? trimWithEllipsis( assetData.asset.symbol, - MAX_SYMBOL_LENGTH + MAX_SYMBOL_LENGTH, ) : t("asset.label.symbol")} diff --git a/ui/pages/Settings/SettingsCustomNetworks.tsx b/ui/pages/Settings/SettingsCustomNetworks.tsx index 95a7737785..e4274bbc36 100644 --- a/ui/pages/Settings/SettingsCustomNetworks.tsx +++ b/ui/pages/Settings/SettingsCustomNetworks.tsx @@ -30,12 +30,12 @@ export default function SettingsCustomNetworks(): ReactElement { const customNetworksListItems = intersperseWith( allCustomNetworks, - () => "spacer" as const + () => "spacer" as const, ) const [showConfirmDelete, setShowConfirmDelete] = useState(false) const [networkToDelete, setNetworkToDelete] = useState( - null + null, ) const handleModalConfirm = () => { diff --git a/ui/pages/Settings/SettingsExportLogs.tsx b/ui/pages/Settings/SettingsExportLogs.tsx index bc773c7cef..7f7fba0efb 100644 --- a/ui/pages/Settings/SettingsExportLogs.tsx +++ b/ui/pages/Settings/SettingsExportLogs.tsx @@ -10,12 +10,12 @@ export default function SettingsExportLogs(): ReactElement { const serializedLogs = serializeLogs() const base64LogData = Buffer.from( - `${window.navigator.userAgent}\n\n\n${serializedLogs}` || "" + `${window.navigator.userAgent}\n\n\n${serializedLogs}` || "", ).toString("base64") const logFileName = `logs_v${(process.env.VERSION || "").replace( /\./g, - "_" + "_", )}__${dayjs().format()}.txt` return ( diff --git a/ui/pages/SingleAsset.tsx b/ui/pages/SingleAsset.tsx index ea57cfef94..961764430d 100644 --- a/ui/pages/SingleAsset.tsx +++ b/ui/pages/SingleAsset.tsx @@ -71,7 +71,7 @@ export default function SingleAsset(): ReactElement { default: return false } - }) + }), ) const { asset, localizedMainCurrencyAmount, localizedDecimalAmount } = @@ -167,26 +167,28 @@ export default function SingleAsset(): ReactElement { )}
    - {!isVerified && !isTrusted && isSmartContractFungibleAsset(asset) && ( -
    - setWarnedAsset(asset)} - /> -
    - + setWarnedAsset(asset)} - > - {t("assets.verifyAsset")} - + /> +
    + setWarnedAsset(asset)} + > + {t("assets.verifyAsset")} + +
    -
    - )} + )} {isTrusted && currentAccountSigner !== ReadOnlyAccountSigner && ( <> diff --git a/ui/pages/Swap.tsx b/ui/pages/Swap.tsx index 33da72d1bf..1d6cb22f5b 100644 --- a/ui/pages/Swap.tsx +++ b/ui/pages/Swap.tsx @@ -32,7 +32,6 @@ import { SECOND, } from "@tallyho/tally-background/constants" -import { AsyncThunkFulfillmentType } from "@tallyho/tally-background/redux-slices/utils" import { selectLatestQuoteRequest, selectSwapBuyAssets, @@ -78,7 +77,7 @@ export default function Swap(): ReactElement { const ownedSellAssetAmounts = getOwnedSellAssetAmounts( accountBalances?.allAssetAmounts, - currentNetwork + currentNetwork, ) const { @@ -95,7 +94,7 @@ export default function Swap(): ReactElement { ) } return candidateAsset.symbol === locationAssetSymbol - } + }, )?.asset const savedQuoteRequest = useBackgroundSelector(selectLatestQuoteRequest) @@ -109,20 +108,20 @@ export default function Swap(): ReactElement { } const [sellAsset, setSellAsset] = useState( - savedSellAsset + savedSellAsset, ) const [buyAsset, setBuyAsset] = useState( - savedBuyAsset + savedBuyAsset, ) const [sellAmount, setSellAmount] = useState( typeof savedSwapAmount !== "undefined" && "sellAmount" in savedSwapAmount ? savedSwapAmount.sellAmount - : "" + : "", ) const [buyAmount, setBuyAmount] = useState( typeof savedSwapAmount !== "undefined" && "buyAmount" in savedSwapAmount ? savedSwapAmount.buyAmount - : "" + : "", ) const previousChainId = usePrevious(currentNetwork.chainID) @@ -144,13 +143,13 @@ export default function Swap(): ReactElement { const sellAssetAmounts = getSellAssetAmounts( ownedSellAssetAmounts, sellAsset, - buyAsset + buyAsset, ) useEffect(() => { if (typeof sellAsset !== "undefined") { const isSelectedSellAssetInSellAssets = sellAssetAmounts.some( - ({ asset }) => isSameAsset(asset, sellAsset) + ({ asset }) => isSameAsset(asset, sellAsset), ) if (!isSelectedSellAssetInSellAssets) { @@ -178,7 +177,7 @@ export default function Swap(): ReactElement { }) const inProgressApprovalContract = useBackgroundSelector( - selectInProgressApprovalContract + selectInProgressApprovalContract, ) const isApprovalInProgress = sellAsset && @@ -206,7 +205,7 @@ export default function Swap(): ReactElement { approveTransfer({ assetContractAddress: sellAsset.contractAddress, approvalTarget: quote.approvalTarget, - }) + }), ) }, [dispatch, quote, sellAsset, t]) @@ -227,7 +226,7 @@ export default function Swap(): ReactElement { requestQuoteUpdate.flush() } }, - [requestQuoteUpdate, buyAmount, buyAsset] + [requestQuoteUpdate, buyAmount, buyAsset], ) const updateBuyAsset = useCallback( @@ -247,7 +246,7 @@ export default function Swap(): ReactElement { requestQuoteUpdate.flush() } }, - [sellAmount, requestQuoteUpdate, sellAsset] + [sellAmount, requestQuoteUpdate, sellAsset], ) const flipSwap = useCallback(() => { @@ -347,9 +346,7 @@ export default function Swap(): ReactElement { const handleExecuteSwap = useCallback(async () => { if (sellAsset && buyAsset && quote) { - const finalQuote = (await dispatch( - fetchSwapQuote(quote.quoteRequest) - )) as unknown as AsyncThunkFulfillmentType + const finalQuote = await dispatch(fetchSwapQuote(quote.quoteRequest)) if (finalQuote) { const { gasPrice, ...quoteWithoutGasPrice } = finalQuote @@ -366,7 +363,7 @@ export default function Swap(): ReactElement { ? gasPrice : quote.swapTransactionSettings.networkSettings.values.maxFeePerGas.toString() ?? gasPrice, - }) + }), ) } } diff --git a/ui/pages/Wallet.tsx b/ui/pages/Wallet.tsx index 80fa90cb00..a2a68d7d78 100644 --- a/ui/pages/Wallet.tsx +++ b/ui/pages/Wallet.tsx @@ -44,7 +44,7 @@ export default function Wallet(): ReactElement { dispatch( checkAlreadyClaimed({ claimState, - }) + }), ) }, [claimState, dispatch]) @@ -63,7 +63,7 @@ export default function Wallet(): ReactElement { } const currentAccountActivities = useBackgroundSelector( - selectCurrentAccountActivities + selectCurrentAccountActivities, ) useEffect(() => { @@ -81,12 +81,12 @@ export default function Wallet(): ReactElement { }, [history, selectedNetwork.chainID]) const initializationLoadingTimeExpired = useBackgroundSelector( - (background) => background.ui?.initializationLoadingTimeExpired + (background) => background.ui?.initializationLoadingTimeExpired, ) const showHiddenAssets = useMemo( () => showUnverifiedAssets && unverifiedAssetAmounts.length > 0, - [showUnverifiedAssets, unverifiedAssetAmounts.length] + [showUnverifiedAssets, unverifiedAssetAmounts.length], ) const panelNames = [t("wallet.pages.assets")] diff --git a/ui/tests/factories.ts b/ui/tests/factories.ts index f0387187fc..e908d06548 100644 --- a/ui/tests/factories.ts +++ b/ui/tests/factories.ts @@ -9,11 +9,11 @@ import { import { createAccountData } from "@tallyho/tally-background/tests/factories" export const TEST_ADDRESS = normalizeEVMAddress( - "0x208e94d5661a73360d9387d3ca169e5c130090cd" + "0x208e94d5661a73360d9387d3ca169e5c130090cd", ) export const createAccountState = ( - overrides: Partial = {} + overrides: Partial = {}, ): AccountState => ({ accountsData: { evm: { @@ -68,7 +68,7 @@ export const createNFT = (overrides: Partial = {}): NFTCached => ({ }) export const createNFTCollection = ( - overrides: Partial = {} + overrides: Partial = {}, ): NFTCollectionCached => ({ id: "", name: "", diff --git a/ui/tests/store.ts b/ui/tests/store.ts index 5391a7ee34..07a7b5653a 100644 --- a/ui/tests/store.ts +++ b/ui/tests/store.ts @@ -2,7 +2,7 @@ import { CombinedState, configureStore, EnhancedStore } from "@reduxjs/toolkit" import rootReducer, { RootState } from "@tallyho/tally-background/redux-slices" export const initializeStoreForTest = ( - preloadedState = {} + preloadedState = {}, ): EnhancedStore> => configureStore({ reducer: rootReducer, diff --git a/ui/tests/test-utils.tsx b/ui/tests/test-utils.tsx index 5ac4d3e66f..4d2e438397 100644 --- a/ui/tests/test-utils.tsx +++ b/ui/tests/test-utils.tsx @@ -19,7 +19,7 @@ export function renderWithProviders( // Automatically create a store instance if no store was passed in store = initializeStoreForTest(preloadedState), ...renderOptions - }: ExtendedRenderOptions = {} + }: ExtendedRenderOptions = {}, ) { // eslint-disable-next-line @typescript-eslint/ban-types function Wrapper({ children }: PropsWithChildren<{}>): JSX.Element { diff --git a/ui/utils/lists.ts b/ui/utils/lists.ts index eeaf2c6176..8068b28ca7 100644 --- a/ui/utils/lists.ts +++ b/ui/utils/lists.ts @@ -1,6 +1,6 @@ export const intersperseWith = ( items: T[], - getItem: (index: number) => K + getItem: (index: number) => K, ): (T | K)[] => { const result: (T | K)[] = [] diff --git a/ui/utils/pageTransition.ts b/ui/utils/pageTransition.ts index 1f2fb030c9..e58ed1d0e4 100644 --- a/ui/utils/pageTransition.ts +++ b/ui/utils/pageTransition.ts @@ -15,7 +15,7 @@ export default function setAnimationConditions( pathname: string } }, - setIsDirectionRight: (choice: boolean) => void + setIsDirectionRight: (choice: boolean) => void, ): void { const { entries } = routeProps.history const locationName = routeProps.location.pathname.split("/")[1] diff --git a/ui/utils/swap.ts b/ui/utils/swap.ts index b11f5868c5..5edae4224b 100644 --- a/ui/utils/swap.ts +++ b/ui/utils/swap.ts @@ -62,7 +62,7 @@ export const fetchQuote = async ({ } network: EVMNetwork getQuoteFn: ( - quoteRequest: SwapQuoteRequest + quoteRequest: SwapQuoteRequest, ) => Promise> }): Promise => { const quoteRequest: SwapQuoteRequest = { @@ -151,7 +151,7 @@ export function useSwapQuote(useSwapConfig: { } { const dispatch = useBackgroundDispatch() const [initialTransactionSettings] = useState( - useSwapConfig.initialSwapSettings + useSwapConfig.initialSwapSettings, ) // Quoted amounts @@ -217,8 +217,6 @@ export function useSwapQuote(useSwapConfig: { network: requestContext.network, settings: transactionSettings, }) - - if (!mountedRef.current) return } catch (error) { logger.error("Error fetching quote!", error) } finally { @@ -233,7 +231,7 @@ export function useSwapQuote(useSwapConfig: { }) } }, - [dispatch, requestContextRef, mountedRef, setQuoteRequestState] + [dispatch, requestContextRef, mountedRef, setQuoteRequestState], ) const [debouncedRequest] = useState(() => { @@ -243,7 +241,7 @@ export function useSwapQuote(useSwapConfig: { { leading: false, trailing: true, - } + }, ) return debouncedFn @@ -263,7 +261,7 @@ export function useSwapQuote(useSwapConfig: { export function getOwnedSellAssetAmounts( assetAmounts: CompleteAssetAmount[] | undefined, - currentNetwork: EVMNetwork + currentNetwork: EVMNetwork, ): CompleteAssetAmount[] { return ( assetAmounts?.filter( @@ -271,7 +269,7 @@ export function getOwnedSellAssetAmounts( (isSmartContractFungibleAsset(assetAmount.asset) || assetAmount.asset.symbol === currentNetwork.baseAsset.symbol) && assetAmount.decimalAmount > 0 && - isTrustedAsset(assetAmount.asset) + isTrustedAsset(assetAmount.asset), ) ?? [] ) } @@ -279,12 +277,12 @@ export function getOwnedSellAssetAmounts( export function getSellAssetAmounts( ownedSellAssetAmounts: CompleteAssetAmount[], sellAsset?: SwappableAsset, - buyAsset?: SwappableAsset + buyAsset?: SwappableAsset, ): CompleteAssetAmount[] { return ( ownedSellAssetAmounts.some( ({ asset }) => - typeof sellAsset !== "undefined" && isSameAsset(asset, sellAsset) + typeof sellAsset !== "undefined" && isSameAsset(asset, sellAsset), ) ? ownedSellAssetAmounts : ownedSellAssetAmounts.concat( @@ -297,9 +295,9 @@ export function getSellAssetAmounts( decimalAmount: 0, localizedDecimalAmount: "0", }, - ] + ], ) ).filter( - (sellAssetAmount) => sellAssetAmount.asset.symbol !== buyAsset?.symbol + (sellAssetAmount) => sellAssetAmount.asset.symbol !== buyAsset?.symbol, ) } diff --git a/webpack.config.ts b/webpack.config.ts index d9b8512b5f..10afd1471a 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -136,7 +136,7 @@ const modeConfigs: { .toString("utf8") .replace( "", - `` + ``, ) } @@ -205,7 +205,7 @@ const modeConfigs: { // One config per supported browser, adjusted by mode. export default ( _: unknown, - { mode }: WebpackOptionsNormalized + { mode }: WebpackOptionsNormalized, ): webpack.Configuration[] => supportedBrowsers.map((browser) => { const distPath = path.join(__dirname, "dist", browser) @@ -244,7 +244,7 @@ export default ( from: `manifest/manifest(|.${mode}|.${browser}|.${browser}.${mode}).json`, to: "manifest.json", transformAll: ( - assets: { data: Buffer; sourceFilename: string }[] + assets: { data: Buffer; sourceFilename: string }[], ) => { const getPriority = (filename: string) => { switch (true) { @@ -267,12 +267,12 @@ export default ( .sort( (a, b) => getPriority(a.sourceFilename) - - getPriority(b.sourceFilename) + getPriority(b.sourceFilename), ) .map((asset) => asset.data.toString("utf8")) // JSON.parse chokes on empty strings .filter((assetData) => assetData.trim().length > 0) - .map((assetData) => JSON.parse(assetData)) + .map((assetData) => JSON.parse(assetData)), ) return JSON.stringify(combinedManifest, null, 2) diff --git a/window-provider/index.ts b/window-provider/index.ts index 2d00b107f9..23e50ac7c1 100644 --- a/window-provider/index.ts +++ b/window-provider/index.ts @@ -34,9 +34,9 @@ export default class TahoWindowProvider extends EventEmitter { connected = false - isTally: true = true + isTally = true as const - isTaho: true = true + isTaho = true as const isMetaMask = false @@ -102,7 +102,7 @@ export default class TahoWindowProvider extends EventEmitter { window.walletRouter?.shouldSetTahoForCurrentProvider( result.defaultWallet, - false + false, ) this.tahoSetAsDefault = result.defaultWallet @@ -196,7 +196,7 @@ export default class TahoWindowProvider extends EventEmitter { // null result indicates successful chain change https://eips.ethereum.org/EIPS/eip-3326#specification if (result === null) { this.handleChainIdChange( - (sendData.request.params[0] as { chainId: string }).chainId + (sendData.request.params[0] as { chainId: string }).chainId, ) } break @@ -241,11 +241,11 @@ export default class TahoWindowProvider extends EventEmitter { // https://github.com/ethers-io/ethers.js/blob/73a46efea32c3f9a4833ed77896a216e3d3752a0/packages/providers/src.ts/web3-provider.ts#L19 send( request: RequestArgument, - callback: (error: unknown, response: unknown) => void + callback: (error: unknown, response: unknown) => void, ): void send( methodOrRequest: string | RequestArgument, - paramsOrCallback: Array | EthersSendCallback + paramsOrCallback: Array | EthersSendCallback, ): Promise | void { if ( typeof methodOrRequest === "string" && @@ -265,7 +265,7 @@ export default class TahoWindowProvider extends EventEmitter { // added as some dapps are still using it sendAsync( request: RequestArgument & { id?: number; jsonrpc?: string }, - callback: (error: unknown, response: unknown) => void + callback: (error: unknown, response: unknown) => void, ): Promise | void { return this.request(request).then( (response) => @@ -274,7 +274,7 @@ export default class TahoWindowProvider extends EventEmitter { id: request.id, jsonrpc: request.jsonrpc, }), - (error) => callback(error, null) + (error) => callback(error, null), ) } @@ -312,7 +312,7 @@ export default class TahoWindowProvider extends EventEmitter { override emit(event: string | symbol, ...args: unknown[]): boolean { const hadAdditionalListeners = window.walletRouter?.reemitTahoEvent( event, - ...args + ...args, ) const hadDirectListeners = super.emit(event, ...args) diff --git a/window-provider/wallet-connection-handlers.ts b/window-provider/wallet-connection-handlers.ts index 0249a1e9c4..0f59f99c9d 100644 --- a/window-provider/wallet-connection-handlers.ts +++ b/window-provider/wallet-connection-handlers.ts @@ -54,13 +54,13 @@ const findAndReplaceUniswapInjectedOption = (): void => { // Replace the arrow icon with the Taho icon iconAndTextDiv.innerHTML = iconAndTextDiv.innerHTML.replace( /\ssrc="(.+)"\s/, - ` src="${TAHO_ICON_URL}" ` + ` src="${TAHO_ICON_URL}" `, ) // Replace the `Injected` text with `Taho` iconAndTextDiv.innerHTML = iconAndTextDiv.innerHTML.replace( "Injected", - TAHO_NAME + TAHO_NAME, ) } } @@ -123,7 +123,7 @@ function findAndReplaceGMXMetamaskOption(addedNode: Node): void { // Replace metamask icon with Taho icon option.innerHTML = option.innerHTML.replace( /\ssrc="(.+)"\s/, - ` src="${TAHO_ICON_URL}" ` + ` src="${TAHO_ICON_URL}" `, ) } } @@ -163,7 +163,7 @@ function findAndReplaceYieldProtocolMetamaskOption(addedNode: Node): void { metamaskText.innerHTML = metamaskText.innerHTML.replace( "Metamask", - TAHO_NAME + TAHO_NAME, ) const metamaskIcon = container?.children?.[2] @@ -232,7 +232,7 @@ function findAndReplaceAboardMetamaskOption(addedNode: Node): void { if (child.innerHTML.includes("img/metamask")) { child.innerHTML = child.innerHTML.replace( /\ssrc="(.+)"\s/, - ` src="${TAHO_ICON_URL}" ` + ` src="${TAHO_ICON_URL}" `, ) } } @@ -344,7 +344,7 @@ function findAndReplaceCelerMetamaskOption(addedNode: Node): void { } function findAndReplaceMultchainMetamaskAndInjectedOption( - addedNode: Node + addedNode: Node, ): void { if (moreThanOneWalletInstalledAndTahoIsNotDefault()) { return diff --git a/yarn.lock b/yarn.lock index 092001ab0d..5b582093c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@adobe/css-tools@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd" @@ -15,24 +20,10 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@apollo/protobufjs@1.2.6": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.2.6.tgz#d601e65211e06ae1432bf5993a1a0105f2862f27" - integrity sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" - long "^4.0.0" +"@apollo/cache-control-types@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@apollo/cache-control-types/-/cache-control-types-1.0.2.tgz#f42ed3563acc7f1f50617d65d208483977adc68e" + integrity sha512-Por80co1eUm4ATsvjCOoS/tIR8PHxqVjsA6z76I6Vw0rFn4cgyVElQcmQDIZiYsy41k8e5xkrMRECkM2WR8pNw== "@apollo/protobufjs@1.2.7": version "1.2.7" @@ -52,83 +43,129 @@ "@types/long" "^4.0.0" long "^4.0.0" -"@apollo/usage-reporting-protobuf@^4.0.0": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz#407c3d18c7fbed7a264f3b9a3812620b93499de1" - integrity sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA== +"@apollo/server-gateway-interface@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@apollo/server-gateway-interface/-/server-gateway-interface-1.1.0.tgz#592a6dfcf0359a15785ec62c1b6fa51ca761fe08" + integrity sha512-0rhG++QtGfr4YhhIHgxZ9BdMFthaPY6LbhI9Au90osbfLMiZ7f8dmZsEX1mp7O1h8MJwCu6Dp0I/KcGbSvfUGA== dependencies: - "@apollo/protobufjs" "1.2.7" + "@apollo/usage-reporting-protobuf" "^4.0.0" + "@apollo/utils.fetcher" "^2.0.0" + "@apollo/utils.keyvaluecache" "^2.1.0" + "@apollo/utils.logger" "^2.0.0" -"@apollo/utils.dropunuseddefinitions@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz#02b04006442eaf037f4c4624146b12775d70d929" - integrity sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg== +"@apollo/server@^4.3.0": + version "4.7.1" + resolved "https://registry.yarnpkg.com/@apollo/server/-/server-4.7.1.tgz#3063fb8ca4a5a94cdf15f219811ac50c3e097b9f" + integrity sha512-rFxd8jsMlqEYzmhuxATaDAPoRH905R56FKP4TnZWaiDYJtjhHe3hxZOWl24V7s0dB52DIp6S/x+zjQX8fwD37w== + dependencies: + "@apollo/cache-control-types" "^1.0.2" + "@apollo/server-gateway-interface" "^1.1.0" + "@apollo/usage-reporting-protobuf" "^4.1.0" + "@apollo/utils.createhash" "^2.0.0" + "@apollo/utils.fetcher" "^2.0.0" + "@apollo/utils.isnodelike" "^2.0.0" + "@apollo/utils.keyvaluecache" "^2.1.0" + "@apollo/utils.logger" "^2.0.0" + "@apollo/utils.usagereporting" "^2.0.0" + "@apollo/utils.withrequired" "^2.0.0" + "@graphql-tools/schema" "^9.0.0" + "@josephg/resolvable" "^1.0.0" + "@types/express" "^4.17.13" + "@types/express-serve-static-core" "^4.17.30" + "@types/node-fetch" "^2.6.1" + async-retry "^1.2.1" + body-parser "^1.20.0" + cors "^2.8.5" + express "^4.17.1" + loglevel "^1.6.8" + lru-cache "^7.10.1" + negotiator "^0.6.3" + node-abort-controller "^3.1.1" + node-fetch "^2.6.7" + uuid "^9.0.0" + whatwg-mimetype "^3.0.0" -"@apollo/utils.keyvaluecache@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz#2bfe358c4d82f3a0950518451996758c52613f57" - integrity sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg== +"@apollo/usage-reporting-protobuf@^4.0.0", "@apollo/usage-reporting-protobuf@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.0.tgz#b54b8c32702bbe81aa0e399076ddabaf75a13f9b" + integrity sha512-hXouMuw5pQVkzi8dgMybmr6Y11+eRmMQVoB5TF0HyTwAg9SOq/v3OCuiYqcVUKdBcskU9Msp+XvjAk0GKpWCwQ== dependencies: - "@apollo/utils.logger" "^1.0.0" - lru-cache "7.10.1 - 7.13.1" + "@apollo/protobufjs" "1.2.7" -"@apollo/utils.logger@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@apollo/utils.logger/-/utils.logger-1.0.1.tgz#aea0d1bb7ceb237f506c6bbf38f10a555b99a695" - integrity sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA== +"@apollo/utils.createhash@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.createhash/-/utils.createhash-2.0.1.tgz#9d982a166833ce08265ff70f8ef781d65109bdaa" + integrity sha512-fQO4/ZOP8LcXWvMNhKiee+2KuKyqIcfHrICA+M4lj/h/Lh1H10ICcUtk6N/chnEo5HXu0yejg64wshdaiFitJg== + dependencies: + "@apollo/utils.isnodelike" "^2.0.1" + sha.js "^2.4.11" -"@apollo/utils.printwithreducedwhitespace@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz#c466299a4766eef8577a2a64c8f27712e8bd7e30" - integrity sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q== +"@apollo/utils.dropunuseddefinitions@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-2.0.1.tgz#916cd912cbd88769d3b0eab2d24f4674eeda8124" + integrity sha512-EsPIBqsSt2BwDsv8Wu76LK5R1KtsVkNoO4b0M5aK0hx+dGg9xJXuqlr7Fo34Dl+y83jmzn+UvEW+t1/GP2melA== -"@apollo/utils.removealiases@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz#75f6d83098af1fcae2d3beb4f515ad4a8452a8c1" - integrity sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A== +"@apollo/utils.fetcher@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.fetcher/-/utils.fetcher-2.0.1.tgz#2f6e3edc8ce79fbe916110d9baaddad7e13d955f" + integrity sha512-jvvon885hEyWXd4H6zpWeN3tl88QcWnHp5gWF5OPF34uhvoR+DFqcNxs9vrRaBBSY3qda3Qe0bdud7tz2zGx1A== -"@apollo/utils.sortast@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz#93218c7008daf3e2a0725196085a33f5aab5ad07" - integrity sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA== +"@apollo/utils.isnodelike@^2.0.0", "@apollo/utils.isnodelike@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.1.tgz#08a7e50f08d2031122efa25af089d1c6ee609f31" + integrity sha512-w41XyepR+jBEuVpoRM715N2ZD0xMD413UiJx8w5xnAZD2ZkSJnMJBoIzauK83kJpSgNuR6ywbV29jG9NmxjK0Q== + +"@apollo/utils.keyvaluecache@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-2.1.1.tgz#f3f79a2f00520c6ab7a77a680a4e1fec4d19e1a6" + integrity sha512-qVo5PvUUMD8oB9oYvq4ViCjYAMWnZ5zZwEjNF37L2m1u528x5mueMlU+Cr1UinupCgdB78g+egA1G98rbJ03Vw== dependencies: - lodash.sortby "^4.7.0" + "@apollo/utils.logger" "^2.0.1" + lru-cache "^7.14.1" -"@apollo/utils.stripsensitiveliterals@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz#4920651f36beee8e260e12031a0c5863ad0c7b28" - integrity sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w== +"@apollo/utils.logger@^2.0.0", "@apollo/utils.logger@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.logger/-/utils.logger-2.0.1.tgz#74faeb97d7ad9f22282dfb465bcb2e6873b8a625" + integrity sha512-YuplwLHaHf1oviidB7MxnCXAdHp3IqYV8n0momZ3JfLniae92eYqMIx+j5qJFX6WKJPs6q7bczmV4lXIsTu5Pg== -"@apollo/utils.usagereporting@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz#3c70b49e554771659576fe35381c7a4b321d27fd" - integrity sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ== - dependencies: - "@apollo/usage-reporting-protobuf" "^4.0.0" - "@apollo/utils.dropunuseddefinitions" "^1.1.0" - "@apollo/utils.printwithreducedwhitespace" "^1.1.0" - "@apollo/utils.removealiases" "1.0.0" - "@apollo/utils.sortast" "^1.1.0" - "@apollo/utils.stripsensitiveliterals" "^1.2.0" +"@apollo/utils.printwithreducedwhitespace@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-2.0.1.tgz#f4fadea0ae849af2c19c339cc5420d1ddfaa905e" + integrity sha512-9M4LUXV/fQBh8vZWlLvb/HyyhjJ77/I5ZKu+NBWV/BmYGyRmoEP9EVAy7LCVoY3t8BDcyCAGfxJaLFCSuQkPUg== -"@apollographql/apollo-tools@^0.5.3": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz#cb3998c6cf12e494b90c733f44dd9935e2d8196c" - integrity sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw== +"@apollo/utils.removealiases@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.removealiases/-/utils.removealiases-2.0.1.tgz#2873c93d72d086c60fc0d77e23d0f75e66a2598f" + integrity sha512-0joRc2HBO4u594Op1nev+mUF6yRnxoUH64xw8x3bX7n8QBDYdeYgY4tF0vJReTy+zdn2xv6fMsquATSgC722FA== -"@apollographql/graphql-playground-html@1.6.29": - version "1.6.29" - resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz#a7a646614a255f62e10dcf64a7f68ead41dec453" - integrity sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA== +"@apollo/utils.sortast@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.sortast/-/utils.sortast-2.0.1.tgz#58c90bb8bd24726346b61fa51ba7fcf06e922ef7" + integrity sha512-eciIavsWpJ09za1pn37wpsCGrQNXUhM0TktnZmHwO+Zy9O4fu/WdB4+5BvVhFiZYOXvfjzJUcc+hsIV8RUOtMw== dependencies: - xss "^1.0.8" + lodash.sortby "^4.7.0" + +"@apollo/utils.stripsensitiveliterals@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-2.0.1.tgz#2f3350483be376a98229f90185eaf19888323132" + integrity sha512-QJs7HtzXS/JIPMKWimFnUMK7VjkGQTzqD9bKD1h3iuPAqLsxd0mUNVbkYOPTsDhUKgcvUOfOqOJWYohAKMvcSA== -"@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== +"@apollo/utils.usagereporting@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.usagereporting/-/utils.usagereporting-2.0.1.tgz#6926231ad1f5837beb3cac06afcd22944ac0f644" + integrity sha512-18smkNfiSfu5yj2mpCIfSzmpDNh90a4PQ6t8kSwGKcPRD3KD83TfK7fF37fSRdnvO93dBkGreWisLXnCpqfWXg== dependencies: - "@babel/highlight" "^7.10.4" + "@apollo/usage-reporting-protobuf" "^4.0.0" + "@apollo/utils.dropunuseddefinitions" "^2.0.1" + "@apollo/utils.printwithreducedwhitespace" "^2.0.1" + "@apollo/utils.removealiases" "2.0.1" + "@apollo/utils.sortast" "^2.0.1" + "@apollo/utils.stripsensitiveliterals" "^2.0.1" + +"@apollo/utils.withrequired@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.withrequired/-/utils.withrequired-2.0.1.tgz#e72bc512582a6f26af150439f7eb7473b46ba874" + integrity sha512-YBDiuAX9i1lLc6GeTy1m7DGLFn/gMnvXqlalOIMjM7DeOgIacEjjfwPqb0M1CQ2v11HhR15d1NmxJoRCfrNqcA== "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5": version "7.14.5" @@ -144,73 +181,79 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/code-frame@^7.16.7", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.16.7", "@babel/code-frame@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== dependencies: "@babel/highlight" "^7.22.5" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.7", "@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== +"@babel/code-frame@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/code-frame@^7.22.10", "@babel/code-frame@^7.8.3": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" + integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA== + dependencies: + "@babel/highlight" "^7.22.10" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.0": + version "7.22.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.0.tgz#bdceda7e6bcbe92475b497e35c868479635affe7" + integrity sha512-OgCMbbNCD/iA8cjMt+Zhp+nIC7XKaEaTG8zjvZPjGbhkppq1NIMWiZn7EaZRxUDHn4Ul265scRqg94N2WiFaGw== -"@babel/compat-data@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.5.tgz#b1f6c86a02d85d2dd3368a2b67c09add8cd0c255" - integrity sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" + integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.5.tgz#d67d9747ecf26ee7ecd3ebae1ee22225fe902a89" - integrity sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg== + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.1.tgz#5de51c5206f4c6f5533562838337a603c1033cfd" + integrity sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helpers" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.22.0" + "@babel/helper-compilation-targets" "^7.22.1" + "@babel/helper-module-transforms" "^7.22.1" + "@babel/helpers" "^7.22.0" + "@babel/parser" "^7.22.0" + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.1" + "@babel/types" "^7.22.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.2" semver "^6.3.0" -"@babel/core@^7.13.1": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.4.tgz#a70d06c58ae1fce39c23f8efd79f9d5eb8b2f397" - integrity sha512-Lkcv9I4a8bgUI8LJOLM6IKv6hnz1KOju6KM1lceqVMKlKKqNRopYd2Pc9MgIurqvMJ6BooemrnJz8jlIiQIpsA== +"@babel/core@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.11.tgz#8033acaa2aa24c3f814edaaa057f3ce0ba559c24" + integrity sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ== dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.10" + "@babel/generator" "^7.22.10" + "@babel/helper-compilation-targets" "^7.22.10" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helpers" "^7.22.11" + "@babel/parser" "^7.22.11" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.11" + "@babel/types" "^7.22.11" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" - integrity sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ== - dependencies: - "@babel/types" "^7.15.0" - jsesc "^2.5.1" - source-map "^0.5.0" + json5 "^2.2.3" + semver "^6.3.1" "@babel/generator@^7.15.4", "@babel/generator@^7.7.2": version "7.15.4" @@ -221,12 +264,22 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.5.tgz#1e7bf768688acfb05cf30b2369ef855e82d984f7" - integrity sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA== +"@babel/generator@^7.22.0": + version "7.22.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.0.tgz#59241bf17ab7a9b0f7c339e16355366ef2a1a6e2" + integrity sha512-tyzR0OsH88AelgukhL2rbEUCLKBGmy2G9Th/5vpyOt0zf44Be61kvIQXjCwTSX8t+qJ/vMwZfhK6mPdrMLZXRg== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.22.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/generator@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722" + integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A== + dependencies: + "@babel/types" "^7.22.10" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -241,13 +294,6 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" - integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA== - dependencies: - "@babel/types" "^7.15.4" - "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -255,92 +301,81 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f" - integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.14.5", "@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz#573e735937e99ea75ea30788b57eb52fab7468c9" + integrity sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" + "@babel/types" "^7.22.10" -"@babel/helper-compilation-targets@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz#973df8cbd025515f3ff25db0c05efc704fa79818" - integrity sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A== +"@babel/helper-compilation-targets@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz#bfcd6b7321ffebe33290d68550e2c9d7eb7c7a58" + integrity sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" + "@babel/compat-data" "^7.22.0" + "@babel/helper-validator-option" "^7.21.0" + browserslist "^4.21.3" + lru-cache "^5.1.1" semver "^6.3.0" -"@babel/helper-compilation-targets@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz#fc7319fc54c5e2fa14b2909cf3c5fd3046813e02" - integrity sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw== +"@babel/helper-compilation-targets@^7.22.10", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024" + integrity sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q== dependencies: - "@babel/compat-data" "^7.22.5" + "@babel/compat-data" "^7.22.9" "@babel/helper-validator-option" "^7.22.5" - browserslist "^4.21.3" + browserslist "^4.21.9" lru-cache "^5.1.1" - semver "^6.3.0" + semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" - integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw== +"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz#4078686740459eeb4af3494a273ac09148dfb213" + integrity sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" + integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - regexpu-core "^4.7.1" + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== +"@babel/helper-define-polyfill-provider@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" + integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" debug "^4.1.1" lodash.debounce "^4.0.8" resolve "^1.14.2" - semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz#ac3a56dbada59ed969d712cf527bd8271fe3eba8" + integrity sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA== "@babel/helper-environment-visitor@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== -"@babel/helper-explode-assignable-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c" - integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4": +"@babel/helper-function-name@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== @@ -349,6 +384,14 @@ "@babel/template" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + "@babel/helper-function-name@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" @@ -364,13 +407,20 @@ dependencies: "@babel/types" "^7.15.4" -"@babel/helper-hoist-variables@^7.14.5", "@babel/helper-hoist-variables@^7.15.4": +"@babel/helper-hoist-variables@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== dependencies: "@babel/types" "^7.15.4" +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -378,19 +428,12 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" - integrity sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg== - dependencies: - "@babel/types" "^7.15.0" - -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== +"@babel/helper-member-expression-to-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" + integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.22.5" "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5": version "7.22.5" @@ -399,121 +442,84 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c" - integrity sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw== +"@babel/helper-module-imports@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.14.9" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/types" "^7.21.4" -"@babel/helper-module-transforms@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" - integrity sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg== +"@babel/helper-module-transforms@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz#e0cad47fedcf3cae83c11021696376e2d5a50c63" + integrity sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw== dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.0" - "@babel/helper-simple-access" "^7.14.8" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/helper-environment-visitor" "^7.22.1" + "@babel/helper-module-imports" "^7.21.4" + "@babel/helper-simple-access" "^7.21.5" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.1" + "@babel/types" "^7.22.0" -"@babel/helper-module-transforms@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz#0f65daa0716961b6e96b164034e737f60a80d2ef" - integrity sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw== +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" + integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== dependencies: "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-module-imports" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.5" - "@babel/types" "^7.22.5" -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== -"@babel/helper-plugin-utils@^7.22.5": +"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f" - integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-wrap-function" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" +"@babel/helper-plugin-utils@^7.20.2": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" + integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== -"@babel/helper-replace-supers@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz#ace07708f5bf746bf2e6ba99572cce79b5d4e7f4" - integrity sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA== +"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" + integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.0" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-wrap-function" "^7.22.9" -"@babel/helper-simple-access@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" - integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" + integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== dependencies: - "@babel/types" "^7.14.8" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== +"@babel/helper-simple-access@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" + integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.21.5" "@babel/helper-simple-access@^7.22.5": version "7.22.5" @@ -522,26 +528,26 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" - integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.14.5", "@babel/helper-split-export-declaration@^7.15.4": +"@babel/helper-split-export-declaration@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== dependencies: "@babel/types" "^7.15.4" -"@babel/helper-split-export-declaration@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz#88cf11050edb95ed08d596f7a044462189127a08" - integrity sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ== +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.18.6" "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" @@ -550,6 +556,11 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-string-parser@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" + integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== + "@babel/helper-string-parser@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" @@ -560,7 +571,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== -"@babel/helper-validator-identifier@^7.18.6": +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": 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== @@ -570,45 +581,44 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== +"@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== "@babel/helper-validator-option@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== -"@babel/helper-wrap-function@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7" - integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw== +"@babel/helper-wrap-function@^7.22.9": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz#d845e043880ed0b8c18bd194a12005cb16d2f614" + integrity sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ== dependencies: - "@babel/helper-function-name" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.10" -"@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== +"@babel/helpers@^7.22.0": + version "7.22.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.0.tgz#9971320554c691c7dfafa5c4ba35edf340df29a0" + integrity sha512-I/hZCYErxdjuUnJpJxHmCESB3AdcOAFjj+K6+of9JyWBeAhggR9NQoUHI481pRNH87cx77mbpx0cygzXlvGayA== dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/template" "^7.21.9" + "@babel/traverse" "^7.22.0" + "@babel/types" "^7.22.0" -"@babel/helpers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.5.tgz#74bb4373eb390d1ceed74a15ef97767e63120820" - integrity sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q== +"@babel/helpers@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.11.tgz#b02f5d5f2d7abc21ab59eeed80de410ba70b056a" + integrity sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg== dependencies: "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/traverse" "^7.22.11" + "@babel/types" "^7.22.11" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": +"@babel/highlight@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== @@ -626,6 +636,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7" + integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ== + dependencies: + "@babel/helper-validator-identifier" "^7.22.5" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/highlight@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" @@ -640,188 +659,77 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae" integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g== -"@babel/parser@^7.14.7", "@babel/parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea" - integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q== - -"@babel/parser@^7.15.0": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.3.tgz#3416d9bea748052cfcb63dbcc27368105b1ed862" - integrity sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA== +"@babel/parser@^7.14.7", "@babel/parser@^7.21.9", "@babel/parser@^7.22.0": + version "7.22.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.0.tgz#b23786d26c2fd2ee07ec7384a96a398c3e3866f9" + integrity sha512-DA65VCJRetcFmJnt9/hEmRvXNCwk0V86dxG6p6N13hzDazaLRjGdTGPGgjxZOtLuFgWzOSRX4grybmRXwQ9bSg== "@babel/parser@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.4.tgz#02f2931b822512d3aad17d475ae83da74a255a84" integrity sha512-xmzz+7fRpjrvDUj+GV7zfz/R3gSK2cOxGlazaXooxspCr539cbTXJKvBJzSVI2pPhcRGquoOtaIkKCsHQUiO3w== +"@babel/parser@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.11.tgz#becf8ee33aad2a35ed5607f521fe6e72a615f905" + integrity sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g== + +"@babel/parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea" + integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q== + "@babel/parser@^7.22.7": version "7.22.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz#4b467302e1548ed3b1be43beae2cc9cf45e0bb7e" - integrity sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" + integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-proposal-async-generator-functions@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.9.tgz#7028dc4fa21dc199bbacf98b39bab1267d0eaf9a" - integrity sha512-d1lnh+ZnKrFKwtTYdw320+sQWCTwgkB9fmUhNXRADA4akR6wLjaruSGnIEUjpt9HCOwTr4ynFTKu19b7rFRpmw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" + integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" - "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.5" -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-proposal-class-static-block@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7" - integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA== +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-proposal-json-strings@^7.14.5": +"@babel/plugin-syntax-class-static-block@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz#5920a2b3df7f7901df0205974c0641b13fd9d363" - integrity sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g== - dependencies: - "@babel/compat-data" "^7.14.7" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.14.5" - -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-private-property-in-object@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5" - integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" @@ -839,7 +747,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-assertions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" + integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" + integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -853,20 +775,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" - integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": +"@babel/plugin-syntax-jsx@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" + integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -923,333 +845,479 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.14.5", "@babel/plugin-syntax-typescript@^7.7.2": +"@babel/plugin-syntax-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-typescript@^7.7.2": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== +"@babel/plugin-transform-arrow-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== +"@babel/plugin-transform-async-generator-functions@^7.22.10": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz#dbe3b1ff5a52e2e5edc4b19a60d325a675ed2649" + integrity sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-block-scoping@^7.14.5": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== +"@babel/plugin-transform-async-to-generator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" -"@babel/plugin-transform-classes@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.9.tgz#2a391ffb1e5292710b00f2e2c210e1435e7d449f" - integrity sha512-NfZpTcxU3foGWbl4wxmZ35mTsYJy8oQocbeIMoDAGGFarAmSQlL+LWMkDx/tj6pNotpbX3rltIA4dprgAPOq5A== +"@babel/plugin-transform-block-scoped-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz#88a1dccc3383899eb5e660534a76a22ecee64faa" + integrity sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" + integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" + integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== +"@babel/plugin-transform-computed-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== +"@babel/plugin-transform-destructuring@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz#38e2273814a58c810b6c34ea293be4973c4eb5e2" + integrity sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== +"@babel/plugin-transform-dotall-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" + integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== +"@babel/plugin-transform-duplicate-keys@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" + integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== +"@babel/plugin-transform-dynamic-import@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-for-of@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" - integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== +"@babel/plugin-transform-exponentiation-operator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" + integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== +"@babel/plugin-transform-export-namespace-from@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== +"@babel/plugin-transform-for-of@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" + integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== +"@babel/plugin-transform-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +"@babel/plugin-transform-json-strings@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-modules-commonjs@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.0.tgz#3305896e5835f953b5cdb363acd9e8c2219a5281" - integrity sha512-3H/R9s8cXcOGE8kgMlmjYYC9nqr5ELiPkJn4q0mypBrjhYQoc+5/Maq69vV4xRPWnkzZuwJPf5rArxpB/35Cig== +"@babel/plugin-transform-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== dependencies: - "@babel/helper-module-transforms" "^7.15.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.14.8" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" - integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw== +"@babel/plugin-transform-logical-assignment-operators@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== dependencies: - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +"@babel/plugin-transform-member-expression-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" - integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== +"@babel/plugin-transform-modules-amd@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" + integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +"@babel/plugin-transform-modules-commonjs@^7.22.11", "@babel/plugin-transform-modules-commonjs@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.11.tgz#d7991d3abad199c03b68ee66a64f216c47ffdfae" + integrity sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== +"@babel/plugin-transform-modules-systemjs@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz#3386be5875d316493b517207e8f1931d93154bb1" + integrity sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" -"@babel/plugin-transform-parameters@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" - integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== +"@babel/plugin-transform-modules-umd@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" + integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-react-display-name@^7.14.5": - version "7.15.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz#6aaac6099f1fcf6589d35ae6be1b6e10c8c602b9" - integrity sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q== +"@babel/plugin-transform-new-target@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" + integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-react-jsx-development@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz#1a6c73e2f7ed2c42eebc3d2ad60b0c7494fcb9af" - integrity sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== dependencies: - "@babel/plugin-transform-react-jsx" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-react-jsx@^7.14.5": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz#3314b2163033abac5200a869c4de242cd50a914c" - integrity sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw== +"@babel/plugin-transform-numeric-separator@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-jsx" "^7.14.5" - "@babel/types" "^7.14.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-react-pure-annotations@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz#18de612b84021e3a9802cbc212c9d9f46d0d11fc" - integrity sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== +"@babel/plugin-transform-object-rest-spread@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz#dbbb06ce783cd994a8f430d8cefa553e9b42ca62" + integrity sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.10" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.5" -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== +"@babel/plugin-transform-object-super@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== dependencies: - regenerator-transform "^0.14.2" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== +"@babel/plugin-transform-optional-catch-binding@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== +"@babel/plugin-transform-optional-chaining@^7.22.10", "@babel/plugin-transform-optional-chaining@^7.22.5": + version "7.22.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.12.tgz#d7ebf6a88cd2f4d307b0e000ab630acd8124b333" + integrity sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-spread@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" - integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== +"@babel/plugin-transform-parameters@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" + integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" + integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== +"@babel/plugin-transform-private-property-in-object@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== +"@babel/plugin-transform-property-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typescript@^7.15.0": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.15.4.tgz#db7a062dcf8be5fc096bc0eeb40a13fbfa1fa251" - integrity sha512-sM1/FEjwYjXvMwu1PJStH11kJ154zd/lpY56NQJ5qH2D0mabMv1CAy/kdvS9RP4Xgfj9fBBA3JiSLdDHgXdzOA== +"@babel/plugin-transform-react-display-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" + integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-transform-react-jsx" "^7.22.5" -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== +"@babel/plugin-transform-react-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz#932c291eb6dd1153359e2a90cb5e557dcf068416" + integrity sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/types" "^7.22.5" -"@babel/preset-env@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.0.tgz#e2165bf16594c9c05e52517a194bf6187d6fe464" - integrity sha512-FhEpCNFCcWW3iZLg0L2NPE9UerdtsCR6ZcsGHUX6Om6kbCQeL5QZDqFDmeNHC6/fy6UH3jEge7K4qG5uC9In0Q== +"@babel/plugin-transform-react-pure-annotations@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" + integrity sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-async-generator-functions" "^7.14.9" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.14.5" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.14.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.14.5" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" + integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-shorthand-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" + integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" + integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.11.tgz#9f27fb5e51585729374bb767ab6a6d9005a23329" + integrity sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + +"@babel/plugin-transform-unicode-escapes@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" + integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" + integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" + integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.10.tgz#3263b9fe2c8823d191d28e61eac60a79f9ce8a0f" + integrity sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.10" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -1259,89 +1327,111 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.14.5" - "@babel/plugin-transform-classes" "^7.14.9" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.14.5" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.15.0" - "@babel/plugin-transform-modules-systemjs" "^7.14.5" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.14.5" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.6" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.15.0" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.16.0" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.10" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.22.10" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.5" + "@babel/plugin-transform-classes" "^7.22.6" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.22.10" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.5" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.5" + "@babel/plugin-transform-for-of" "^7.22.5" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.5" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.5" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.5" + "@babel/plugin-transform-modules-systemjs" "^7.22.5" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.5" + "@babel/plugin-transform-numeric-separator" "^7.22.5" + "@babel/plugin-transform-object-rest-spread" "^7.22.5" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.10" + "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.5" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.10" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.10" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "0.1.6-no-external-plugins" + "@babel/types" "^7.22.10" + babel-plugin-polyfill-corejs2 "^0.4.5" + babel-plugin-polyfill-corejs3 "^0.8.3" + babel-plugin-polyfill-regenerator "^0.5.2" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.12.13": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.14.5.tgz#0fbb769513f899c2c56f3a882fa79673c2d4ab3c" - integrity sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== +"@babel/preset-react@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.5.tgz#c4d6058fbf80bccad02dd8c313a9aaa67e3c3dd6" + integrity sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-react-display-name" "^7.14.5" - "@babel/plugin-transform-react-jsx" "^7.14.5" - "@babel/plugin-transform-react-jsx-development" "^7.14.5" - "@babel/plugin-transform-react-pure-annotations" "^7.14.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-transform-react-display-name" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.22.5" -"@babel/preset-typescript@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz#e8fca638a1a0f64f14e1119f7fe4500277840945" - integrity sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow== +"@babel/preset-typescript@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.11.tgz#f218cd0345524ac888aa3dc32f029de5b064b575" + integrity sha512-tWY5wyCZYBGY7IlalfKI1rLiGlIfnwsRHZqlky0HVv8qviwQ1Uo/05M6+s+TcTCVa6Bmoo2uJW5TMFX6Wa4qVg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-typescript" "^7.15.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.11" + "@babel/plugin-transform-typescript" "^7.22.11" -"@babel/register@^7.14.5": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.15.3.tgz#6b40a549e06ec06c885b2ec42c3dd711f55fe752" - integrity sha512-mj4IY1ZJkorClxKTImccn4T81+UKTo4Ux0+OFSV9hME1ooqS9UV+pJ6BjD0qXPK4T3XW/KNa79XByjeEMZz+fw== +"@babel/register@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.5.tgz#e4d8d0f615ea3233a27b5c6ada6750ee59559939" + integrity sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" make-dir "^2.1.0" - pirates "^4.0.0" + pirates "^4.0.5" source-map-support "^0.5.16" +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" @@ -1364,11 +1454,18 @@ regenerator-runtime "^0.13.4" "@babel/runtime@^7.14.5", "@babel/runtime@^7.17.2": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" - integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== + version "7.22.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.0.tgz#b7ca53ae391c404037540724186038afd83e26f9" + integrity sha512-TT6NB0oszYQ4oxLNUdG+FNHIc3MohXVCKA2BeyQ4WeM2VCSC6wBZ6P0Yfkdzxv+87D8Xk0LJyHeCKlWMvpZt0g== dependencies: - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.15.4": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.11.tgz#7a9ba3bbe406ad6f9e8dd4da2ece453eb23a77a4" + integrity sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA== + dependencies: + regenerator-runtime "^0.14.0" "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.9": version "7.17.9" @@ -1391,7 +1488,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.14.5", "@babel/template@^7.15.4", "@babel/template@^7.3.3": +"@babel/template@^7.15.4", "@babel/template@^7.3.3": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== @@ -1400,6 +1497,15 @@ "@babel/parser" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/template@^7.20.7", "@babel/template@^7.21.9": + version "7.21.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" + integrity sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/parser" "^7.21.9" + "@babel/types" "^7.21.5" + "@babel/template@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" @@ -1409,49 +1515,35 @@ "@babel/parser" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" - integrity sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.0" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.15.0" - "@babel/types" "^7.15.0" +"@babel/traverse@^7.22.0", "@babel/traverse@^7.22.1": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.1.tgz#bd22c50b1439cfcfc2fa137b7fdf6c06787456e9" + integrity sha512-lAWkdCoUFnmwLBhIRLciFntGYsIIoC6vIbN8zrLPqBnJmPu7Z6nzqnKd7FsxQUNAvZfVZ0x6KdNvNp8zWIOHSQ== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.22.0" + "@babel/helper-environment-visitor" "^7.22.1" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.22.0" + "@babel/types" "^7.22.0" debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.5.tgz#44bd276690db6f4940fdb84e1cb4abd2f729ccd1" - integrity sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ== +"@babel/traverse@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.11.tgz#71ebb3af7a05ff97280b83f05f8865ac94b2027c" + integrity sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ== dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.5" + "@babel/code-frame" "^7.22.10" + "@babel/generator" "^7.22.10" "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-function-name" "^7.22.5" "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.22.11" + "@babel/types" "^7.22.11" debug "^4.1.0" globals "^11.1.0" @@ -1471,15 +1563,21 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" - integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== - dependencies: - esutils "^2.0.2" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - +"@babel/traverse@^7.7.2": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" + integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.15.4" + "@babel/helper-function-name" "^7.15.4" + "@babel/helper-hoist-variables" "^7.15.4" + "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/parser" "^7.15.4" + "@babel/types" "^7.15.4" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.15.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" @@ -1488,7 +1586,7 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@babel/types@^7.14.5", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.4.4": +"@babel/types@^7.15.4", "@babel/types@^7.4.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.4.tgz#74eeb86dbd6748d2741396557b9860e57fce0a0d" integrity sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw== @@ -1496,12 +1594,22 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" -"@babel/types@^7.14.8", "@babel/types@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" - integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== +"@babel/types@^7.18.6", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.22.0": + version "7.22.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.0.tgz#b7383f76a5fedf967c57c1f940066fb31ca3e97a" + integrity sha512-NtXlm3f6cNWIv003cETdlz9sss0VMNtplyatFohxWPz90AbwuhCbHbQopkGis6bG1vOunDLN0FF/4Uv5i8LFZQ== dependencies: - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-string-parser" "^7.21.5" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + +"@babel/types@^7.22.10", "@babel/types@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.11.tgz#0e65a6a1d4d9cbaa892b2213f6159485fe632ea2" + integrity sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" "@babel/types@^7.22.5": @@ -1535,21 +1643,20 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz#90420f9f9c6d3987f176a19a7d8e764271a2f55d" integrity sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g== -"@electron/get@^1.13.0": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" - integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== +"@electron/get@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.2.tgz#ae2a967b22075e9c25aaf00d5941cd79c21efd7e" + integrity sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g== dependencies: debug "^4.1.1" env-paths "^2.2.0" fs-extra "^8.1.0" - got "^9.6.0" + got "^11.8.5" progress "^2.0.3" semver "^6.2.0" sumchecker "^3.0.1" optionalDependencies: global-agent "^3.0.0" - global-tunnel-ng "^2.7.1" "@emotion/babel-plugin@^11.11.0": version "11.11.0" @@ -1656,33 +1763,38 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.0.tgz#5b63f0df5528a44e28aa8578d393de908cc3d4d0" - integrity sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw== +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.0.tgz#11195513186f68d42fbf449f9a7136b2c0c92005" + integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg== -"@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== +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.48.0": + version "8.48.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb" + integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== + "@ethereumjs/common@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.4.0.tgz#2d67f6e6ba22246c5c89104e6b9a119fb3039766" @@ -1714,7 +1826,22 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" -"@ethersproject/abstract-provider@5.5.1", "@ethersproject/abstract-provider@^5.5.0", "@ethersproject/abstract-provider@^5.5.1": +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.5.1", "@ethersproject/abstract-provider@^5.5.0": version "5.5.1" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5" integrity sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg== @@ -1740,6 +1867,19 @@ "@ethersproject/transactions" "^5.6.2" "@ethersproject/web" "^5.6.1" +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + "@ethersproject/abstract-signer@5.5.0", "@ethersproject/abstract-signer@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d" @@ -1762,6 +1902,17 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/abstract-signer@^5.6.0", "@ethersproject/abstract-signer@^5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" @@ -1784,6 +1935,17 @@ "@ethersproject/logger" "^5.5.0" "@ethersproject/rlp" "^5.5.0" +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/address@^5.6.0", "@ethersproject/address@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" @@ -1802,6 +1964,13 @@ dependencies: "@ethersproject/bytes" "^5.5.0" +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/base64@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" @@ -1817,6 +1986,14 @@ "@ethersproject/bytes" "^5.5.0" "@ethersproject/properties" "^5.5.0" +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/basex@^5.6.0", "@ethersproject/basex@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" @@ -1834,6 +2011,15 @@ "@ethersproject/logger" "^5.5.0" bn.js "^4.11.9" +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + "@ethersproject/bignumber@^5.6.0", "@ethersproject/bignumber@^5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.2.tgz#72a0717d6163fab44c47bcc82e0c550ac0315d66" @@ -1857,6 +2043,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/constants@5.5.0", "@ethersproject/constants@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e" @@ -1864,6 +2057,13 @@ dependencies: "@ethersproject/bignumber" "^5.5.0" +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" @@ -1887,6 +2087,22 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/transactions" "^5.5.0" +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/hash@5.5.0", "@ethersproject/hash@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.5.0.tgz#7cee76d08f88d1873574c849e0207dcb32380cc9" @@ -1901,6 +2117,21 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/hash@^5.6.0", "@ethersproject/hash@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.1.tgz#224572ea4de257f05b4abf8ae58b03a67e99b0f4" @@ -1951,6 +2182,24 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/wordlists" "^5.6.0" +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/hdnode@^5.6.0", "@ethersproject/hdnode@^5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" @@ -1988,6 +2237,25 @@ aes-js "3.0.0" scrypt-js "3.0.1" +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + "@ethersproject/json-wallets@^5.6.0": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz#3f06ba555c9c0d7da46756a12ac53483fe18dd91" @@ -2023,11 +2291,24 @@ "@ethersproject/bytes" "^5.6.1" js-sha3 "0.8.0" +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + "@ethersproject/logger@5.5.0", "@ethersproject/logger@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d" integrity sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg== +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + "@ethersproject/logger@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" @@ -2040,12 +2321,12 @@ dependencies: "@ethersproject/logger" "^5.5.0" -"@ethersproject/networks@^5.5.1": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.2.tgz#784c8b1283cd2a931114ab428dae1bd00c07630b" - integrity sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ== +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== dependencies: - "@ethersproject/logger" "^5.5.0" + "@ethersproject/logger" "^5.7.0" "@ethersproject/networks@^5.6.3": version "5.6.4" @@ -2062,6 +2343,14 @@ "@ethersproject/bytes" "^5.5.0" "@ethersproject/sha2" "^5.5.0" +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/pbkdf2@^5.6.0", "@ethersproject/pbkdf2@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" @@ -2077,6 +2366,13 @@ dependencies: "@ethersproject/logger" "^5.5.0" +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" @@ -2109,28 +2405,29 @@ bech32 "1.1.4" ws "7.4.6" -"@ethersproject/providers@5.5.3", "@ethersproject/providers@^5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.3.tgz#56c2b070542ac44eb5de2ed3cf6784acd60a3130" - integrity sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" bech32 "1.1.4" ws "7.4.6" @@ -2142,6 +2439,14 @@ "@ethersproject/bytes" "^5.5.0" "@ethersproject/logger" "^5.5.0" +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/random@^5.6.0", "@ethersproject/random@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.1.tgz#66915943981bcd3e11bbd43733f5c3ba5a790255" @@ -2158,6 +2463,14 @@ "@ethersproject/bytes" "^5.5.0" "@ethersproject/logger" "^5.5.0" +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.1.tgz#df8311e6f9f24dcb03d59a2bac457a28a4fe2bd8" @@ -2175,6 +2488,15 @@ "@ethersproject/logger" "^5.5.0" hash.js "1.1.7" +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + "@ethersproject/sha2@^5.6.0", "@ethersproject/sha2@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" @@ -2196,6 +2518,18 @@ elliptic "6.5.4" hash.js "1.1.7" +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + "@ethersproject/signing-key@^5.6.0", "@ethersproject/signing-key@^5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.2.tgz#8a51b111e4d62e5a62aee1da1e088d12de0614a3" @@ -2220,6 +2554,18 @@ "@ethersproject/sha2" "^5.5.0" "@ethersproject/strings" "^5.5.0" +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/strings@5.5.0", "@ethersproject/strings@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.5.0.tgz#e6784d00ec6c57710755699003bc747e98c5d549" @@ -2238,6 +2584,15 @@ "@ethersproject/constants" "^5.6.1" "@ethersproject/logger" "^5.6.0" +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/transactions@5.5.0", "@ethersproject/transactions@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908" @@ -2253,6 +2608,21 @@ "@ethersproject/rlp" "^5.5.0" "@ethersproject/signing-key" "^5.5.0" +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions@^5.6.0", "@ethersproject/transactions@^5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" @@ -2277,6 +2647,15 @@ "@ethersproject/constants" "^5.5.0" "@ethersproject/logger" "^5.5.0" +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/wallet@5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.5.0.tgz#322a10527a440ece593980dca6182f17d54eae75" @@ -2319,6 +2698,27 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/wordlists" "^5.6.0" +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/web@5.5.0", "@ethersproject/web@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.0.tgz#0e5bb21a2b58fb4960a705bfc6522a6acf461e28" @@ -2330,16 +2730,16 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" -"@ethersproject/web@^5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.1.tgz#cfcc4a074a6936c657878ac58917a61341681316" - integrity sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg== +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0", "@ethersproject/web@^5.7.1": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== dependencies: - "@ethersproject/base64" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" "@ethersproject/web@^5.6.1": version "5.6.1" @@ -2363,6 +2763,17 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/wordlists@^5.6.0", "@ethersproject/wordlists@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" @@ -2396,14 +2807,6 @@ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== -"@graphql-tools/merge@8.3.1": - version "8.3.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.1.tgz#06121942ad28982a14635dbc87b5d488a041d722" - integrity sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg== - dependencies: - "@graphql-tools/utils" "8.9.0" - tslib "^2.4.0" - "@graphql-tools/merge@^8.4.1": version "8.4.2" resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.4.2.tgz#95778bbe26b635e8d2f60ce9856b388f11fe8288" @@ -2412,27 +2815,7 @@ "@graphql-tools/utils" "^9.2.1" tslib "^2.4.0" -"@graphql-tools/mock@^8.1.2": - version "8.7.20" - resolved "https://registry.yarnpkg.com/@graphql-tools/mock/-/mock-8.7.20.tgz#c83ae0f1940d194a3982120c9c85f3ac6b4f7f20" - integrity sha512-ljcHSJWjC/ZyzpXd5cfNhPI7YljRVvabKHPzKjEs5ElxWu2cdlLGvyNYepApXDsM/OJG/2xuhGM+9GWu5gEAPQ== - dependencies: - "@graphql-tools/schema" "^9.0.18" - "@graphql-tools/utils" "^9.2.1" - fast-json-stable-stringify "^2.1.0" - tslib "^2.4.0" - -"@graphql-tools/schema@^8.0.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.5.1.tgz#c2f2ff1448380919a330312399c9471db2580b58" - integrity sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg== - dependencies: - "@graphql-tools/merge" "8.3.1" - "@graphql-tools/utils" "8.9.0" - tslib "^2.4.0" - value-or-promise "1.0.11" - -"@graphql-tools/schema@^9.0.18": +"@graphql-tools/schema@^9.0.0": version "9.0.19" resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.19.tgz#c4ad373b5e1b8a0cf365163435b7d236ebdd06e7" integrity sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w== @@ -2442,13 +2825,6 @@ tslib "^2.4.0" value-or-promise "^1.0.12" -"@graphql-tools/utils@8.9.0": - version "8.9.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.9.0.tgz#c6aa5f651c9c99e1aca55510af21b56ec296cdb7" - integrity sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg== - dependencies: - tslib "^2.4.0" - "@graphql-tools/utils@^9.2.1": version "9.2.1" resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-9.2.1.tgz#1b3df0ef166cfa3eae706e3518b17d5922721c57" @@ -2462,19 +2838,24 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@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== +"@humanwhocodes/config-array@^0.11.10": + version "0.11.10" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" + integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + 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== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -2752,105 +3133,99 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@ledgerhq/cryptoassets@^6.37.0": - version "6.37.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-6.37.0.tgz#302833777bcd210809ca7820afb82cff8da5c296" - integrity sha512-xwrDKTS9koQBNNzc7CqgV6zfGHvNFWJjlIL0Kc4O4DVWYR2vUdztUHcvwHD1KPjxNYhVnsgIopmtq47fHt3nMg== +"@ledgerhq/cryptoassets@^9.6.0": + version "9.6.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-9.6.0.tgz#5ce783209c20efd06a54ca00e73e0d814c65c610" + integrity sha512-eLL8BLg18x6e57IaUFH80ur+OJqL/T2pXZRS5FTbaZjhGpCQGgwHM/pg8ykYSPhLNkWTpvMj3SvbcufBMwYk5g== dependencies: invariant "2" -"@ledgerhq/devices@^6.20.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-6.20.0.tgz#4280aaa5dc16f821ecab9ee8ae882299411ba5b7" - integrity sha512-WehM7HGdb+nSUzyUlz1t2qJ8Tg4I+rQkOJJsx0/Dpjkx6/+1hHcX6My/apPuwh39qahqwYhjszq0H1YzGDS0Yg== +"@ledgerhq/devices@8.0.3", "@ledgerhq/devices@^8.0.2", "@ledgerhq/devices@^8.0.3": + version "8.0.3" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.3.tgz#bca76789b9dec2353ea8b089f7bd183ed3047afd" + integrity sha512-Q7/vqkGELSBuwFafFoTqlHIRyOjw8JqbSgiQwe2R38xN0RKtKIh+5E6UfMKyoExiq+SrQg0IC8P2LS+XdjOHLw== dependencies: - "@ledgerhq/errors" "^6.10.0" - "@ledgerhq/logs" "^6.10.0" + "@ledgerhq/errors" "^6.12.6" + "@ledgerhq/logs" "^6.10.1" rxjs "6" semver "^7.3.5" -"@ledgerhq/devices@^7.0.5": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-7.0.5.tgz#2b3f69b84d4bccb2c4b1d34e534444da862f4880" - integrity sha512-2o2zD2Yv1Hgd3+R2aLCvlyT7NxBz2nltawTCPSXaf3+8MDIyZbiJlXi43hLEISRFBG3u3bYwAQuiOisimN9C6Q== +"@ledgerhq/domain-service@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/domain-service/-/domain-service-1.1.2.tgz#e9cbd6886e14453f967a13cfb35697cc6843427b" + integrity sha512-4C1lNTObeFXL5Q0wlHwr8o7p7NNW5HSSUq1foDjda4sMZjbnM35bmaeMl98+tanKgLse0rFLbhc/4AkNSTxv+Q== dependencies: - "@ledgerhq/errors" "^6.12.1" + "@ledgerhq/cryptoassets" "^9.6.0" + "@ledgerhq/errors" "^6.12.6" "@ledgerhq/logs" "^6.10.1" - rxjs "6" - semver "^7.3.5" - -"@ledgerhq/errors@^6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.10.0.tgz#dda9127b65f653fbb2f74a55e8f0e550d69de6e4" - integrity sha512-fQFnl2VIXh9Yd41lGjReCeK+Q2hwxQJvLZfqHnKqWapTz68NHOv5QcI0OHuZVNEbv0xhgdLhi5b65kgYeQSUVg== + "@ledgerhq/types-live" "^6.34.1" + axios "^1.3.4" + eip55 "^2.1.0" + react "^17.0.2" + react-dom "^17.0.2" -"@ledgerhq/errors@^6.12.0", "@ledgerhq/errors@^6.12.1": - version "6.12.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.1.tgz#99ad10bd528942bdfde0ef3d4d0dce658f6f4405" - integrity sha512-2qeUSUCpQbMhV9eLJDLI8wycFwTcWszP8g3cJycBt9Jf1VczC5MRERwAQv5AYhPa4rcy+jLKBOVZYxc35r5l7g== +"@ledgerhq/errors@6.12.6", "@ledgerhq/errors@^6.12.5", "@ledgerhq/errors@^6.12.6": + version "6.12.6" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.6.tgz#f89c82c91c2930f34bc3e0d86a27ec7b6e6e4f5f" + integrity sha512-D+r2B09vaRO06wfGoss+rNgwqWSoK0bCtsaJWzlD2hv1zxTtucqVtSztbRFypIqxWTCb3ix5Nh2dWHEJVTp2Xw== -"@ledgerhq/hw-app-eth@^6.30.0": - version "6.30.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-6.30.1.tgz#4415fd037db19c492cbb6f974a4cb7a450bb2156" - integrity sha512-Q0Fp0ZuWBoqnH3VTPdbF8LEO6z2dGr39wMSGkDzZdxK2qPCcuTnsmsoda/7JNiwra8Lh/2TLCsZDLGLGppnKxg== +"@ledgerhq/hw-app-eth@6.33.4": + version "6.33.4" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-6.33.4.tgz#316828d77906f3b40fdeced105cfd3fc4956a30d" + integrity sha512-87/vW9nZS4AS9j3SwuP7ugd6KOkeSGqIzqGCr3ejWt0o70hgp56/9jK2fcv3oCaESLjjQDyyutrTaKTIds1Y+A== dependencies: "@ethersproject/abi" "^5.5.0" "@ethersproject/rlp" "^5.5.0" - "@ledgerhq/cryptoassets" "^6.37.0" - "@ledgerhq/errors" "^6.12.1" - "@ledgerhq/hw-transport" "^6.27.8" - "@ledgerhq/hw-transport-mocker" "^6.27.8" + "@ledgerhq/cryptoassets" "^9.6.0" + "@ledgerhq/domain-service" "^1.1.2" + "@ledgerhq/errors" "^6.12.6" + "@ledgerhq/hw-transport" "^6.28.4" + "@ledgerhq/hw-transport-mocker" "^6.27.15" "@ledgerhq/logs" "^6.10.1" - axios "^0.26.1" + axios "^1.3.4" bignumber.js "^9.1.0" crypto-js "^4.1.1" -"@ledgerhq/hw-transport-mocker@^6.27.8": - version "6.27.8" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.27.8.tgz#33a08d0853bd7972296770f9202e4f2ab893a6e8" - integrity sha512-I9/TMQK0+3rgvm5+AZVFFB84wyEREqVpVVmkwhuYZj084g0Z+WRINOlr1ep3d21E67li4tzxFtkG1dzfVPD45w== +"@ledgerhq/hw-transport-mocker@^6.27.15": + version "6.27.15" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.27.15.tgz#48062a0b146ba147499bb73033d760cfb20a573f" + integrity sha512-lE6BioJqkcdeF7ugyIcXVV3QUdXnW8j69u40aK+VTXm5PgGVbpZEW3gtdLsvVUuigX1mu7Hk2pvYFG1nJbni2g== dependencies: - "@ledgerhq/hw-transport" "^6.27.8" + "@ledgerhq/hw-transport" "^6.28.4" "@ledgerhq/logs" "^6.10.1" -"@ledgerhq/hw-transport-webusb@^6.20.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.20.0.tgz#ddf4db2727d2dc79930d3c672e11cd08658f22c8" - integrity sha512-7rtgOEuEZ7/O5JofcglUVck7RXH5D8vS3zP5SjPURhvSFiJVGrtOVS+Qna7gXqGdkesDcNF0xBkwme+67n4Imw== - dependencies: - "@ledgerhq/devices" "^6.20.0" - "@ledgerhq/errors" "^6.10.0" - "@ledgerhq/hw-transport" "^6.20.0" - "@ledgerhq/logs" "^6.10.0" - -"@ledgerhq/hw-transport@^6.20.0": - version "6.20.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.20.0.tgz#16e84c99fca2d10f637c0e36c87088322479a488" - integrity sha512-5KS0Y6CbWRDOv3FgNIfk53ViQOIZqMxAw0RuOexreW5GMwuYfK7ddGi4142qcu7YrxkGo7cNe42wBbx1hdXl0Q== +"@ledgerhq/hw-transport-webusb@6.27.14": + version "6.27.14" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.27.14.tgz#b32387bfd7039afccfa1ae5fffc6afd6b68a19fb" + integrity sha512-uSpjyiR0FhNXNtXxWqbmatyfCPcjeyADm8E+czuCCM7Wwf0S05AeD+2qLiEa0U1DspBZvz65WgkhPfeSmUsbZA== dependencies: - "@ledgerhq/devices" "^6.20.0" - "@ledgerhq/errors" "^6.10.0" - events "^3.3.0" + "@ledgerhq/devices" "^8.0.2" + "@ledgerhq/errors" "^6.12.5" + "@ledgerhq/hw-transport" "^6.28.3" + "@ledgerhq/logs" "^6.10.1" -"@ledgerhq/hw-transport@^6.27.8": - version "6.27.8" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.27.8.tgz#57ece7e2b726216df698767de6828478fbe461e1" - integrity sha512-WSUgF1W3tAikSnAfeNAT2e2dgTdEQd5Vi/095C2mR5Fr0/POCSl9X4T9rlBhK5NSVD+nGXI0rN2ISj08zai8HQ== +"@ledgerhq/hw-transport@6.28.4", "@ledgerhq/hw-transport@^6.28.3", "@ledgerhq/hw-transport@^6.28.4": + version "6.28.4" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.4.tgz#c2fc5bff4fca71ac44f069b775d33d0b1b5d9000" + integrity sha512-fB2H92YQjidmae2GFCmOGPwkZWk0lvTu0tlLlzfiY0wRheAG+DEgjnqhdU8wmydkPLIj0WUjRgldtnJtg/a2iQ== dependencies: - "@ledgerhq/devices" "^7.0.5" - "@ledgerhq/errors" "^6.12.1" + "@ledgerhq/devices" "^8.0.3" + "@ledgerhq/errors" "^6.12.6" events "^3.3.0" -"@ledgerhq/logs@^6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.0.tgz#c012c1ecc1a0e53d50e6af381618dca5268461c1" - integrity sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw== - "@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== +"@ledgerhq/types-live@^6.34.1": + version "6.34.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/types-live/-/types-live-6.34.1.tgz#7a52e57eae667234d24e9a450c88feba1aeff627" + integrity sha512-OGc7RT0BM0Mg/mCdIURztVSzkBNhdzGTLSI7a73WILoPaM5/UG1VUfG82CUQjbd4Iuy908wKceAfWpNokGSVyg== + dependencies: + bignumber.js "^9.1.0" + rxjs "6" + "@mapbox/node-pre-gyp@^1.0.0": version "1.0.9" resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz#09a8781a3a036151cdebbe8719d6f8b25d4058bc" @@ -2879,7 +3254,7 @@ 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": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": 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== @@ -3038,6 +3413,18 @@ node-gyp "^7.1.0" read-package-json-fast "^2.0.1" +"@pkgr/utils@^2.3.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" + integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== + dependencies: + cross-spawn "^7.0.3" + fast-glob "^3.3.0" + is-glob "^4.0.3" + open "^9.1.0" + picocolors "^1.0.0" + tslib "^2.6.0" + "@playwright/test@^1.31": version "1.31.0" resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.31.0.tgz#bde42ca06804164be54893525110adda946248d6" @@ -3143,35 +3530,35 @@ deepmerge "^4.2.2" redux-devtools-themes "^1.0.0" -"@redux-devtools/cli@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@redux-devtools/cli/-/cli-1.0.7.tgz#4283415694ca575800d13d4642321406c97f171f" - integrity sha512-GJbOcqWWfYxeGdMfRp9x4UJa5aihjbzD6PTeStu3BpjSjoKV39R2kt+2e+zHV1viM3+mjurYQlqgXVbgac5GeQ== +"@redux-devtools/cli@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@redux-devtools/cli/-/cli-2.0.0.tgz#fcba50931cab2fc1e78a3c378b10caea223b9939" + integrity sha512-ZHwRbA8p7/WcPFvHI1FxorJL8BPpc6bqafVa+w0Q6Ejd9LyryR6mzOXKozbUBgaheY4NlsK9opCujmjtUjj88w== dependencies: + "@apollo/server" "^4.3.0" "@redux-devtools/app" "^2.1.3" - "@types/react" "^17.0.43" - apollo-server-express "^3.6.7" - body-parser "^1.20.0" - chalk "^4.1.2" + "@types/react" "^18.0.26" + body-parser "^1.20.1" + chalk "^5.2.0" cors "^2.8.5" cross-spawn "^7.0.3" - electron "^18.0.1" - express "^4.17.3" - getport "^0.1.0" - graphql "^16.3.0" - knex "^0.95.15" - lodash "^4.17.21" - minimist "^1.2.6" + electron "^22.0.0" + express "^4.18.2" + get-port "^6.1.2" + graphql "^16.6.0" + knex "^2.4.0" + lodash-es "^4.17.21" + minimist "^1.2.7" morgan "^1.10.0" open "^8.4.0" - react "^17.0.2" - react-dom "^17.0.2" - react-is "^17.0.2" - semver "^7.3.5" - socketcluster "^14.4.2" - sqlite3 "^5.0.2" - styled-components "^5.3.5" - uuid "^8.3.2" + react "^18.2.0" + react-dom "^18.2.0" + react-is "^18.2.0" + semver "^7.3.8" + socketcluster-server "^17.2.0" + sqlite3 "^5.1.4" + styled-components "^5.3.6" + uuid "^9.0.0" "@redux-devtools/core@^3.12.0": version "3.12.0" @@ -3361,17 +3748,7 @@ nanoid "^3.3.2" redux "^4.1.2" -"@reduxjs/toolkit@^1.6.0", "@reduxjs/toolkit@^1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.6.1.tgz#7bc83b47352a663bf28db01e79d17ba54b98ade9" - integrity sha512-pa3nqclCJaZPAyBhruQtiRwtTjottRrVJqziVZcWzI73i6L3miLTtUyWfauwv08HWtiXLx1xGyGt+yLFfW/d0A== - dependencies: - immer "^9.0.1" - redux "^4.1.0" - redux-thunk "^2.3.0" - reselect "^4.0.0" - -"@reduxjs/toolkit@^1.9.1": +"@reduxjs/toolkit@^1.9.1", "@reduxjs/toolkit@^1.9.4": version "1.9.5" resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.5.tgz#d3987849c24189ca483baa7aa59386c8e52077c4" integrity sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ== @@ -3407,10 +3784,10 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": version "1.8.3" @@ -3434,9 +3811,9 @@ "@sinonjs/commons" "^1.7.0" "@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + version "10.2.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz#b3e322a34c5f26e3184e7f6115695f299c1b1194" + integrity sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg== dependencies: "@sinonjs/commons" "^3.0.0" @@ -3596,12 +3973,12 @@ "@stablelib/random" "^1.0.2" "@stablelib/wipe" "^1.0.1" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: - defer-to-connect "^1.0.1" + defer-to-connect "^2.0.0" "@tallyho/hd-keyring@0.5.0": version "0.5.0" @@ -3617,18 +3994,18 @@ "@ethersproject/wallet" "5.6.1" bip39 "3.0.4" -"@testing-library/dom@^8.0.0": - version "8.19.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.19.0.tgz#bd3f83c217ebac16694329e413d9ad5fdcfd785f" - integrity sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A== +"@testing-library/dom@^9.0.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.0.tgz#ed8ce10aa5e05eb6eaf0635b5b8975d889f66075" + integrity sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" + "@types/aria-query" "^5.0.1" aria-query "^5.0.0" chalk "^4.1.0" dom-accessibility-api "^0.5.9" - lz-string "^1.4.4" + lz-string "^1.5.0" pretty-format "^27.0.2" "@testing-library/dom@^9.3.1": @@ -3660,41 +4037,42 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-12.1.5.tgz#bb248f72f02a5ac9d949dea07279095fa577963b" - integrity sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg== +"@testing-library/react@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.0.0.tgz#59030392a6792450b9ab8e67aea5f3cc18d6347c" + integrity sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg== dependencies: "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^8.0.0" - "@types/react-dom" "<18.0.0" + "@testing-library/dom" "^9.0.0" + "@types/react-dom" "^18.0.0" "@testing-library/user-event@14.4.3": version "14.4.3" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.4.3.tgz#af975e367743fa91989cd666666aec31a8f50591" integrity sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q== -"@thesis-co/eslint-config@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@thesis-co/eslint-config/-/eslint-config-0.5.0.tgz#b0db77856cfaf614b6e299c4d1116bc2b6c53173" - integrity sha512-mDqm9risJYIDJmfF8wK8VdQoJ6sScrKQmK72f5czpSFR0mGodTS7m3KB+G+/pgFexZR5RfPepo893tp2ctf+Tw== +"@thesis-co/eslint-config@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@thesis-co/eslint-config/-/eslint-config-0.6.1.tgz#70e419cd02b271ae447eebdefaa5359dca301285" + integrity sha512-0vJCCI4UwUdniDCQeTFlMBT+bSp5pGkrtHrZrG2vmyLZwSVdJNtInjkBc/Jd0sGfMtPo3pqQRwA40Zo80lPi+Q== dependencies: "@thesis-co/prettier-config" "github:thesis/prettier-config" - "@typescript-eslint/eslint-plugin" ">4.32.0" - "@typescript-eslint/parser" ">4.32.0" - eslint-config-airbnb "^19.0.0" - eslint-config-airbnb-typescript "^17.0.0" - eslint-config-prettier "^8.5.0" - eslint-plugin-import "^2.26.0" - eslint-plugin-jsx-a11y "^6.6.1" + "@typescript-eslint/eslint-plugin" ">=6.4.1" + "@typescript-eslint/parser" ">=6.4.1" + eslint-config-airbnb "^19.0.4" + eslint-config-airbnb-base "^15.0.0" + eslint-config-airbnb-typescript "^17.1.0" + eslint-config-prettier "^9.0.0" + eslint-plugin-import "^2.28.1" + eslint-plugin-jsx-a11y "^6.7.1" eslint-plugin-no-only-tests "^3.1.0" - eslint-plugin-prettier "^4.2.1" - eslint-plugin-react "^7.31.11" - eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-prettier "^5.0.0" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.6.0" "@thesis-co/prettier-config@github:thesis/prettier-config": - version "0.0.1" - resolved "https://codeload.github.com/thesis/prettier-config/tar.gz/a057ca0bab89fee9ee81ac580c446618c722d75d" + version "0.0.2" + resolved "https://codeload.github.com/thesis/prettier-config/tar.gz/daeaac564056a7885e4366ce12bfde6fd823fc90" "@tootallnate/once@1": version "1.1.2" @@ -3726,13 +4104,6 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== -"@types/accepts@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" - integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== - dependencies: - "@types/node" "*" - "@types/archiver@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/archiver/-/archiver-5.1.1.tgz#d6d7610de4386b293abd5c1cb1875e0a4f4e1c30" @@ -3745,11 +4116,6 @@ resolved "https://registry.yarnpkg.com/@types/argon2-browser/-/argon2-browser-1.18.1.tgz#39bc2bf2fbe86d4854005730ace3b8015758adfb" integrity sha512-PZffP/CqH9m2kovDSRQMfMMxUC3V98I7i7/caa0RB0/nvsXzYbL9bKyqZpNMFmLFGZslROlG1R60ONt7abrwlA== -"@types/aria-query@^4.2.0": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" - integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== - "@types/aria-query@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" @@ -3800,7 +4166,7 @@ dependencies: "@types/node" "*" -"@types/body-parser@*", "@types/body-parser@1.19.2": +"@types/body-parser@*": version "1.19.2" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== @@ -3808,6 +4174,16 @@ "@types/connect" "*" "@types/node" "*" +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + "@types/chrome@^0.0.188": version "0.0.188" resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.188.tgz#ed73feca28a6d84f796ec50a2dbe7e41510175b3" @@ -3839,11 +4215,6 @@ tapable "^2.0.0" webpack "^5.1.0" -"@types/cors@2.8.12": - version "2.8.12" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" - integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== - "@types/d3-array@*": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.0.5.tgz#857c1afffd3f51319bbc5b301956aca68acaa7b8" @@ -4089,16 +4460,7 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== -"@types/express-serve-static-core@4.17.31": - version "4.17.31" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" - integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express-serve-static-core@^4.17.18": +"@types/express-serve-static-core@^4.17.30", "@types/express-serve-static-core@^4.17.33": version "4.17.35" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== @@ -4108,13 +4470,13 @@ "@types/range-parser" "*" "@types/send" "*" -"@types/express@4.17.14": - version "4.17.14" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" - integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== +"@types/express@^4.17.13": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== dependencies: "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" + "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" "@types/serve-static" "*" @@ -4178,6 +4540,11 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + "@types/http-errors@*": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" @@ -4211,9 +4578,9 @@ pretty-format "^29.0.0" "@types/jest@^29.5.0": - version "29.5.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.2.tgz#86b4afc86e3a8f3005b297ed8a72494f89e6395b" - integrity sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg== + version "29.5.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47" + integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -4232,7 +4599,7 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== -"@types/json-schema@^7.0.11", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.11", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.4": version "7.0.12" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== @@ -4242,6 +4609,13 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + "@types/lodash.debounce@^4.0.7": version "4.0.7" resolved "https://registry.yarnpkg.com/@types/lodash.debounce/-/lodash.debounce-4.0.7.tgz#0285879defb7cdb156ae633cecd62d5680eded9f" @@ -4274,6 +4648,14 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== +"@types/node-fetch@^2.6.1": + version "2.6.4" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" + integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + "@types/node@*": version "16.7.10" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.10.tgz#7aa732cc47341c12a16b7d562f519c2383b6d4fc" @@ -4284,11 +4666,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== -"@types/node@^10.1.0": - version "10.17.60" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" - integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - "@types/node@^16.11.26": version "16.18.39" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.39.tgz#aa39a1a87a40ef6098ee69689a1acb0c1b034832" @@ -4331,24 +4708,17 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react-dom@<18.0.0": - version "17.0.18" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.18.tgz#8f7af38f5d9b42f79162eea7492e5a1caff70dc2" - integrity sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw== - dependencies: - "@types/react" "^17" - -"@types/react-dom@^17.0.9": - version "17.0.9" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" - integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== +"@types/react-dom@^18.0.0": + version "18.2.4" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.4.tgz#13f25bfbf4e404d26f62ac6e406591451acba9e0" + integrity sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw== dependencies: "@types/react" "*" -"@types/react-redux@^7.1.16": - version "7.1.18" - resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.18.tgz#2bf8fd56ebaae679a90ebffe48ff73717c438e04" - integrity sha512-9iwAsPyJ9DLTRH+OFeIrm9cAbIj1i2ANL3sKQFATqnPWRbg+jEFXyZOKHiQK/N86pNRXbb4HRxAxo0SIX1XwzQ== +"@types/react-redux@^7.1.20": + version "7.1.26" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.26.tgz#84149f5614e40274bb70fcbe8f7cae6267d548b1" + integrity sha512-UKPo7Cm7rswYU6PH6CmTNCRv5NYF3HrgKuHEYTK8g/3czYLrUux50gQ2pkxc9c7ZpQZi+PNhgmI8oNIRoiVIxg== dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" @@ -4386,28 +4756,10 @@ dependencies: "@types/react" "*" -"@types/react@*": - version "17.0.19" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.19.tgz#8f2a85e8180a43b57966b237d26a29481dacc991" - integrity sha512-sX1HisdB1/ZESixMTGnMxH9TDe8Sk709734fEQZzCV/4lSu9kJCPbo2PbTRoZM+53Pp0P10hYVyReUueGwUi4A== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@^17": - version "17.0.52" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.52.tgz#10d8b907b5c563ac014a541f289ae8eaa9bf2e9b" - integrity sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@^17.0.43": - version "17.0.62" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.62.tgz#2efe8ddf8533500ec44b1334dd1a97caa2f860e3" - integrity sha512-eANCyz9DG8p/Vdhr0ZKST8JV12PhH2ACCDYlFw6DIO+D+ca+uP4jtEDEpVqXZrh/uZdXQGwk7whJa3ah5DtyLw== +"@types/react@*", "@types/react@^18.0.26": + version "18.2.7" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.7.tgz#dfb4518042a3117a045b8c222316f83414a783b3" + integrity sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -4427,6 +4779,13 @@ dependencies: redux "^4.0.0" +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + "@types/scheduler@*": version "0.16.2" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" @@ -4439,7 +4798,7 @@ dependencies: "@types/node" "*" -"@types/semver@^7.3.12": +"@types/semver@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== @@ -4586,163 +4945,102 @@ dependencies: "@types/yargs-parser" "*" +"@types/yauzl@^2.9.1": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" + integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + dependencies: + "@types/node" "*" + "@types/zxcvbn@^4.4.1": version "4.4.1" resolved "https://registry.yarnpkg.com/@types/zxcvbn/-/zxcvbn-4.4.1.tgz#46e42cbdcee681b22181478feaf4af2bc4c1abd2" integrity sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w== -"@typescript-eslint/eslint-plugin@>4.32.0": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz#e470af414f05ecfdc05a23e9ce6ec8f91db56fe2" - integrity sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA== +"@typescript-eslint/eslint-plugin@>=6.4.1", "@typescript-eslint/eslint-plugin@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.5.0.tgz#5cee33edf0d45d5ec773e3b3111206b098ac8599" + integrity sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw== dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.59.7" - "@typescript-eslint/type-utils" "5.59.7" - "@typescript-eslint/utils" "5.59.7" + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.5.0" + "@typescript-eslint/type-utils" "6.5.0" + "@typescript-eslint/utils" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" debug "^4.3.4" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/eslint-plugin@^4.28.4": - version "4.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.30.0.tgz#4a0c1ae96b953f4e67435e20248d812bfa55e4fb" - integrity sha512-NgAnqk55RQ/SD+tZFD9aPwNSeHmDHHe5rtUyhIq0ZeCWZEvo4DK9rYz7v9HDuQZFvn320Ot+AikaCKMFKLlD0g== - dependencies: - "@typescript-eslint/experimental-utils" "4.30.0" - "@typescript-eslint/scope-manager" "4.30.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.30.0": - version "4.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.30.0.tgz#9e49704fef568432ae16fc0d6685c13d67db0fd5" - integrity sha512-K8RNIX9GnBsv5v4TjtwkKtqMSzYpjqAQg/oSphtxf3xxdt6T0owqnpojztjjTcatSteH3hLj3t/kklKx87NPqw== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.30.0" - "@typescript-eslint/types" "4.30.0" - "@typescript-eslint/typescript-estree" "4.30.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@>4.32.0": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.7.tgz#02682554d7c1028b89aa44a48bf598db33048caa" - integrity sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ== - dependencies: - "@typescript-eslint/scope-manager" "5.59.7" - "@typescript-eslint/types" "5.59.7" - "@typescript-eslint/typescript-estree" "5.59.7" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@>=6.4.1", "@typescript-eslint/parser@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.5.0.tgz#3d6ed231c5e307c5f5f4a0d86893ec01e92b8c77" + integrity sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ== + dependencies: + "@typescript-eslint/scope-manager" "6.5.0" + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/typescript-estree" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" debug "^4.3.4" -"@typescript-eslint/parser@^4.28.4": - version "4.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.30.0.tgz#6abd720f66bd790f3e0e80c3be77180c8fcb192d" - integrity sha512-HJ0XuluSZSxeboLU7Q2VQ6eLlCwXPBOGnA7CqgBnz2Db3JRQYyBDJgQnop6TZ+rsbSx5gEdWhw4rE4mDa1FnZg== - dependencies: - "@typescript-eslint/scope-manager" "4.30.0" - "@typescript-eslint/types" "4.30.0" - "@typescript-eslint/typescript-estree" "4.30.0" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.30.0": - version "4.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.30.0.tgz#1a3ffbb385b1a06be85cd5165a22324f069a85ee" - integrity sha512-VJ/jAXovxNh7rIXCQbYhkyV2Y3Ac/0cVHP/FruTJSAUUm4Oacmn/nkN5zfWmWFEanN4ggP0vJSHOeajtHq3f8A== - dependencies: - "@typescript-eslint/types" "4.30.0" - "@typescript-eslint/visitor-keys" "4.30.0" - -"@typescript-eslint/scope-manager@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz#0243f41f9066f3339d2f06d7f72d6c16a16769e2" - integrity sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ== +"@typescript-eslint/scope-manager@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.5.0.tgz#f2cb20895aaad41b3ad27cc3a338ce8598f261c5" + integrity sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw== dependencies: - "@typescript-eslint/types" "5.59.7" - "@typescript-eslint/visitor-keys" "5.59.7" + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" -"@typescript-eslint/type-utils@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz#89c97291371b59eb18a68039857c829776f1426d" - integrity sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ== +"@typescript-eslint/type-utils@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.5.0.tgz#6d246c93739282bc0d2e623f28d0dec6cfcc38d7" + integrity sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A== dependencies: - "@typescript-eslint/typescript-estree" "5.59.7" - "@typescript-eslint/utils" "5.59.7" + "@typescript-eslint/typescript-estree" "6.5.0" + "@typescript-eslint/utils" "6.5.0" debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@4.30.0": - version "4.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.30.0.tgz#fb9d9b0358426f18687fba82eb0b0f869780204f" - integrity sha512-YKldqbNU9K4WpTNwBqtAerQKLLW/X2A/j4yw92e3ZJYLx+BpKLeheyzoPfzIXHfM8BXfoleTdiYwpsvVPvHrDw== + ts-api-utils "^1.0.1" -"@typescript-eslint/types@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.7.tgz#6f4857203fceee91d0034ccc30512d2939000742" - integrity sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A== - -"@typescript-eslint/typescript-estree@4.30.0": - version "4.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.30.0.tgz#ae57833da72a753f4846cd3053758c771670c2ac" - integrity sha512-6WN7UFYvykr/U0Qgy4kz48iGPWILvYL34xXJxvDQeiRE018B7POspNRVtAZscWntEPZpFCx4hcz/XBT+erenfg== - dependencies: - "@typescript-eslint/types" "4.30.0" - "@typescript-eslint/visitor-keys" "4.30.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" +"@typescript-eslint/types@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.5.0.tgz#f4e55cfd99ac5346ea772770bf212a3e689a8f04" + integrity sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w== -"@typescript-eslint/typescript-estree@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz#b887acbd4b58e654829c94860dbff4ac55c5cff8" - integrity sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ== +"@typescript-eslint/typescript-estree@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.5.0.tgz#1cef6bc822585e9ef89d88834bc902d911d747ed" + integrity sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ== dependencies: - "@typescript-eslint/types" "5.59.7" - "@typescript-eslint/visitor-keys" "5.59.7" + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.7.tgz#7adf068b136deae54abd9a66ba5a8780d2d0f898" - integrity sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.59.7" - "@typescript-eslint/types" "5.59.7" - "@typescript-eslint/typescript-estree" "5.59.7" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@4.30.0": - version "4.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.30.0.tgz#a47c6272fc71b0c627d1691f68eaecf4ad71445e" - integrity sha512-pNaaxDt/Ol/+JZwzP7MqWc8PJQTUhZwoee/PVlQ+iYoYhagccvoHnC9e4l+C/krQYYkENxznhVSDwClIbZVxRw== - dependencies: - "@typescript-eslint/types" "4.30.0" - eslint-visitor-keys "^2.0.0" - -"@typescript-eslint/visitor-keys@5.59.7": - version "5.59.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz#09c36eaf268086b4fbb5eb9dc5199391b6485fc5" - integrity sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ== - dependencies: - "@typescript-eslint/types" "5.59.7" - eslint-visitor-keys "^3.3.0" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.5.0.tgz#6668bee4f7f24978b11df8a2ea42d56eebc4662c" + integrity sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.5.0" + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/typescript-estree" "6.5.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz#1a6f474a0170a447b76f0699ce6700110fd11436" + integrity sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA== + dependencies: + "@typescript-eslint/types" "6.5.0" + eslint-visitor-keys "^3.4.1" "@uniswap/token-lists@^1.0.0-beta.30": version "1.0.0-beta.30" @@ -4770,27 +5068,27 @@ "@walletconnect/types" "^1.8.0" "@walletconnect/utils" "^1.8.0" -"@walletconnect/core@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.1.4.tgz#871a1e6b80b14fc3a755763b2cdce0c334e41536" - integrity sha512-pEGTbysRwxJJhOYoRmBy8WQ2z7iYrNYsKvdGN/BNoXGuOT9PqKNqiRtVs2E4W79Nwq7ZoM1zohh5VLgbKguSUQ== +"@walletconnect/core@2.7.7": + version "2.7.7" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.7.7.tgz#49ddaa9d8aff365cd347b951d9b4c1c39a949e83" + integrity sha512-/Tmrjx9XDG8qylsUFU2fWvMoxlDwW+zzUcCgTaebMAmssCZ8NSknbBdjAdAKiey1TaLEgFkaCxXgXfioinWNYg== dependencies: - "@walletconnect/heartbeat" "^1.0.1" - "@walletconnect/jsonrpc-provider" "^1.0.6" - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/jsonrpc-ws-connection" "^1.0.5" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/jsonrpc-ws-connection" "^1.0.11" "@walletconnect/keyvaluestorage" "^1.0.2" "@walletconnect/logger" "^2.0.1" - "@walletconnect/relay-api" "^1.0.7" + "@walletconnect/relay-api" "^1.0.9" "@walletconnect/relay-auth" "^1.0.4" - "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/safe-json" "^1.0.2" "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.1.4" - "@walletconnect/utils" "2.1.4" + "@walletconnect/types" "2.7.7" + "@walletconnect/utils" "2.7.7" events "^3.3.0" lodash.isequal "4.5.0" - pino "7.11.0" - uint8arrays "3.1.0" + uint8arrays "^3.1.0" "@walletconnect/core@^1.8.0": version "1.8.0" @@ -4837,10 +5135,10 @@ keyvaluestorage-interface "^1.0.0" tslib "1.14.1" -"@walletconnect/heartbeat@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.0.1.tgz#0cd89a53b6eafbfde07204936b29ac0d185d8e16" - integrity sha512-2FbyTlftC7TMpLSMhEI/H9fy4ToadJ8B7t8ROI97L9ZlmmVyPdoYA8WDu7akQQId/ZBYb7WClfJqvweOB11vTA== +"@walletconnect/heartbeat@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9" + integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q== dependencies: "@walletconnect/events" "^1.0.1" "@walletconnect/time" "^1.0.2" @@ -4855,16 +5153,24 @@ "@walletconnect/types" "^1.8.0" "@walletconnect/utils" "^1.8.0" -"@walletconnect/jsonrpc-provider@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.6.tgz#e91321ef523f1904e6634e7866a0f3c6f056d2cd" - integrity sha512-f5vQxr53vUVQ51/9mRLb1OiNciT/546XZ68Byn9OYnDBGeGJXK2kQWDHp8sPWZbN5x0p7B6asdCWMVFJ6danlw== +"@walletconnect/jsonrpc-provider@1.0.13": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz#9a74da648d015e1fffc745f0c7d629457f53648b" + integrity sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g== dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/safe-json" "^1.0.2" + tslib "1.14.1" + +"@walletconnect/jsonrpc-types@1.0.3", "@walletconnect/jsonrpc-types@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c" + integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw== + dependencies: + keyvaluestorage-interface "^1.0.0" tslib "1.14.1" -"@walletconnect/jsonrpc-types@^1.0.0", "@walletconnect/jsonrpc-types@^1.0.2": +"@walletconnect/jsonrpc-types@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.2.tgz#b79519f679cd6a5fa4a1bea888f27c1916689a20" integrity sha512-CZe8tjJX73OWdHjrBHy7HtAapJ2tT0Q3TYhPBhRxi3643lwPIQWC9En45ldY14TZwgSewkbZ0FtGBZK0G7Bbyg== @@ -4872,7 +5178,16 @@ keyvaluestorage-interface "^1.0.0" tslib "1.14.1" -"@walletconnect/jsonrpc-utils@^1.0.3", "@walletconnect/jsonrpc-utils@^1.0.4": +"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" + integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== + dependencies: + "@walletconnect/environment" "^1.0.1" + "@walletconnect/jsonrpc-types" "^1.0.3" + tslib "1.14.1" + +"@walletconnect/jsonrpc-utils@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.4.tgz#2009ba3907b02516f2caacd2fb871ff0d472b2cb" integrity sha512-y0+tDxcTZ9BHBBKBJbjZxLUXb+zQZCylf7y/jTvDPNx76J0hYYc+F9zHzyqBLeorSKepLTk6yI8hw3NXbAQB3g== @@ -4881,13 +5196,14 @@ "@walletconnect/jsonrpc-types" "^1.0.2" tslib "1.14.1" -"@walletconnect/jsonrpc-ws-connection@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.5.tgz#cf43e40f283da34ca962e74007829930f7aa4a75" - integrity sha512-M8a7nPmJbY3itLVdkq6d+EjZUsDDwyNpK1rYlhT1xcD07oXqFSqzkSCvFXylUaPlOsBVIhJ8l7I8oOYkb6K5XQ== +"@walletconnect/jsonrpc-ws-connection@^1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.11.tgz#1ce59d86f273d576ca73385961303ebd44dd923f" + integrity sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w== dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" tslib "1.14.1" ws "^7.5.1" @@ -4899,12 +5215,12 @@ safe-json-utils "^1.1.1" tslib "1.14.1" -"@walletconnect/legacy-types@^2.0.0-rc.0": - version "2.0.0-rc.0" - resolved "https://registry.yarnpkg.com/@walletconnect/legacy-types/-/legacy-types-2.0.0-rc.0.tgz#a4ee908501b943f5ceae19b3ed13e400c3a09aa0" - integrity sha512-9dDfZ+jTOycOSm4+HmcDj5T8qotqY96BaEU/LdQ6H2M/mBoYLkPLMlaNLoqIpSm+ebOj9CF0T6B251ZAZoo7/Q== +"@walletconnect/legacy-types@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/legacy-types/-/legacy-types-2.0.0.tgz#224278ae2874c6a2ca805c2d1d062a511dcf7227" + integrity sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw== dependencies: - "@walletconnect/jsonrpc-types" "^1.0.0" + "@walletconnect/jsonrpc-types" "^1.0.2" "@walletconnect/logger@^2.0.1": version "2.0.1" @@ -4924,10 +5240,10 @@ randombytes "^2.1.0" tslib "1.14.1" -"@walletconnect/relay-api@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.7.tgz#e7aed03cbaff99ecdf2c8d32280c0b5d673bb419" - integrity sha512-Mf/Ql7Z0waZzAuondHS9bbUi12Kyvl95ihxVDM7mPO8o7Ke7S1ffpujCUhXbSacSKcw9aV2+7bKADlsBjQLR5Q== +"@walletconnect/relay-api@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" + integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg== dependencies: "@walletconnect/jsonrpc-types" "^1.0.2" tslib "1.14.1" @@ -4956,22 +5272,27 @@ dependencies: tslib "1.14.1" -"@walletconnect/sign-client@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.1.4.tgz#678d35f29967bbedcc03d91cd5d47f872baba917" - integrity sha512-40fnyRUVNT+6AYQElQA/rUPHH9fdlbAd4hacpBFny2TbjGeGD/P+n4enhF5m0AQWwuF8zS8c7/qERvbWnaYnEg== +"@walletconnect/safe-json@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" + integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== + dependencies: + tslib "1.14.1" + +"@walletconnect/sign-client@^2.7.7": + version "2.7.7" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.7.7.tgz#a2be064eaff37ab036919bd33f1cf9ddf4681fdd" + integrity sha512-lTyF8ZEp+HwPNBW/Fw5iWnMm9O5tC1qwf5YfhNczZ7+q6+UUopOoRrsAvwqftJIkgKmfC8lHT52G/XM2JGVjbQ== dependencies: - "@walletconnect/core" "2.1.4" + "@walletconnect/core" "2.7.7" "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "^1.0.1" - "@walletconnect/jsonrpc-provider" "^1.0.6" - "@walletconnect/jsonrpc-utils" "^1.0.4" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-utils" "1.0.8" "@walletconnect/logger" "^2.0.1" "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.1.4" - "@walletconnect/utils" "2.1.4" + "@walletconnect/types" "2.7.7" + "@walletconnect/utils" "2.7.7" events "^3.3.0" - pino "7.11.0" "@walletconnect/socket-transport@^1.8.0": version "1.8.0" @@ -4989,14 +5310,14 @@ dependencies: tslib "1.14.1" -"@walletconnect/types@2.1.4", "@walletconnect/types@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.1.4.tgz#0db77adbaffd3a9bdf7e9d710d7e7352de542b16" - integrity sha512-n9fIk0z2fiGFlPgQcpurQ8WH7XF/blYaDIpr2ai3qdoo1N10yCsX1vj65L8t3zJAmSeHFoVJI9YVrSDj5eWjWw== +"@walletconnect/types@2.7.7", "@walletconnect/types@^2.7.7": + version "2.7.7" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.7.7.tgz#c02831a17b6162d8594c45e3cc4668015e022f51" + integrity sha512-Z4Y+BKPX7X1UBCf7QV35mVy2QU9CS+5G+EthCaJwpieirZNHamHEwNXUjuUUb3PrYOLwlfRYUT5edeFW9wvoeQ== dependencies: "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "^1.0.1" - "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/jsonrpc-types" "1.0.3" "@walletconnect/keyvaluestorage" "^1.0.2" "@walletconnect/logger" "^2.0.1" events "^3.3.0" @@ -5006,26 +5327,25 @@ resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.8.0.tgz#3f5e85b2d6b149337f727ab8a71b8471d8d9a195" integrity sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg== -"@walletconnect/utils@2.1.4", "@walletconnect/utils@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.1.4.tgz#992442d175f71cf7a685c5568d12bf25d719600e" - integrity sha512-g3XRGAgETQbwbZleQS1f4ZFl8X6jb+CaWVNM+vtVO9EvIUJAzE8TLq3H70v+KawRMaLXjgRc0z0W7Wg6bvct7g== +"@walletconnect/utils@2.7.7", "@walletconnect/utils@^2.7.7": + version "2.7.7" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.7.7.tgz#e2d8732f8ac3ffbc1de13e923891b256eb3bbefb" + integrity sha512-ozh9gvRAdXkiu+6nOAkoDCokDVPXK/tNATrrYuOhhR+EmGDjlZU2d27HT+HiGREdza0b1HdZN4XneGm0gERV5w== dependencies: "@stablelib/chacha20poly1305" "1.0.1" "@stablelib/hkdf" "1.0.1" "@stablelib/random" "^1.0.2" "@stablelib/sha256" "1.0.1" "@stablelib/x25519" "^1.0.3" - "@walletconnect/jsonrpc-utils" "^1.0.4" - "@walletconnect/relay-api" "^1.0.7" - "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/relay-api" "^1.0.9" + "@walletconnect/safe-json" "^1.0.2" "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.1.4" + "@walletconnect/types" "2.7.7" "@walletconnect/window-getters" "^1.0.1" "@walletconnect/window-metadata" "^1.0.1" detect-browser "5.3.0" - query-string "7.1.1" - uint8arrays "3.1.0" + query-string "7.1.3" + uint8arrays "^3.1.0" "@walletconnect/utils@^1.8.0": version "1.8.0" @@ -5230,7 +5550,7 @@ abbrev@1, abbrev@~1.1.1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@^1.3.5, accepts@~1.3.8: +accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -5251,7 +5571,7 @@ acorn-import-assertions@^1.7.6: resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78" integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA== -acorn-jsx@^5.3.1: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -5261,21 +5581,21 @@ acorn-walk@^8.0.2, acorn-walk@^8.1.1: 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.1.0, acorn@^8.8.1: - version "8.9.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" - integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== acorn@^8.4.1: version "8.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== +acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -5286,6 +5606,14 @@ aes-js@^3.1.2: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== +ag-auth@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ag-auth/-/ag-auth-2.0.0.tgz#3489bacea58e563a5353eb9f77da6188fed440a6" + integrity sha512-gk5BgWzijPUaCMDYFtuggIlUDWGMlMSOdF/tdQa5sM7Nh0KowohFh3P3sx06gegufKWzWF97dwP/7hLg3CkqWg== + dependencies: + jsonwebtoken "^9.0.0" + sc-errors "^2.0.0" + ag-channel@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ag-channel/-/ag-channel-5.0.0.tgz#c2c00dfbe372ae43e0466ec89e29aca1bbb2fb3e" @@ -5300,6 +5628,15 @@ ag-request@^1.0.0: dependencies: sc-errors "^2.0.0" +ag-simple-broker@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ag-simple-broker/-/ag-simple-broker-5.0.0.tgz#aea10e1fd9bd2d5fb072f9b780a1cbe2db50835b" + integrity sha512-LMwfBdoNm+8ac/RkgW6z1mjIvy2cgEqWa9cJUD5sc5uiJkIn/kXhVRlPdfa/MJtxPivo9DRhKb9DlSp2gCv+Cg== + dependencies: + ag-channel "^5.0.0" + async-stream-emitter "^4.0.0" + stream-demux "^8.0.0" + agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -5336,7 +5673,7 @@ ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.7.0: +ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.7.0: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -5346,7 +5683,7 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.7.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.2: +ajv@^8.0.0, ajv@^8.6.2: version "8.6.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== @@ -5366,11 +5703,6 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -5427,7 +5759,7 @@ ansistyles@~0.1.3: resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= -anymatch@^3.0.0, anymatch@^3.0.3, anymatch@^3.1.1, anymatch@~3.1.2: +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -5435,101 +5767,19 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@^3.1.1, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + apg-js@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/apg-js/-/apg-js-4.1.1.tgz#5ee8a74e26517073e1bda66705eca6fc22b305e2" integrity sha512-DwTfzx1YuCrnEvywiU/AYKiX8Y6JzhY8PwaM9syh54zzBPaHzonN7c4YsAspC6YcdSu/jfBXBJ1S9hj1QsiePA== -apollo-datasource@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-3.3.2.tgz#5711f8b38d4b7b53fb788cb4dbd4a6a526ea74c8" - integrity sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg== - dependencies: - "@apollo/utils.keyvaluecache" "^1.0.1" - apollo-server-env "^4.2.1" - -apollo-reporting-protobuf@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz#6edd31f09d4a3704d9e808d1db30eca2229ded26" - integrity sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog== - dependencies: - "@apollo/protobufjs" "1.2.6" - -apollo-server-core@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-3.12.0.tgz#8aa2a7329ce6fe1823290c45168c749db01548df" - integrity sha512-hq7iH6Cgldgmnjs9FVSZeKWRpi0/ZR+iJ1arzeD2VXGxxgk1mAm/cz1Tx0TYgegZI+FvvrRl0UhKEx7sLnIxIg== - dependencies: - "@apollo/utils.keyvaluecache" "^1.0.1" - "@apollo/utils.logger" "^1.0.0" - "@apollo/utils.usagereporting" "^1.0.0" - "@apollographql/apollo-tools" "^0.5.3" - "@apollographql/graphql-playground-html" "1.6.29" - "@graphql-tools/mock" "^8.1.2" - "@graphql-tools/schema" "^8.0.0" - "@josephg/resolvable" "^1.0.0" - apollo-datasource "^3.3.2" - apollo-reporting-protobuf "^3.4.0" - apollo-server-env "^4.2.1" - apollo-server-errors "^3.3.1" - apollo-server-plugin-base "^3.7.2" - apollo-server-types "^3.8.0" - async-retry "^1.2.1" - fast-json-stable-stringify "^2.1.0" - graphql-tag "^2.11.0" - loglevel "^1.6.8" - lru-cache "^6.0.0" - node-abort-controller "^3.0.1" - sha.js "^2.4.11" - uuid "^9.0.0" - whatwg-mimetype "^3.0.0" - -apollo-server-env@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-4.2.1.tgz#ea5b1944accdbdba311f179e4dfaeca482c20185" - integrity sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g== - dependencies: - node-fetch "^2.6.7" - -apollo-server-errors@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" - integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== - -apollo-server-express@^3.6.7: - version "3.12.0" - resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-3.12.0.tgz#a6e392bb0427544b8c7e5d841ef07f7691b0c105" - integrity sha512-m8FaGPUfDOEGSm7QRWRmUUGjG/vqvpQoorkId9/FXkC57fz/A59kEdrzkMt9538Xgsa5AV+X4MEWLJhTvlW3LQ== - dependencies: - "@types/accepts" "^1.3.5" - "@types/body-parser" "1.19.2" - "@types/cors" "2.8.12" - "@types/express" "4.17.14" - "@types/express-serve-static-core" "4.17.31" - accepts "^1.3.5" - apollo-server-core "^3.12.0" - apollo-server-types "^3.8.0" - body-parser "^1.19.0" - cors "^2.8.5" - parseurl "^1.3.3" - -apollo-server-plugin-base@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz#c19cd137bc4c993ba2490ba2b571b0f3ce60a0cd" - integrity sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw== - dependencies: - apollo-server-types "^3.8.0" - -apollo-server-types@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-3.8.0.tgz#d976b6967878681f715fe2b9e4dad9ba86b1346f" - integrity sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A== - dependencies: - "@apollo/utils.keyvaluecache" "^1.0.1" - "@apollo/utils.logger" "^1.0.0" - apollo-reporting-protobuf "^3.4.0" - apollo-server-env "^4.2.1" - aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -5615,6 +5865,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-query@5.1.3, aria-query@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" @@ -5669,6 +5924,17 @@ array-union@^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.findlastindex@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" + integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw== + 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" + 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" @@ -5754,11 +6020,6 @@ ast-types-flow@^0.0.7: resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= -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== - async-retry@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" @@ -5773,27 +6034,6 @@ async-stream-emitter@^4.0.0: dependencies: stream-demux "^8.1.0" -async@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.0.0.tgz#d0900ad385af13804540a109c42166e3ae7b2b9d" - integrity sha512-x4YEotAaoO+dq8o23H0Clqm+b0KQ7hYHFfqxIz4ORzLzAdwH0K7S5/Q+mDo/wVyGdFYA0l7XE70Y9915PuEyqg== - dependencies: - lodash "^4.8.0" - -async@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9" - integrity sha512-uDDBwBVKsWWe4uMmvVmFiW07K5BmdyZvSFzxlujNBtSJ/qzAlGM6UHOFZsQd5jsdmWatrCMWwYyVAc8cuJrepQ== - dependencies: - lodash "^4.14.0" - -async@^2.6.1: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -5801,16 +6041,18 @@ async@^2.6.2: dependencies: lodash "^4.17.14" -async@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - async@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/async/-/async-3.2.1.tgz#d3274ec66d107a47476a4c49136aacdb00665fc8" integrity sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg== +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -5858,12 +6100,14 @@ axios@^0.21.1: dependencies: follow-redirects "^1.10.0" -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== +axios@^1.3.4: + version "1.4.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" + integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== dependencies: - follow-redirects "^1.14.8" + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" axobject-query@^3.1.1: version "3.1.1" @@ -5895,13 +6139,6 @@ babel-loader@^8.2.2: make-dir "^3.1.0" schema-utils "^2.6.5" -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" @@ -5932,29 +6169,29 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== +babel-plugin-polyfill-corejs2@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" + integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" - semver "^6.1.1" + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.2" + semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.4.tgz#68cb81316b0e8d9d721a92e0009ec6ecd4cd2ca9" - integrity sha512-z3HnJE5TY/j4EFEa/qpQMSbcUJZ5JQi+3UFjXzn6pQCmIKc5Ug5j98SuYyH+m4xQnvKlMDIW4plLfgyVnd0IcQ== +babel-plugin-polyfill-corejs3@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" + integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.14.0" + "@babel/helper-define-polyfill-provider" "^0.4.2" + core-js-compat "^3.31.0" -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== +babel-plugin-polyfill-regenerator@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" + integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.4.2" "babel-plugin-styled-components@>= 1.12.0": version "2.1.4" @@ -5967,11 +6204,6 @@ babel-plugin-polyfill-regenerator@^0.2.2: lodash "^4.17.21" picomatch "^2.3.1" -babel-plugin-syntax-jsx@6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= - babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -6030,10 +6262,10 @@ base64-loader@^1.0.0: resolved "https://registry.yarnpkg.com/base64-loader/-/base64-loader-1.0.0.tgz#e530bad88e906dd2a1fad0af2d9e683fa8bd92a8" integrity sha512-p32+F8dg+ANGx7s8QsZS74ZPHfIycmC2yZcoerzFgbersIYWitPbbF39G6SBx3gyvzyLH5nt1ooocxr0IHuWKA== -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - integrity sha512-rz8L+d/xByiB/vLVftPkyY215fqNrmasrcJsYkVcm4TgJNz+YXKrFaFAWibSaHkiKoSgMDCb+lipOIRQNGYesw== +base64id@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== basic-auth@~2.0.1: version "2.0.1" @@ -6054,6 +6286,11 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -6160,7 +6397,25 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" -body-parser@^1.19.0, body-parser@^1.20.0: +body-parser@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.20.1: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== @@ -6193,6 +6448,13 @@ boolean@^3.0.1: resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -6267,7 +6529,7 @@ browserify-sign@^4.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" -browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.16.8: +browserslist@^4.14.5: version "4.16.8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.8.tgz#cb868b0b554f137ba6e33de0ecff2eda403c4fb0" integrity sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ== @@ -6278,16 +6540,26 @@ browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.16.8: escalade "^3.1.1" node-releases "^1.1.75" -browserslist@^4.21.3: - version "4.21.9" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" - integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== +browserslist@^4.21.10, browserslist@^4.21.9: + version "4.21.10" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" + integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== dependencies: - caniuse-lite "^1.0.30001503" - electron-to-chromium "^1.4.431" - node-releases "^2.0.12" + caniuse-lite "^1.0.30001517" + electron-to-chromium "^1.4.477" + node-releases "^2.0.13" update-browserslist-db "^1.0.11" +browserslist@^4.21.3: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + bs58@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -6352,6 +6624,13 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= +bundle-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" + integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== + dependencies: + run-applescript "^5.0.0" + bytes@1: version "1.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" @@ -6386,18 +6665,23 @@ cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0, cacache@^15.3.0: tar "^6.0.2" unique-filename "^1.1.1" -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== dependencies: clone-response "^1.0.2" get-stream "^5.1.0" http-cache-semantics "^4.0.0" - keyv "^3.0.0" + keyv "^4.0.0" lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" + normalize-url "^6.0.1" + responselike "^2.0.0" call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" @@ -6432,10 +6716,15 @@ caniuse-lite@^1.0.30001251: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001252.tgz#cb16e4e3dafe948fc4a9bb3307aea054b912019a" integrity sha512-I56jhWDGMtdILQORdusxBOH+Nl/KgQSdDmpJezYddnAkVOmnoU8zwjTV9xAjMIYxr0iPreEAVylCGcmHCjfaOw== -caniuse-lite@^1.0.30001503: - version "1.0.30001509" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz#2b7ad5265392d6d2de25cd8776d1ab3899570d14" - integrity sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA== +caniuse-lite@^1.0.30001449: + version "1.0.30001489" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz#ca82ee2d4e4dbf2bd2589c9360d3fcc2c7ba3bd8" + integrity sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ== + +caniuse-lite@^1.0.30001517: + version "1.0.30001523" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001523.tgz#b838f70b1a98c556776b998fafb47d2b64146d4f" + integrity sha512-I5q5cisATTPZ1mc588Z//pj/Ox80ERYDfR71YnvY7raS/NOk8xXlZcB0sF7JdqaV//kOaa6aus7lRfpdnt1eBA== caseless@~0.12.0: version "0.12.0" @@ -6467,16 +6756,16 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" + integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg== - chokidar@^3.4.2: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -6555,13 +6844,6 @@ cli-columns@^3.1.2: string-width "^2.0.0" strip-ansi "^3.0.1" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== - dependencies: - restore-cursor "^2.0.0" - cli-table3@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" @@ -6572,10 +6854,10 @@ cli-table3@^0.6.0: optionalDependencies: colors "^1.1.2" -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== +client-only@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== cliui@^8.0.1: version "8.0.1" @@ -6692,10 +6974,10 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" -colorette@2.0.16: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== +colorette@2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== colorette@^1.2.1, colorette@^1.3.0: version "1.3.0" @@ -6722,16 +7004,21 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@7, commander@^7.0.0, commander@^7.1.0: +commander@7, commander@^7.0.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commander@^2.20.0, commander@^2.20.3: +commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^9.1.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" @@ -6781,24 +7068,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - confusing-browser-globals@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" @@ -6839,19 +7108,7 @@ contra@1.9.4: atoa "1.0.0" ticky "1.0.1" -convert-source-map@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^1.5.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -6886,13 +7143,12 @@ copy-webpack-plugin@^9.0.0: schema-utils "^3.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.14.0, core-js-compat@^3.16.0: - version "3.17.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.17.2.tgz#f461ab950c0a0ffedfc327debf28b7e518950936" - integrity sha512-lHnt7A1Oqplebl5i0MrQyFv/yyEzr9p29OjlkcsFRDDgHwwQyVckfRGJ790qzXhkwM8ba4SFHHa2sO+T5f1zGg== +core-js-compat@^3.31.0: + version "3.32.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.1.tgz#55f9a7d297c0761a8eb1d31b593e0f5b6ffae964" + integrity sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA== dependencies: - browserslist "^4.16.8" - semver "7.0.0" + browserslist "^4.21.10" core-js-pure@^3.6.5: version "3.31.1" @@ -7072,11 +7328,6 @@ css.escape@^1.5.1: resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== -cssfilter@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" - integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== - cssom@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" @@ -7409,20 +7660,27 @@ dayjs@^1.10.7: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== -debug@2.6.9, debug@^2.6.9: +debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@4.3.2, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" +debug@4.3.4, debug@^4.3.2, debug@^4.3.4: + 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" + debug@^3.1.0, debug@^3.1.1, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -7430,13 +7688,6 @@ debug@^3.1.0, debug@^3.1.1, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.3.4: - 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" - debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -7447,17 +7698,17 @@ decimal.js@^10.4.2: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== -decode-uri-component@^0.2.0: +decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== +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 "^1.0.0" + mimic-response "^3.1.0" dedent-js@^1.0.1: version "1.0.1" @@ -7490,12 +7741,7 @@ deep-equal@^2.0.5: which-collection "^1.0.1" which-typed-array "^1.1.2" -deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deep-is@~0.1.3: +deep-is@^0.1.3, 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== @@ -7505,6 +7751,24 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +default-browser-id@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + +default-browser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" + integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== + dependencies: + bundle-name "^3.0.0" + default-browser-id "^3.0.0" + execa "^7.1.1" + titleize "^3.0.0" + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -7512,16 +7776,21 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -7602,10 +7871,10 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -dexie@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dexie/-/dexie-3.0.3.tgz#ede63849dfe5f07e13e99bb72a040e8ac1d29dab" - integrity sha512-BSFhGpngnCl1DOr+8YNwBDobRMH0ziJs2vts69VilwetHYOtEDcLqo7d/XiIphM0tJZ2rPPyAGd31lgH2Ln3nw== +dexie@^3.0.4: + version "3.2.3" + resolved "https://registry.yarnpkg.com/dexie/-/dexie-3.2.3.tgz#f35c91ca797599df8e771b998e9ae9669c877f8c" + integrity sha512-iHayBd4UYryDCVUNa3PMsJMEnd8yjyh5p7a+RFeC8i8n476BC9wMhVvqiImq5zJZJf5Tuer+s4SSj+AA3x+ZbQ== dezalgo@^1.0.0: version "1.0.3" @@ -7724,11 +7993,6 @@ dragula@3.7.2: contra "1.9.4" crossvent "1.5.4" -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -7764,24 +8028,36 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +eip55@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/eip55/-/eip55-2.1.1.tgz#28b743c4701ac3c811b1e9fe67e39cf1d0781b96" + integrity sha512-WcagVAmNu2Ww2cDUfzuWVntYwFxbvZ5MvIyLZpMjTTkjD6sCvkGOiS86jTppzu9/gWsc8isLHAeMBWK02OnZmA== + dependencies: + keccak "^3.0.3" + electron-to-chromium@^1.3.811: version "1.3.827" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.827.tgz#c725e8db8c5be18b472a919e5f57904512df0fc1" integrity sha512-ye+4uQOY/jbjRutMcE/EmOcNwUeo1qo9aKL2tPyb09cU3lmxNeyDF4RWiemmkknW+p29h7dyDqy02higTxc9/A== -electron-to-chromium@^1.4.431: - version "1.4.442" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.442.tgz#455f4c5bd6ae73afb634dcffee6f356c26c8e294" - integrity sha512-RkrZF//Ya+0aJq2NM3OdisNh5ZodZq1rdXOS96G8DdDgpDKqKE81yTbbQ3F/4CKm1JBPsGu1Lp/akkna2xO06Q== +electron-to-chromium@^1.4.284: + version "1.4.411" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.411.tgz#8cb7787f0442fcb4209590e9951bdb482caa93b2" + integrity sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg== + +electron-to-chromium@^1.4.477: + version "1.4.503" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.503.tgz#7bd43927ea9b4198697672d28d8fbd0da016a7a1" + integrity sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA== -electron@^18.0.1: - version "18.3.15" - resolved "https://registry.yarnpkg.com/electron/-/electron-18.3.15.tgz#5ffe24b9dbd0fe433c246b454f39f1dcdb1cf3f0" - integrity sha512-frkBt8skyo8SmlG4TbByDxZw6/tqttRYYIBaeTBfkoG18OyD59IVwVaXXHO8UYKB5/1C2Rce0Gj6uoxlAHQHzQ== +electron@^22.0.0: + version "22.3.11" + resolved "https://registry.yarnpkg.com/electron/-/electron-22.3.11.tgz#db68c3f820eab9868ccf65bd4604c2805c4c93b9" + integrity sha512-4PW1rJRUckJUCxTXRJkzJ7qlGTZ8Qfwoke5aFlaGccmn/zViuE9iSCg9zqIx00rzsbF9R5j8j9V4tAqyqjjJRA== dependencies: - "@electron/get" "^1.13.0" + "@electron/get" "^2.0.0" "@types/node" "^16.11.26" - extract-zip "^1.0.3" + extract-zip "^2.0.1" elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.3: version "6.5.4" @@ -7816,17 +8092,12 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -encodeurl@^1.0.2, encodeurl@~1.0.2: +encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== @@ -7861,7 +8132,7 @@ enhanced-resolve@^5.8.3: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.5, enquirer@^2.3.6: +enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -7976,6 +8247,46 @@ es-abstract@^1.19.0: unbox-primitive "^1.0.1" 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-abstract@^1.21.2, es-abstract@^1.21.3: version "1.22.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== @@ -8034,6 +8345,26 @@ es-get-iterator@^1.1.1: is-string "^1.0.5" isarray "^2.0.5" +es-iterator-helpers@^1.0.12: + version "1.0.13" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.13.tgz#72101046ffc19baf9996adc70e6177a26e6e8084" + integrity sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.21.3" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.0" + safe-array-concat "^1.0.0" + es-module-lexer@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.7.1.tgz#c2c8e0f46f2df06274cdaf0dd3f3b33e0a0b267d" @@ -8141,14 +8472,14 @@ eslint-config-airbnb-base@^15.0.0: object.entries "^1.1.5" semver "^6.3.0" -eslint-config-airbnb-typescript@^17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz#360dbcf810b26bbcf2ff716198465775f1c49a07" - integrity sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g== +eslint-config-airbnb-typescript@^17.1.0: + version "17.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz#fda960eee4a510f092a9a1c139035ac588937ddc" + integrity sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig== dependencies: eslint-config-airbnb-base "^15.0.0" -eslint-config-airbnb@^19.0.0: +eslint-config-airbnb@^19.0.4: version "19.0.4" resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== @@ -8157,10 +8488,10 @@ eslint-config-airbnb@^19.0.0: object.assign "^4.1.2" object.entries "^1.1.5" -eslint-config-prettier@^8.5.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" - integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== +eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== eslint-import-resolver-node@^0.3.7: version "0.3.7" @@ -8171,35 +8502,37 @@ eslint-import-resolver-node@^0.3.7: is-core-module "^2.11.0" resolve "^1.22.1" -eslint-module-utils@^2.7.4: +eslint-module-utils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.26.0: - 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== +eslint-plugin-import@^2.28.1: + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== dependencies: array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" 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" + eslint-module-utils "^2.8.0" has "^1.0.3" - is-core-module "^2.11.0" + is-core-module "^2.13.0" is-glob "^4.0.3" minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" object.values "^1.1.6" - resolve "^1.22.1" - semver "^6.3.0" - tsconfig-paths "^3.14.1" + semver "^6.3.1" + tsconfig-paths "^3.14.2" -eslint-plugin-jsx-a11y@^6.6.1: +eslint-plugin-jsx-a11y@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== @@ -8226,27 +8559,29 @@ eslint-plugin-no-only-tests@^3.1.0: resolved "https://registry.yarnpkg.com/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz#f38e4935c6c6c4842bf158b64aaa20c366fe171b" integrity sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw== -eslint-plugin-prettier@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== +eslint-plugin-prettier@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a" + integrity sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w== dependencies: prettier-linter-helpers "^1.0.0" + synckit "^0.8.5" -eslint-plugin-react-hooks@^4.3.0: +eslint-plugin-react-hooks@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@^7.31.11: - 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== +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== dependencies: array-includes "^3.1.6" array.prototype.flatmap "^1.3.1" array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" @@ -8256,10 +8591,10 @@ eslint-plugin-react@^7.31.11: object.values "^1.1.6" prop-types "^15.8.1" resolve "^2.0.0-next.4" - semver "^6.3.0" + semver "^6.3.1" string.prototype.matchall "^4.0.8" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +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== @@ -8267,104 +8602,90 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -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== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== 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== + esrecurse "^4.3.0" + estraverse "^5.2.0" eslint-visitor-keys@^3.3.0: version "3.4.1" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== -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== +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.48.0: + version "8.48.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155" + integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.48.0" + "@humanwhocodes/config-array" "^0.11.10" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" 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" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" 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" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" 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" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" esm@^3.2.25: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -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== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" esprima@^4.0.0, esprima@^4.0.1: 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.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + 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" @@ -8380,16 +8701,16 @@ estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -estraverse@^5.3.0: +estraverse@^5.1.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== +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -8433,6 +8754,42 @@ ethereumjs-util@^7.1.0: ethjs-util "0.1.6" rlp "^2.2.4" +ethers@5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + ethers@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.1.tgz#d3259a95a42557844aa543906c537106c0406fbf" @@ -8505,6 +8862,21 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + exit-on-epipe@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" @@ -8537,12 +8909,7 @@ expect@^29.5.0: jest-message-util "^29.5.0" jest-util "^29.5.0" -expirymanager@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/expirymanager/-/expirymanager-0.9.4.tgz#dc9f2dfc2a8160dc88c24fe0bca8c085908bd322" - integrity sha512-bKcLuZPTs9mFxQ2VJPYJCMuGVAM9Ah6KfezbDA3IegbGeqR39WdPi+T7GgDGVuBPjYDFsSP/va5csiNVCGT1Mw== - -express@^4.17.3: +express@^4.17.1, express@^4.18.2: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -8591,24 +8958,16 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - -extract-zip@^1.0.3: - version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== +extract-zip@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" + debug "^4.1.1" + get-stream "^5.1.0" yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" extsprintf@1.3.0: version "1.3.0" @@ -8649,6 +9008,17 @@ fast-glob@^3.1.1, fast-glob@^3.2.5: micromatch "^4.0.4" 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-glob@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== @@ -8667,7 +9037,7 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-redact@^3.0.0: version "3.1.2" @@ -8707,13 +9077,6 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== - dependencies: - escape-string-regexp "^1.0.5" - 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" @@ -8784,6 +9147,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-yarn-workspace-root@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" @@ -8800,21 +9171,16 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" - integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== - -fleximap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fleximap/-/fleximap-1.0.0.tgz#1ad448de87b8e023ba6a60623b7e8b0867360ef6" - integrity sha512-zg/PthjBzESYKomTw/wivo8Id6B+obVkWriIzDuRfuw4wxEIV2/0D/NIGf+LKcGTTifHRfw73+oAAQozZ9MAhA== + 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.10.0: version "1.14.3" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.3.tgz#6ada78118d8d24caee595595accdc0ac6abd022e" integrity sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw== -follow-redirects@^1.14.8: +follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -8855,6 +9221,15 @@ fork-ts-checker-webpack-plugin@^6.3.2: semver "^7.3.2" tapable "^1.0.0" +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -8888,15 +9263,6 @@ fs-constants@^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-extra@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" - integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -8942,11 +9308,16 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@2.3.2, fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@2.3.2, fsevents@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -8962,11 +9333,6 @@ function.prototype.name@^1.1.5: 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 sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - functions-have-names@^1.2.2, functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" @@ -9063,12 +9429,10 @@ get-params@^0.1.2: resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe" integrity sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4= -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" +get-port@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-6.1.2.tgz#c1228abb67ba0e17fb346da33b15187833b9c08a" + integrity sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw== get-stream@^5.1.0: version "5.2.0" @@ -9077,7 +9441,7 @@ get-stream@^5.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: +get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== @@ -9095,10 +9459,10 @@ get-value@^2.0.2: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== -getopts@2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" - integrity sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA== +getopts@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" + integrity sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA== getpass@^0.1.1: version "0.1.7" @@ -9107,11 +9471,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -getport@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/getport/-/getport-0.1.0.tgz#abddf3d5d1e77dd967ccfa2b036a0a1fb26fd7f7" - integrity sha512-hx+r6Q5IutZH+5k+zeZe78J4vzgW9IqLzfz8+hqMa9NrM1ccpgPIxrxqiBg+aioJMKcCK5qNKKcGdes3PeTlKQ== - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -9126,6 +9485,13 @@ glob-parent@^6.0.0: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" @@ -9155,25 +9521,15 @@ global-agent@^3.0.0: semver "^7.3.2" serialize-error "^7.0.1" -global-tunnel-ng@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f" - integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== - dependencies: - encodeurl "^1.0.2" - lodash "^4.17.10" - npm-conf "^1.1.3" - tunnel "^0.0.6" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0, globals@^13.9.0: - version "13.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7" - integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g== +globals@^13.19.0: + version "13.21.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" + integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== dependencies: type-fest "^0.20.2" @@ -9215,22 +9571,22 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.8: version "4.2.8" @@ -9242,22 +9598,15 @@ graceful-fs@^4.2.6, graceful-fs@^4.2.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -graphql-tag@^2.11.0: - version "2.12.6" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" - integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== - dependencies: - tslib "^2.1.0" +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphql@^16.3.0: - version "16.7.1" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.7.1.tgz#11475b74a7bff2aefd4691df52a0eca0abd9b642" - integrity sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg== +graphql@^16.6.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== gzip-size@^5.1.1: version "5.1.1" @@ -9415,7 +9764,7 @@ html-entities@^2.3.3: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== -html-escaper@^2.0.0, html-escaper@^2.0.2: +html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== @@ -9480,6 +9829,14 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" @@ -9501,6 +9858,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -9514,13 +9876,13 @@ hyphenate-style-name@^1.0.3: integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== i18next@^21.8.10: - version "21.8.10" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-21.8.10.tgz#12f164cc0f5f7904f0d4e0cfdf5950b93793d171" - integrity sha512-7xRb6y4QlSqZRZ3uA5BIEsLuZpmxpzHLizQyKjDDThOcvdfgICOX7aFoBnh4BSWcLtJamTqSweaOuK22A2xqkA== + version "21.10.0" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-21.10.0.tgz#85429af55fdca4858345d0e16b584ec29520197d" + integrity sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg== dependencies: "@babel/runtime" "^7.17.2" -iconv-lite@0.4.24, iconv-lite@^0.4.17: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -9546,17 +9908,12 @@ ignore-walk@^3.0.3: dependencies: minimatch "^3.0.4" -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.4: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -ignore@^5.2.0: +ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -9566,12 +9923,7 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== -immer@^9.0.1: - version "9.0.6" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.6.tgz#7a96bf2674d06c8143e327cbf73539388ddf1a73" - integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== - -immer@^9.0.21: +immer@^9.0.1, immer@^9.0.21: version "9.0.21" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== @@ -9586,7 +9938,7 @@ immutable@^4.1.0: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.1.tgz#17988b356097ab0719e2f741d56f3ec6c317f9dc" integrity sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A== -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: +import-fresh@^3.1.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== @@ -9630,11 +9982,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - ini@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" @@ -9654,25 +10001,6 @@ init-package-json@^2.0.4: validate-npm-package-license "^3.0.4" validate-npm-package-name "^3.0.0" -inquirer@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" - integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.1.0" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^5.5.2" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - install@^0.13.0: version "0.13.0" resolved "https://registry.yarnpkg.com/install/-/install-0.13.0.tgz#6af6e9da9dd0987de2ab420f78e60d9c17260776" @@ -9755,6 +10083,13 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -9808,6 +10143,13 @@ is-core-module@^2.11.0, is-core-module@^2.9.0: dependencies: has "^1.0.3" +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + is-core-module@^2.2.0, is-core-module@^2.5.0: version "2.6.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" @@ -9815,7 +10157,7 @@ is-core-module@^2.2.0, is-core-module@^2.5.0: dependencies: has "^1.0.3" -is-date-object@^1.0.1, is-date-object@^1.0.2: +is-date-object@^1.0.1, is-date-object@^1.0.2, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -9827,6 +10169,11 @@ is-docker@^2.0.0, is-docker@^2.1.1: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extendable@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -9837,6 +10184,13 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -9859,27 +10213,27 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-generator-function@^1.0.7: +is-generator-function@^1.0.10, is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.3, is-glob@~4.0.1: 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-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" @@ -9890,6 +10244,13 @@ is-in-browser@^1.0.2, is-in-browser@^1.1.3: resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" @@ -9930,6 +10291,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -9972,6 +10338,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-string@^1.0.5, is-string@^1.0.6, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -9987,11 +10358,15 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: has-symbols "^1.0.2" is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + 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: - which-typed-array "^1.1.11" + 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.3, is-typed-array@^1.1.7: version "1.1.8" @@ -10113,6 +10488,17 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +iterator.prototype@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.0.tgz#690c88b043d821f783843aaf725d7ac3b62e3b46" + integrity sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw== + dependencies: + define-properties "^1.1.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + has-tostringtag "^1.0.0" + reflect.getprototypeof "^1.0.3" + javascript-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" @@ -10577,6 +10963,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsan@^3.1.14: version "3.1.14" resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.14.tgz#197fee2d260b85acacb049c1ffa41bd09fb1f213" @@ -10629,10 +11022,10 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" @@ -10678,7 +11071,7 @@ json-schema@0.2.3: 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 sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stringify-nice@^1.1.4: version "1.1.4" @@ -10704,14 +11097,7 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -json5@^2.2.2: +json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -10750,21 +11136,15 @@ jsonpointer@^5.0.0: resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== -jsonwebtoken@^8.3.0: - version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== +jsonwebtoken@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d" + integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw== dependencies: jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" + lodash "^4.17.21" ms "^2.1.1" - semver "^5.6.0" + semver "^7.3.8" jsprim@^1.2.2: version "1.4.1" @@ -10967,12 +11347,21 @@ keccak@^3.0.0: node-gyp-build "^4.2.0" readable-stream "^3.6.0" -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== +keccak@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== dependencies: - json-buffer "3.0.0" + json-buffer "3.0.1" keyvaluestorage-interface@^1.0.0: version "1.0.0" @@ -10996,23 +11385,24 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -knex@^0.95.15: - version "0.95.15" - resolved "https://registry.yarnpkg.com/knex/-/knex-0.95.15.tgz#39d7e7110a6e2ad7de5d673d2dea94143015e0e7" - integrity sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w== +knex@^2.4.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/knex/-/knex-2.4.2.tgz#a34a289d38406dc19a0447a78eeaf2d16ebedd61" + integrity sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg== dependencies: - colorette "2.0.16" - commander "^7.1.0" - debug "4.3.2" + colorette "2.0.19" + commander "^9.1.0" + debug "4.3.4" escalade "^3.1.1" esm "^3.2.25" - getopts "2.2.5" + get-package-type "^0.1.0" + getopts "2.3.0" interpret "^2.2.0" lodash "^4.17.21" pg-connection-string "2.5.0" - rechoir "0.7.0" + rechoir "^0.8.0" resolve-from "^5.0.0" - tarn "^3.0.1" + tarn "^3.0.2" tildify "2.0.0" language-subtag-registry@~0.3.2: @@ -11050,7 +11440,7 @@ levn@^0.4.1: levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -11202,15 +11592,6 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" @@ -11242,7 +11623,14 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash-es@^4.17.15: +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash-es@^4.17.15, lodash-es@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== @@ -11252,7 +11640,7 @@ lodash.assignin@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= -lodash.clonedeep@4.5.0, lodash.clonedeep@^4.5.0: +lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= @@ -11287,67 +11675,32 @@ lodash.get@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - lodash.isequal@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== - lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== - 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.once@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - lodash.union@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= -lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.7.0, lodash@^4.8.0: +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -11369,21 +11722,11 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 dependencies: js-tokens "^3.0.0 || ^4.0.0" -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -"lru-cache@7.10.1 - 7.13.1": - version "7.13.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.13.1.tgz#267a81fbd0881327c46a81c5922606a2cfe336c4" - integrity sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ== - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -11398,10 +11741,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== +lru-cache@^7.10.1, lru-cache@^7.14.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== lz-string@^1.5.0: version "1.5.0" @@ -11568,34 +11911,31 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +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== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-create-react-context@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" - integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== - dependencies: - "@babel/runtime" "^7.12.1" - tiny-warning "^1.0.3" - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -11613,24 +11953,19 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimatch@^3.1.2: +minimatch@^3.0.5, 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: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw== - minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minimist@^1.2.6: +minimist@^1.2.6, minimist@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -11706,13 +12041,6 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -mkdirp@^0.5.4: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -11756,11 +12084,6 @@ multiformats@^9.4.2: resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== - mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -11776,24 +12099,12 @@ nanoid@^3.3.2: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -ncom@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ncom/-/ncom-1.0.3.tgz#07f580427ac7d8aad9e0762c260658eb4dae6e7d" - integrity sha512-PfA7rjxxMAItsGo2qXrGn2GvKJIwN0bUTa3GehsblrKRVdCCEwB0QG2ymM6/DppQGUt7YqbfxQB7LaMWMiHHWQ== - dependencies: - sc-formatter "~3.0.1" - -negotiator@0.6.3: +negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -11824,7 +12135,7 @@ nise@^5.1.1: just-extend "^4.0.2" path-to-regexp "^1.7.0" -node-abort-controller@^3.0.1: +node-abort-controller@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== @@ -11888,17 +12199,17 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - node-releases@^1.1.75: version "1.1.75" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.75.tgz#6dd8c876b9897a1b8e5a02de26afa79bb54ebbfe" integrity sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw== -node-releases@^2.0.12: +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +node-releases@^2.0.8: version "2.0.12" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== @@ -11935,10 +12246,10 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-audit-report@^2.1.5: version "2.1.5" @@ -11954,14 +12265,6 @@ npm-bundled@^1.1.1: dependencies: npm-normalize-package-bin "^1.0.1" -npm-conf@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" - integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== - dependencies: - config-chain "^1.1.11" - pify "^3.0.0" - npm-install-checks@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" @@ -12042,7 +12345,14 @@ npm-run-path@^4.0.1: resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - path-key "^3.0.0" + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" npm-user-validate@^1.0.1: version "1.0.1" @@ -12159,9 +12469,9 @@ number-is-nan@^1.0.0: integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= nwsapi@^2.2.2: - version "2.2.5" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.5.tgz#a52744c61b3889dd44b0a158687add39b8d935e2" - integrity sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ== + version "2.2.4" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.4.tgz#fd59d5e904e8e1f03c25a7d5a15cfa16c714a1e5" + integrity sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g== oauth-sign@~0.9.0: version "0.9.0" @@ -12201,7 +12511,7 @@ object-path@^0.11.8: resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.8.tgz#ed002c02bbdd0070b78a27455e8ae01fc14d4742" integrity sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA== -object.assign@^4.1.0, object.assign@^4.1.2: +object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -12248,6 +12558,16 @@ object.getownpropertydescriptors@^2.1.1: define-properties "^1.1.3" es-abstract "^1.18.0-next.2" +object.groupby@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.0.tgz#cb29259cf90f37e7bac6437686c1ea8c916d12a9" + integrity sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.21.2" + get-intrinsic "^1.2.1" + object.hasown@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" @@ -12296,13 +12616,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -12310,6 +12623,13 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + open@^7.4.2: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" @@ -12327,6 +12647,16 @@ open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" +open@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" + integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + dependencies: + default-browser "^4.0.0" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^2.2.0" + opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" @@ -12344,27 +12674,27 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" 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" os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" @@ -12373,7 +12703,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.1.0: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -12394,6 +12724,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -12483,7 +12820,7 @@ parse5@^7.0.0, parse5@^7.1.1: dependencies: entities "^4.4.0" -parseurl@^1.3.3, parseurl@~1.3.3: +parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -12537,6 +12874,11 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -12597,12 +12939,12 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== -picomatch@^2.3.1: +picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -12652,14 +12994,12 @@ pino@7.11.0: sonic-boom "^2.2.1" thread-stream "^0.15.1" -pirates@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pirates@^4.0.5: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== @@ -12705,12 +13045,7 @@ prelude-ls@^1.2.1: prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== prettier-linter-helpers@^1.0.0: version "1.0.0" @@ -12719,10 +13054,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" - integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== +prettier@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.2.tgz#78fcecd6d870551aa5547437cdae39d4701dca5b" + integrity sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ== pretty-bytes@^5.3.0: version "5.6.0" @@ -12781,7 +13116,7 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -progress@^2.0.0, progress@^2.0.3: +progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -12842,11 +13177,6 @@ prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -12855,11 +13185,21 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -psl@^1.1.28, psl@^1.1.33: +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -12900,6 +13240,13 @@ qrcode-terminal@^0.12.0: resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" + qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -12928,12 +13275,12 @@ query-string@6.13.5: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" -query-string@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1" - integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w== +query-string@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== dependencies: - decode-uri-component "^0.2.0" + decode-uri-component "^0.2.2" filter-obj "^1.1.0" split-on-first "^1.0.0" strict-uri-encode "^2.0.0" @@ -12963,6 +13310,11 @@ quick-format-unescaped@^4.0.3: resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + ramda@^0.28.0: version "0.28.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" @@ -13038,6 +13390,14 @@ react-dom@^17.0.2: object-assign "^4.1.1" scheduler "^0.20.2" +react-dom@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + react-dragula@^1.1.17: version "1.1.17" resolved "https://registry.yarnpkg.com/react-dragula/-/react-dragula-1.1.17.tgz#b3cb352a470a719367ba99d6a5401c60fad4f6ff" @@ -13054,12 +13414,11 @@ react-error-boundary@^3.1.4: "@babel/runtime" "^7.12.5" react-i18next@^11.17.2: - version "11.17.2" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.17.2.tgz#4ca77a20bedfa607e4e863dcc85963d1a180e2e9" - integrity sha512-/HG4XSResWDY450cFmoUqLgCYDu8VYMFISGcMnZlxRSV05naj3+F7DoebwnPu6z/akA3Wd0Xe7KGTYdywL9z9g== + version "11.18.6" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.18.6.tgz#e159c2960c718c1314f1e8fcaa282d1c8b167887" + integrity sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA== dependencies: "@babel/runtime" "^7.14.5" - html-escaper "^2.0.2" html-parse-stringify "^3.0.1" react-icons@^4.3.1, react-icons@^4.7.1: @@ -13096,25 +13455,25 @@ react-json-tree@^0.18.0: "@types/lodash" "^4.14.191" react-base16-styling "^0.9.1" -react-qr-code@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/react-qr-code/-/react-qr-code-2.0.2.tgz#64107c869079aceb897c97496d163720ab2820e8" - integrity sha512-73VGe81MgeE5FJNFgdY42ez/wPPJTHuooU3iE4CX+6F8M88O1Gg4zNA0L4bKEpoySQ0QjqreJgyXjFrG/QfsdA== +react-qr-code@2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/react-qr-code/-/react-qr-code-2.0.11.tgz#444c759a2100424972e17135fbe0e32eaffa19e8" + integrity sha512-P7mvVM5vk9NjGdHMt4Z0KWeeJYwRAtonHTghZT2r+AASinLUUKQ9wfsGH2lPKsT++gps7hXmaiMGRvwTDEL9OA== dependencies: - prop-types "^15.7.2" + prop-types "^15.8.1" qr.js "0.0.0" -react-redux@^7.2.4: - version "7.2.4" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.4.tgz#1ebb474032b72d806de2e0519cd07761e222e225" - integrity sha512-hOQ5eOSkEJEXdpIKbnRyl04LhaWabkDPV+Ix97wqQX3T3d2NQ8DUblNXXtNMavc7DpswyQM6xfaN4HQDKNY2JA== +react-redux@^7.2.9: + version "7.2.9" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d" + integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== dependencies: - "@babel/runtime" "^7.12.1" - "@types/react-redux" "^7.1.16" + "@babel/runtime" "^7.15.4" + "@types/react-redux" "^7.1.20" hoist-non-react-statics "^3.3.2" loose-envify "^1.4.0" prop-types "^15.7.2" - react-is "^16.13.1" + react-is "^17.0.2" react-redux@^8.0.5: version "8.1.1" @@ -13128,29 +13487,28 @@ react-redux@^8.0.5: react-is "^18.0.0" use-sync-external-store "^1.0.0" -react-router-dom@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" - integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== +react-router-dom@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" + integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.2.1" + react-router "5.3.4" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" - integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== +react-router@5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" + integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" hoist-non-react-statics "^3.1.0" loose-envify "^1.3.1" - mini-create-react-context "^0.4.0" path-to-regexp "^1.7.0" prop-types "^15.6.2" react-is "^16.6.0" @@ -13173,19 +13531,19 @@ react-select@^5.3.2: use-isomorphic-layout-effect "^1.1.2" react-transition-group@^4.3.0: - version "4.4.5" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" - integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + version "4.4.2" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" + integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== dependencies: "@babel/runtime" "^7.5.5" dom-helpers "^5.0.1" loose-envify "^1.4.0" prop-types "^15.6.2" -react-transition-group@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" - integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== +react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== dependencies: "@babel/runtime" "^7.5.5" dom-helpers "^5.0.1" @@ -13200,6 +13558,13 @@ react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" +react@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + read-cmd-shim@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" @@ -13252,7 +13617,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.0.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@~2.3.6: +readable-stream@^2.3.5, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -13312,13 +13677,6 @@ realistic-structured-clone@^3.0.0: typeson "^6.1.0" typeson-registry "^1.0.0-alpha.20" -rechoir@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" - integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== - dependencies: - resolve "^1.9.0" - rechoir@^0.7.0: version "0.7.1" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" @@ -13326,6 +13684,13 @@ rechoir@^0.7.0: dependencies: resolve "^1.9.0" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -13346,45 +13711,38 @@ redux-persist@^6.0.0: resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8" integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== -redux-thunk@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" - integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== - redux-thunk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.2.tgz#b9d05d11994b99f7a91ea223e8b04cf0afa5ef3b" integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== -redux@^4.0.0, redux@^4.1.0, redux@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.1.tgz#76f1c439bb42043f985fbd9bf21990e60bd67f47" - integrity sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw== - dependencies: - "@babel/runtime" "^7.9.2" - -redux@^4.1.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" - integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== - dependencies: - "@babel/runtime" "^7.9.2" - -redux@^4.2.0, redux@^4.2.1: +redux@^4.0.0, redux@^4.1.0, redux@^4.1.1, redux@^4.1.2, redux@^4.2.0, redux@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== dependencies: "@babel/runtime" "^7.9.2" -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== +reflect.getprototypeof@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.3.tgz#2738fd896fcc3477ffbd4190b40c2458026b6928" + integrity sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw== dependencies: - regenerate "^1.4.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" -regenerate@^1.4.0: +regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== @@ -13399,10 +13757,15 @@ regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: "@babel/runtime" "^7.8.4" @@ -13424,32 +13787,22 @@ regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: define-properties "^1.2.0" functions-have-names "^1.2.3" -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== - -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" -regjsparser@^0.6.4: - version "0.6.9" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" - integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" @@ -13494,16 +13847,16 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== - reselect@^4.1.8: version "4.1.8" resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -13557,20 +13910,12 @@ resolve@^2.0.0-next.4: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" + lowercase-keys "^2.0.0" retry@0.13.1: version "0.13.1" @@ -13638,10 +13983,12 @@ robust-predicates@^3.0.0: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-applescript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" + integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + dependencies: + execa "^5.0.0" run-parallel@^1.1.9: version "1.2.0" @@ -13662,13 +14009,6 @@ rxjs@6, rxjs@^6.6.3: dependencies: tslib "^1.9.0" -rxjs@^5.5.2: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== - dependencies: - symbol-observable "1.0.1" - safe-array-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" @@ -13725,37 +14065,6 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" -sc-auth@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/sc-auth/-/sc-auth-5.0.2.tgz#a9ac421fb30f127089dbf8b0f26b2601e009b0dc" - integrity sha512-Le3YBsFjzv5g6wIH6Y+vD+KFkK0HDXiaWy1Gm4nXtYebMQUyNYSf1cS83MtHrYzVEMlhYElRva1b0bvZ0hBqQw== - dependencies: - jsonwebtoken "^8.3.0" - sc-errors "^1.4.1" - -sc-broker-cluster@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/sc-broker-cluster/-/sc-broker-cluster-7.0.0.tgz#7c7de27843241a5b72ee8811abe50920cd4a21fd" - integrity sha512-DNG8sxiFwmRSMS0sUXA25UvDV8QTwEfYnzrutqbp4HlMU9JP65FBcs6GuNFPhjQN4s9VtwAE8BBaCNK5BjNV0g== - dependencies: - async "2.0.0" - sc-broker "^6.0.0" - sc-channel "^1.2.0" - sc-errors "^1.4.1" - sc-hasher "^1.0.1" - -sc-broker@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/sc-broker/-/sc-broker-6.0.0.tgz#cb0c5572c86b26d2f942edaf0201ef694e3e1ddb" - integrity sha512-c1mFIllUdPnEXDDFxTiX3obYW+cT0hb56fdNM5k+Xo5DI3+3Q9MYxTc8jD23qBIXOHokt4+d/CHocmZQPlAjAQ== - dependencies: - async "^2.6.1" - expirymanager "^0.9.3" - fleximap "^1.0.0" - ncom "^1.0.2" - sc-errors "^1.4.1" - uuid "3.1.0" - sc-channel@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/sc-channel/-/sc-channel-1.2.0.tgz#d9209f3a91e3fa694c66b011ce55c4ad8c3087d9" @@ -13763,11 +14072,6 @@ sc-channel@^1.2.0: dependencies: component-emitter "1.2.1" -sc-errors@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sc-errors/-/sc-errors-1.4.1.tgz#53e80030fe647e133d73b51eaa7d2b0f7591fd5b" - integrity sha512-dBn92iIonpChTxYLgKkIT/PCApvmYT6EPIbRvbQKTgY6tbEbIy8XVUv4pGyKwEK4nCmvX4TKXcN0iXC6tNW6rQ== - sc-errors@^2.0.0, sc-errors@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/sc-errors/-/sc-errors-2.0.1.tgz#3af2d934dfd82116279a4b2c1552c1e021ddcb03" @@ -13778,7 +14082,7 @@ sc-formatter@^3.0.1: resolved "https://registry.yarnpkg.com/sc-formatter/-/sc-formatter-3.0.2.tgz#9abdb14e71873ce7157714d3002477bbdb33c4e6" integrity sha512-9PbqYBpCq+OoEeRQ3QfFIGE6qwjjBcd2j7UjgDlhnZbtSnuGgHdcRklPKYGuYFH82V/dwd+AIpu8XvA1zqTd+A== -sc-formatter@^3.0.2, sc-formatter@~3.0.1: +sc-formatter@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/sc-formatter/-/sc-formatter-3.0.3.tgz#caeb1e9bf3145dc77b7128b2a8abbb14bad3162e" integrity sha512-lYI/lTs1u1c0geKElcj+bmEUfcP/HuKg2iDeTijPSjiTNFzN3Cf8Qh6tVd65oi7Qn+2/oD7LP4s6GC13v/9NiQ== @@ -13788,18 +14092,6 @@ sc-formatter@^4.0.0: resolved "https://registry.yarnpkg.com/sc-formatter/-/sc-formatter-4.0.0.tgz#2dda494a08e9d4cb069cbc9238a9f670adb3e7a6" integrity sha512-MgUIvuca+90fBrCWY5LdlU9YUWjlkPFwdpvmomcwQEu3t2id/6YHdG2nhB6o7nhRp4ocfmcXQTh00r/tJtynSg== -sc-hasher@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sc-hasher/-/sc-hasher-1.0.1.tgz#32e73edb7c71a0ef0f2eb17ee04754a7395a71a2" - integrity sha512-whZWw70Gp5ibXXMcz6+Tulmk8xkwWMs42gG70p12hGscdUg8BICBvihS3pX2T3dWTw+yeZuGKiULr3MwL37SOQ== - -sc-simple-broker@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/sc-simple-broker/-/sc-simple-broker-2.1.3.tgz#c347d32dcf860995037abac348cc34743384b3f9" - integrity sha512-ldt0ybOS5fVZSMea5Z8qVu7lmDBTy0qO9BD6TseJjRuPx+g+stfSqmPAb0RsCsQUXRH8A1koCbwsuUnI9BOxvw== - dependencies: - sc-channel "^1.2.0" - scheduler@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" @@ -13808,6 +14100,13 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + schema-utils@2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" @@ -13859,29 +14158,31 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.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@^6.2.0: +semver@^6.2.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" -semver@^7.3.7: +semver@^7.3.8: + version "7.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== + dependencies: + lru-cache "^6.0.0" + +semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -14094,15 +14395,6 @@ slash@^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" - sliced@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" @@ -14147,37 +14439,22 @@ socketcluster-client@^17.1.0: vinyl-buffer "^1.0.1" ws "^8.9.0" -socketcluster-server@^14.7.0: - version "14.7.2" - resolved "https://registry.yarnpkg.com/socketcluster-server/-/socketcluster-server-14.7.2.tgz#fa0f744f894b4c274a2b721f4113089883d4a265" - integrity sha512-PHFez3OXpxZ0jMm+JleYzshwCT7EXdldlVQnZpLCHM8BARSgbr6C+vuD5lHCvUDJc+T6kVFNEHQ1Hnhzw21CSw== +socketcluster-server@^17.2.0: + version "17.3.1" + resolved "https://registry.yarnpkg.com/socketcluster-server/-/socketcluster-server-17.3.1.tgz#2ab7c62b9b8e98d3ba9c98daee6c0eaffa1b0a46" + integrity sha512-qBQ0fhqqQjIgvucSBm/q3hHd45RJEd+gidqKFugIQ/ndafIbuudkVyUQPcPwqU/sM8+vA2QTcMB2TNk5MIlhpg== dependencies: - async "^3.1.0" - base64id "1.0.0" - component-emitter "1.2.1" - lodash.clonedeep "4.5.0" - sc-auth "^5.0.2" + ag-auth "^2.0.0" + ag-request "^1.0.0" + ag-simple-broker "^5.0.0" + async-stream-emitter "^4.0.0" + base64id "^2.0.0" + clone-deep "^4.0.1" sc-errors "^2.0.1" - sc-formatter "^3.0.2" - sc-simple-broker "^2.1.3" - uuid "3.2.1" - ws "^7.5.0" - -socketcluster@^14.4.2: - version "14.4.2" - resolved "https://registry.yarnpkg.com/socketcluster/-/socketcluster-14.4.2.tgz#ef0e3154a2d65c2bf28181851c1c1fbb278ce104" - integrity sha512-Z45tSQ6K/XUEyftrID1hyBXSdaK/gDeq6BMqhNR3XvjnUQ6HkkeTrxZUoXIn/In/J8KLl1WRVtvZAB0Zf9pEjA== - dependencies: - async "2.3.0" - fs-extra "6.0.1" - inquirer "5.2.0" - minimist "1.2.0" - sc-auth "^5.0.2" - sc-broker-cluster "^7.0.0" - sc-errors "^1.4.1" - socketcluster-server "^14.7.0" - uid-number "0.0.6" - uuid "3.2.1" + sc-formatter "^3.0.3" + stream-demux "^8.0.0" + writable-consumable-stream "^2.0.0" + ws "^8.9.0" socks-proxy-agent@^6.0.0: version "6.0.0" @@ -14219,11 +14496,6 @@ source-map-support@^0.5.16, source-map-support@~0.5.19: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.7.3, source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - source-map@^0.5.0, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -14234,6 +14506,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -14291,7 +14568,7 @@ sqlite3@5.1.1: optionalDependencies: node-gyp "8.x" -sqlite3@^5.0.2: +sqlite3@^5.1.4: version "5.1.6" resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.6.tgz#1d4fbc90fe4fbd51e952e0a90fd8f6c2b9098e97" integrity sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw== @@ -14362,11 +14639,6 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== -string-hash@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= - string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -14389,7 +14661,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.1 || ^2.0.0", "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0: +"string-width@^1.0.1 || ^2.0.0", "string-width@^1.0.2 || 2", string-width@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -14548,6 +14820,11 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" @@ -14562,7 +14839,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +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== @@ -14574,7 +14851,7 @@ sturdy-websocket@^0.1.12: dependencies: lodash.defaults "^4.2.0" -styled-components@^5.3.5: +styled-components@^5.3.6: version "5.3.11" resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.11.tgz#9fda7bf1108e39bf3f3e612fcc18170dedcd57a8" integrity sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw== @@ -14590,29 +14867,12 @@ styled-components@^5.3.5: shallowequal "^1.1.0" supports-color "^5.5.0" -styled-jsx@^3.4.4: - version "3.4.7" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.4.7.tgz#803bc8a36f1c359cc99691b6db6e0791ea3e1e31" - integrity sha512-PkImcCsovR39byv4Tz83tAPsYs2CiTPOmDSplhe0lsIFVYJyd7rzJ7fbm41vSNsF/lnO+Ob5n/jgMookwY0pww== - dependencies: - "@babel/types" "7.8.3" - babel-plugin-syntax-jsx "6.18.0" - convert-source-map "1.7.0" - loader-utils "1.2.3" - source-map "0.7.3" - string-hash "1.1.3" - stylis "3.5.4" - stylis-rule-sheet "0.0.10" - -stylis-rule-sheet@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" - integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== - -stylis@3.5.4: - version "3.5.4" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" - integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== +styled-jsx@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.2.tgz#55020c50da54d2b225750bd7aaab57d511724060" + integrity sha512-FI5r0a5ED2/+DSdG2ZRz3a4FtNQnKPLadauU5v76a9QsscwZrWggQKOmyxGGP5EWKbyY3bsuWAJYzyKaDAVAcw== + dependencies: + client-only "0.0.1" stylis@4.2.0: version "4.2.0" @@ -14652,11 +14912,6 @@ supports-preserve-symlinks-flag@^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== -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw== - symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -14667,17 +14922,13 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== +synckit@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" + "@pkgr/utils" "^2.3.1" + tslib "^2.5.0" tapable@^1.0.0: version "1.1.3" @@ -14712,7 +14963,7 @@ tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" -tarn@^3.0.1: +tarn@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== @@ -14750,7 +15001,7 @@ test-exclude@^6.0.0: text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== thread-stream@^0.15.1: version "0.15.2" @@ -14767,11 +15018,6 @@ through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - ticky@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ticky/-/ticky-1.0.1.tgz#b7cfa71e768f1c9000c497b9151b30947c50e46d" @@ -14804,11 +15050,16 @@ tiny-relative-date@^1.3.0: resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== -tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3: +tiny-warning@^1.0.0, tiny-warning@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +titleize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" + integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -14826,11 +15077,6 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - 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" @@ -14844,9 +15090,9 @@ toidentifier@1.0.1: integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== tough-cookie@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== dependencies: psl "^1.1.33" punycode "^2.1.1" @@ -14885,6 +15131,11 @@ treeverse@^1.0.4: resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-1.0.4.tgz#a6b0ebf98a1bca6846ddc7ecbc900df08cb9cd5f" integrity sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g== +ts-api-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.2.tgz#7c094f753b6705ee4faee25c3c684ade52d66d99" + integrity sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ== + ts-loader@^9.2.3: version "9.2.5" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.5.tgz#127733a5e9243bf6dafcb8aa3b8a266d8041dca9" @@ -14913,7 +15164,7 @@ ts-node@^10.4.0: make-error "^1.1.1" yn "3.1.1" -tsconfig-paths@^3.14.1: +tsconfig-paths@^3.14.2: 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== @@ -14923,22 +15174,20 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0: +tslib@1.14.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== -tslib@^2.1.0, tslib@^2.4.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" - integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== +tslib@^2.4.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" + integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== -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" +tslib@^2.5.0, tslib@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tunnel-agent@^0.6.0: version "0.6.0" @@ -14947,11 +15196,6 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -14967,7 +15211,7 @@ type-check@^0.4.0, type-check@~0.4.0: type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" @@ -15045,15 +15289,10 @@ typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -typescript@^5.0.4: - version "5.1.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.5.tgz#a3ae755082488b6046fe64345d293ef26af08671" - integrity sha512-FOH+WN/DQjUvN6WgW+c4Ml3yi0PH+a/8q+kNIfRehv1wLhWONedw85iu+vQ39Wp49IzTJEsZ2lyLXpBF7mkF1g== +typescript@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== typeson-registry@^1.0.0-alpha.20: version "1.0.0-alpha.39" @@ -15069,19 +15308,7 @@ typeson@^6.0.0, typeson@^6.1.0: resolved "https://registry.yarnpkg.com/typeson/-/typeson-6.1.0.tgz#5b2a53705a5f58ff4d6f82f965917cabd0d7448b" integrity sha512-6FTtyGr8ldU0pfbvW/eOZrEtEkczHRUtduBnA90Jh9kMPCiFNnXIon3vF41N0S4tV1HHQt4Hk1j4srpESziCaA== -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w== - -uint8arrays@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" - integrity sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog== - dependencies: - multiformats "^9.4.2" - -uint8arrays@^3.0.0: +uint8arrays@^3.0.0, uint8arrays@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== @@ -15108,28 +15335,28 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== unique-filename@^1.1.1: version "1.1.1" @@ -15165,7 +15392,12 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.0.11: +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +update-browserslist-db@^1.0.10, update-browserslist-db@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== @@ -15180,13 +15412,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - url-parse@^1.5.3: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" @@ -15238,11 +15463,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" - integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g== - uuid@3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" @@ -15263,7 +15483,7 @@ uuid@^9.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: +v8-compile-cache@^2.2.0: 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== @@ -15327,11 +15547,6 @@ value-equal@^1.0.1: resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== -value-or-promise@1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" - integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== - value-or-promise@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" @@ -15613,6 +15828,24 @@ which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + which-collection@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" @@ -15623,7 +15856,7 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.10, which-typed-array@^1.1.11: +which-typed-array@^1.1.10: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== @@ -15646,6 +15879,18 @@ which-typed-array@^1.1.2: has-tostringtag "^1.0.0" is-typed-array "^1.1.7" +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@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -15679,7 +15924,7 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -word-wrap@^1.2.3, word-wrap@~1.2.3: +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== @@ -15698,6 +15943,13 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +writable-consumable-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/writable-consumable-stream/-/writable-consumable-stream-2.0.0.tgz#102beeea0b20b4862f263dd8688c926a4caa28d3" + integrity sha512-SITambzxtPTFU/wR82h+zOKGBiEv5V8gC1mt8xvoE1/168ApEa8H+6s2UToYJo3VLL7sNYTaApKuPD+pZHMGJQ== + dependencies: + consumable-stream "^2.0.0" + writable-consumable-stream@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/writable-consumable-stream/-/writable-consumable-stream-3.0.1.tgz#666c37544d13ca860ef2e9eca38178d12a127beb" @@ -15758,14 +16010,6 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xss@^1.0.8: - version "1.0.14" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" - integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== - dependencies: - commander "^2.20.3" - cssfilter "0.0.10" - xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"