use to fetch balances + lint

This commit is contained in:
DR497 2022-03-31 12:52:49 +08:00
parent 0a4c2a00c0
commit 31f0b22c49
21 changed files with 554 additions and 260 deletions

View File

@ -167,18 +167,20 @@ export default function AddTokenDialog({ open, onClose }) {
</React.Fragment>
) : tab === 'popular' ? (
<List disablePadding>
{popularTokens.filter(tokenInfo => tokenInfo.address).map((tokenInfo) => (
<TokenListItem
key={tokenInfo.address}
tokenInfo={tokenInfo}
existingAccount={(walletAccounts || []).find(
(account) =>
account.parsed.mint.toBase58() === tokenInfo.address,
)}
onSubmit={onSubmit}
disabled={sending}
/>
))}
{popularTokens
.filter((tokenInfo) => tokenInfo.address)
.map((tokenInfo) => (
<TokenListItem
key={tokenInfo.address}
tokenInfo={tokenInfo}
existingAccount={(walletAccounts || []).find(
(account) =>
account.parsed.mint.toBase58() === tokenInfo.address,
)}
onSubmit={onSubmit}
disabled={sending}
/>
))}
</List>
) : tab === 'erc20' ? (
<>
@ -243,8 +245,7 @@ function TokenListItem({ tokenInfo, onSubmit, disabled, existingAccount }) {
target="_blank"
rel="noopener"
href={
`https://solscan.io/account/${tokenInfo.address}` +
urlSuffix
`https://solscan.io/account/${tokenInfo.address}` + urlSuffix
}
>
{tokenInfo.name ?? abbreviateAddress(tokenInfo.address)}

View File

@ -62,6 +62,7 @@ import MergeAccountsDialog from './MergeAccountsDialog';
import SwapButton from './SwapButton';
import DnsIcon from '@material-ui/icons/Dns';
import DomainsList from './DomainsList';
import { useSolBalance, useMultipleBalanceInfo } from '../utils/tokens/rpc';
const balanceFormat = new Intl.NumberFormat(undefined, {
minimumFractionDigits: 4,
@ -106,6 +107,9 @@ function fairsIsLoaded(publicKeys) {
export default function BalancesList() {
const wallet = useWallet();
const [publicKeys, loaded] = useWalletPublicKeys();
const [solBalance] = useSolBalance(publicKeys[0]);
const balancesInfo = useMultipleBalanceInfo(publicKeys?.slice(1));
const [showAddTokenDialog, setShowAddTokenDialog] = useState(false);
const [showEditAccountNameDialog, setShowEditAccountNameDialog] = useState(
false,
@ -182,17 +186,21 @@ export default function BalancesList() {
);
const balanceListItemsMemo = useMemo(() => {
return sortedPublicKeys.map((pk) => {
return React.memo((props) => {
return React.memo(() => {
const balanceInfo = pk.equals(wallet.publicKey)
? solBalance
: balancesInfo?.find((e) => e.pubkey.equals(pk));
return (
<BalanceListItem
key={pk.toString()}
publicKey={pk}
setUsdValue={setUsdValuesCallback}
balanceInfo={balanceInfo}
/>
);
});
});
}, [sortedPublicKeys, setUsdValuesCallback]);
}, [sortedPublicKeys, setUsdValuesCallback, balancesInfo, solBalance]);
const iconSize = isExtensionWidth ? 'small' : 'medium';
@ -274,7 +282,9 @@ export default function BalancesList() {
</IconButton>
</Tooltip>
<DomainsList open={showDomains} setOpen={setShowDomains} />
{region.result && !region.result.isRestricted && <SwapButton size={iconSize} />}
{region.result && !region.result.isRestricted && (
<SwapButton size={iconSize} />
)}
<Tooltip title="Migrate Tokens" arrow>
<IconButton
size={iconSize}
@ -384,9 +394,13 @@ const useStyles = makeStyles((theme) => ({
},
}));
export function BalanceListItem({ publicKey, expandable, setUsdValue }) {
export function BalanceListItem({
publicKey,
expandable,
setUsdValue,
balanceInfo,
}) {
const wallet = useWallet();
const balanceInfo = useBalanceInfo(publicKey);
const classes = useStyles();
const connection = useConnection();
const [open, setOpen] = useState(false);

View File

@ -1,6 +1,10 @@
import React, { useState } from 'react';
import DialogForm from './DialogForm';
import { forgetWallet, normalizeMnemonic, useUnlockedMnemonicAndSeed } from '../utils/wallet-seed';
import {
forgetWallet,
normalizeMnemonic,
useUnlockedMnemonicAndSeed,
} from '../utils/wallet-seed';
import DialogTitle from '@material-ui/core/DialogTitle';
import { DialogContentText } from '@material-ui/core';
import DialogActions from '@material-ui/core/DialogActions';
@ -36,8 +40,8 @@ export default function DeleteMnemonicDialog({ open, onClose }) {
<br />
<strong>
To prevent loss of funds, please ensure you have the seed phrase
and the private key for all current accounts. You can view it by selecting
"Export Mnemonic" in the user menu.
and the private key for all current accounts. You can view it by
selecting "Export Mnemonic" in the user menu.
</strong>
</div>
<TextField

View File

@ -193,7 +193,14 @@ const TransferDialog = ({
color="primary"
style={{ padding: 10 }}
>
{loading ? <LoadingIndicator height="10px" /> : 'Transfer'}
{loading ? (
<LoadingIndicator
// @ts-ignore
height="10px"
/>
) : (
'Transfer'
)}
</Button>
</div>
</Paper>

View File

@ -69,7 +69,9 @@ export default function FtxPayDialog({ open, onClose }) {
</DialogTitle>
<DialogContent>
<DialogContentText>
Send funds to your Sollet wallet from an FTX account, where you can add funds using crypto on multiple blockchains, credit cards, and more.
Send funds to your Sollet wallet from an FTX account, where you can
add funds using crypto on multiple blockchains, credit cards, and
more.
</DialogContentText>
<DialogContentText>
If you don't have an FTX account, it may take a few moments to get up.
@ -108,7 +110,12 @@ export default function FtxPayDialog({ open, onClose }) {
urlSuffix
}
>
{(isExtensionWidth ? '' : `${tokenInfo.name ?? abbreviateAddress(tokenInfo.address)} `) + tokenInfo.symbol}
{(isExtensionWidth
? ''
: `${
tokenInfo.name ??
abbreviateAddress(tokenInfo.address)
} `) + tokenInfo.symbol}
</Link>
</div>
</MenuItem>

View File

@ -190,9 +190,9 @@ export default function MergeAccountsDialog({ open, onClose }) {
</DialogContentText>
<DialogContentText>
If migrating fails during a period of high network load, you will
not have lost your funds. Just recontinue the migration from where you
left off. If you have a lot of accounts, migrating might take a
while.
not have lost your funds. Just recontinue the migration from where
you left off. If you have a lot of accounts, migrating might take
a while.
</DialogContentText>
<TextField
label={`Please type "migrate" to confirm`}

View File

@ -117,22 +117,14 @@ function SwapButtonPopover({ size }) {
}
class NotifyingProvider extends Provider {
constructor(
connection,
wallet,
sendTransaction,
) {
constructor(connection, wallet, sendTransaction) {
super(connection, wallet, {
commitment: 'recent',
});
this.sendTransaction = sendTransaction;
}
async send(
tx,
signers,
opts,
) {
async send(tx, signers, opts) {
return new Promise((onSuccess, onError) => {
this.sendTransaction(super.send(tx, signers, opts), {
onSuccess,
@ -141,10 +133,7 @@ class NotifyingProvider extends Provider {
});
}
async sendAll(
txs,
opts,
) {
async sendAll(txs, opts) {
return new Promise(async (resolve, onError) => {
let txSigs = [];
for (const tx of txs) {

View File

@ -1,10 +1,17 @@
import React, { useState } from 'react';
export default function TokenIcon({ mint, url, tokenName, size = 20, ...props }) {
export default function TokenIcon({
mint,
url,
tokenName,
size = 20,
...props
}) {
const [hasError, setHasError] = useState(false);
if (!url && mint === null) {
url = 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png';
url =
'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png';
}
if (hasError || !url) {

View File

@ -44,8 +44,7 @@ export default function TokenInfoDialog({
<Typography variant="body2" className={classes.explorerLink}>
<Link
href={
`https://solscan.io/account/${publicKey.toBase58()}`
+ urlSuffix
`https://solscan.io/account/${publicKey.toBase58()}` + urlSuffix
}
target="_blank"
rel="noopener"

View File

@ -25,7 +25,11 @@ const DATA_LABELS = {
authoritySeed: { label: 'Authority seed', address: false },
authorityOwner: { label: 'Authority owner', address: true },
newAuthorizedPubkey: { label: 'New authorized', address: true },
stakeAuthorizationType: { label: 'Stake authorization type', address: false, transform: () => JSON.stringify },
stakeAuthorizationType: {
label: 'Stake authorization type',
address: false,
transform: () => JSON.stringify,
},
custodianPubkey: { label: 'Custodian', address: true },
splitStakePubkey: { label: 'Split to', address: true },
lamports: { label: 'Lamports', address: false },
@ -54,7 +58,13 @@ export default function StakeInstruction({ instruction, onOpenAddress }) {
<LabelValue
key={key}
label={label + ''}
value={address ? value?.toBase58() : (transform ? transform(value) : value)}
value={
address
? value?.toBase58()
: transform
? transform(value)
: value
}
link={address}
onClick={() => address && onOpenAddress(value?.toBase58())}
/>

View File

@ -15,7 +15,11 @@ const TYPE_LABELS = {
};
const DATA_LABELS = {
amount: { label: 'Amount', address: false, transform: (amount) => amount.toString()},
amount: {
label: 'Amount',
address: false,
transform: (amount) => amount.toString(),
},
authorityType: { label: 'Authority type', address: false },
currentAuthority: { label: 'Current authority', address: true },
decimals: { label: 'Decimals', address: false },
@ -66,7 +70,13 @@ export default function TokenInstruction({ instruction, onOpenAddress }) {
<LabelValue
key={key}
label={label + ''}
value={address ? getAddressValue(value) : transform ? transform(value) : value}
value={
address
? getAddressValue(value)
: transform
? transform(value)
: value
}
link={address}
onClick={() => address && onOpenAddress(value?.toBase58())}
/>

View File

@ -16,7 +16,12 @@ import LoadingIndicator from '../components/LoadingIndicator';
import { BalanceListItem } from '../components/BalancesList.js';
import Card from '@material-ui/core/Card';
import CardContent from '@material-ui/core/CardContent';
import { DialogActions, DialogContentText, DialogTitle, Typography } from '@material-ui/core';
import {
DialogActions,
DialogContentText,
DialogTitle,
Typography,
} from '@material-ui/core';
import TextField from '@material-ui/core/TextField';
import Checkbox from '@material-ui/core/Checkbox';
import FormControl from '@material-ui/core/FormControl';
@ -29,6 +34,7 @@ import { useCallAsync } from '../utils/notifications';
import Link from '@material-ui/core/Link';
import { validateMnemonic } from 'bip39';
import DialogForm from '../components/DialogForm';
import { useMultipleSolBalance } from '../utils/tokens/rpc';
export default function LoginPage() {
const [restore, setRestore] = useState(false);
@ -110,7 +116,7 @@ function SeedWordsForm({ mnemonicAndSeed, goForward }) {
link.setAttribute('download', 'sollet.bak');
document.body.appendChild(link);
link.click();
}
};
return (
<>
@ -140,9 +146,9 @@ function SeedWordsForm({ mnemonicAndSeed, goForward }) {
<LoadingIndicator />
)}
<Typography paragraph>
Your private keys are only stored on your current computer or device.
You will need these words to restore your wallet if your browser's
storage is cleared or your device is damaged or lost.
Your private keys are only stored on your current computer or
device. You will need these words to restore your wallet if your
browser's storage is cleared or your device is damaged or lost.
</Typography>
<Typography paragraph>
By default, sollet will use <code>m/44'/501'/0'/0'</code> as the
@ -160,16 +166,25 @@ function SeedWordsForm({ mnemonicAndSeed, goForward }) {
label="I have saved these words in a safe place."
/>
<Typography paragraph>
<Button variant="contained" color="primary" style={{ marginTop: 20 }} onClick={() => {
downloadMnemonic(mnemonicAndSeed?.mnemonic);
setDownloaded(true);
}}>
Download Backup Mnemonic File (Required)
</Button>
<Button
variant="contained"
color="primary"
style={{ marginTop: 20 }}
onClick={() => {
downloadMnemonic(mnemonicAndSeed?.mnemonic);
setDownloaded(true);
}}
>
Download Backup Mnemonic File (Required)
</Button>
</Typography>
</CardContent>
<CardActions style={{ justifyContent: 'flex-end' }}>
<Button color="primary" disabled={!confirmed || !downloaded} onClick={() => setShowDialog(true)}>
<Button
color="primary"
disabled={!confirmed || !downloaded}
onClick={() => setShowDialog(true)}
>
Continue
</Button>
</CardActions>
@ -204,7 +219,9 @@ function SeedWordsForm({ mnemonicAndSeed, goForward }) {
<Button
type="submit"
color="secondary"
disabled={normalizeMnemonic(seedCheck) !== mnemonicAndSeed?.mnemonic}
disabled={
normalizeMnemonic(seedCheck) !== mnemonicAndSeed?.mnemonic
}
>
Continue
</Button>
@ -276,14 +293,14 @@ function LoginForm() {
progressMessage: 'Unlocking wallet...',
successMessage: 'Wallet unlocked',
});
}
};
const submitOnEnter = (e) => {
if (e.code === "Enter" || e.code === "NumpadEnter") {
if (e.code === 'Enter' || e.code === 'NumpadEnter') {
e.preventDefault();
e.stopPropagation();
submit();
}
}
};
const setPasswordOnChange = (e) => setPassword(e.target.value);
const toggleStayLoggedIn = (e) => setStayLoggedIn(e.target.checked);
@ -306,10 +323,7 @@ function LoginForm() {
/>
<FormControlLabel
control={
<Checkbox
checked={stayLoggedIn}
onChange={toggleStayLoggedIn}
/>
<Checkbox checked={stayLoggedIn} onChange={toggleStayLoggedIn} />
}
label="Keep wallet unlocked"
/>
@ -333,7 +347,8 @@ function RestoreWalletForm({ goBack }) {
const mnemonic = normalizeMnemonic(rawMnemonic);
const isNextBtnEnabled =
password === passwordConfirm && validateMnemonic(mnemonic);
const displayInvalidMnemonic = validateMnemonic(mnemonic) === false && mnemonic.length > 0;
const displayInvalidMnemonic =
validateMnemonic(mnemonic) === false && mnemonic.length > 0;
return (
<>
{next ? (
@ -359,9 +374,10 @@ function RestoreWalletForm({ goBack }) {
wallets can be optionally connected after a web wallet is created.
</Typography>
{displayInvalidMnemonic && (
<Typography fontWeight="fontWeightBold" style={{ color: 'red' }}>
Mnemonic validation failed. Please enter a valid BIP 39 seed phrase.
</Typography>
<Typography fontWeight="fontWeightBold" style={{ color: 'red' }}>
Mnemonic validation failed. Please enter a valid BIP 39 seed
phrase.
</Typography>
)}
<TextField
variant="outlined"
@ -465,6 +481,10 @@ export function AccountsSelector({
setDPathMenuItem,
onClick,
}) {
const [balancesInfo] = useMultipleSolBalance(
accounts.map((e) => e.publicKey),
);
return (
<CardContent>
<div
@ -502,7 +522,7 @@ export function AccountsSelector({
</Select>
</FormControl>
</div>
{accounts.map((acc) => {
{accounts.map((acc, idx) => {
return (
<div onClick={onClick ? () => onClick(acc) : {}}>
<BalanceListItem
@ -510,6 +530,7 @@ export function AccountsSelector({
onClick={onClick}
publicKey={acc.publicKey}
expandable={false}
balanceInfo={balancesInfo ? balancesInfo[idx] : undefined}
/>
</div>
);

View File

@ -11,7 +11,7 @@ export const CLUSTERS = [
{
name: 'mainnet-beta-backup',
apiUrl: MAINNET_BACKUP_URL,
label: 'Mainnet Beta Backup',
label: 'Mainnet Beta Backup',
clusterSlug: 'mainnet-beta',
},
{
@ -31,26 +31,31 @@ export const CLUSTERS = [
apiUrl: 'http://localhost:8899',
label: null,
clusterSlug: 'localnet',
}
},
];
export function clusterForEndpoint(endpoint) {
return getClusters().find(({ apiUrl }) => apiUrl === endpoint);
}
const customClusterConfigKey = "customClusterConfig";
const customClusterConfigKey = 'customClusterConfig';
export function addCustomCluster(name, apiUrl) {
const stringifiedConfig = JSON.stringify({name: name, label: name, apiUrl: apiUrl, clusterSlug: null});
const stringifiedConfig = JSON.stringify({
name: name,
label: name,
apiUrl: apiUrl,
clusterSlug: null,
});
localStorage.setItem(customClusterConfigKey, stringifiedConfig);
}
export function customClusterExists() {
return !!localStorage.getItem(customClusterConfigKey)
return !!localStorage.getItem(customClusterConfigKey);
}
export function getClusters() {
const stringifiedConfig = localStorage.getItem(customClusterConfigKey);
const config = stringifiedConfig ? JSON.parse(stringifiedConfig) : null;
return config ? [...CLUSTERS, config] : CLUSTERS;
return config ? [...CLUSTERS, config] : CLUSTERS;
}

View File

@ -58,7 +58,9 @@ export function useIsProdNetwork() {
if (!context) {
throw new Error('Missing connection context');
}
return context.endpoint === MAINNET_URL || context.endpoint === MAINNET_BACKUP_URL;
return (
context.endpoint === MAINNET_URL || context.endpoint === MAINNET_BACKUP_URL
);
}
export function useSolanaExplorerUrlSuffix() {
@ -131,5 +133,5 @@ export async function getMultipleSolanaAccounts(
): Promise<
Array<null | { publicKey: PublicKey; account: AccountInfo<Buffer> }>
> {
return anchor.utils.rpc.getMultipleAccounts(connection, publicKeys);
return anchor.utils.rpc.getMultipleAccounts(connection, publicKeys);
}

View File

@ -16,27 +16,8 @@ import {
TOKEN_PROGRAM_ID,
transferChecked,
} from './instructions';
import { ACCOUNT_LAYOUT, getOwnedAccountsFilters, MINT_LAYOUT } from './data';
export async function getOwnedTokenAccounts(connection, publicKey) {
let filters = getOwnedAccountsFilters(publicKey);
let resp = await connection.getProgramAccounts(
TOKEN_PROGRAM_ID,
{
filters,
},
);
return resp
.map(({ pubkey, account: { data, executable, owner, lamports } }) => ({
publicKey: new PublicKey(pubkey),
accountInfo: {
data,
executable,
owner: new PublicKey(owner),
lamports,
},
}))
}
import { ACCOUNT_LAYOUT, MINT_LAYOUT } from './data';
export * from './rpc';
export async function signAndSendTransaction(
connection,

View File

@ -42,7 +42,10 @@ LAYOUT.addVariant(
LAYOUT.addVariant(9, BufferLayout.struct([]), 'closeAccount');
LAYOUT.addVariant(
12,
BufferLayout.struct([BufferLayout.nu64('amount'), BufferLayout.u8('decimals')]),
BufferLayout.struct([
BufferLayout.nu64('amount'),
BufferLayout.u8('decimals'),
]),
'transferChecked',
);
@ -96,7 +99,14 @@ export function initializeAccount({ account, mint, owner }) {
});
}
export function transferChecked({ source, mint, destination, amount, decimals, owner }) {
export function transferChecked({
source,
mint,
destination,
amount,
decimals,
owner,
}) {
let keys = [
{ pubkey: source, isSigner: false, isWritable: true },
{ pubkey: mint, isSigner: false, isWritable: false },

View File

@ -268,8 +268,7 @@ const POPULAR_TOKENS = {
tokenSymbol: 'SLRS',
mintAddress: 'SLRSSpSLUTP7okbCUBYStWCo1vUgyt775faPqz8HUMr',
tokenName: 'Solrise Finance',
icon:
'https://i.ibb.co/tqbTKTT/slrs-256.png',
icon: 'https://i.ibb.co/tqbTKTT/slrs-256.png',
},
{
tokenSymbol: 'SAMO',

187
src/utils/tokens/rpc.tsx Normal file
View File

@ -0,0 +1,187 @@
import { Connection, PublicKey, AccountInfo } from '@solana/web3.js';
import { parseTokenAccountData, parseMintData } from './data';
import { getTokenInfo, useTokenInfos } from './names';
import { useConnection, useConnectionConfig } from '../connection';
import { useAsyncData } from '../fetch-loop';
import { useState, useEffect } from 'react';
import tuple from 'immutable-tuple';
const TOKEN_PROGRAM_ID = new PublicKey(
'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
);
export const getOwnedTokenAccounts = async (
connection: Connection,
publicKey: string,
) => {
const { value } = await connection.getTokenAccountsByOwner(
new PublicKey(publicKey),
{
programId: TOKEN_PROGRAM_ID,
},
);
return value.map(({ pubkey, account }) => ({
publicKey: pubkey,
accountInfo: account,
}));
};
export const useMultipleAccountsInfo = (
publicKeys: PublicKey[] | null | undefined,
) => {
const connection = useConnection();
const fn = async () => {
if (!publicKeys) return;
const result = await connection.getMultipleAccountsInfo(publicKeys);
return result;
};
return useAsyncData(fn, tuple('useMultipleAccountsInfo', publicKeys?.length));
};
export const useMultipleMintInfo = (
accountInfo: (AccountInfo<Buffer> | null)[] | null | undefined,
) => {
const connection = useConnection();
const fn = async () => {
if (!accountInfo) return null;
// Can't be null
const keys = accountInfo.map((e) => new PublicKey(e!.data.slice(0, 32)));
const result = await connection.getMultipleAccountsInfo(keys);
return result;
};
return useAsyncData(fn, tuple('useMultipleMintInfo', accountInfo?.length));
};
interface BalanceInfo {
pubkey: PublicKey;
amount: number;
decimals: number;
mint: PublicKey;
owner: PublicKey | null;
tokenName: string;
tokenSymbol: string;
tokenLogoUri: string | null;
valid: boolean;
}
export const useSolBalance = (publicKey: PublicKey) => {
const connection = useConnection();
const fn = async () => {
const balance = await connection.getBalance(publicKey);
return {
pubkey: publicKey,
amount: balance,
decimals: 9,
mint: null,
owner: publicKey,
tokenName: 'SOL',
tokenSymbol: 'SOL',
valid: true,
};
};
return useAsyncData(fn, tuple('useSolBalance', publicKey?.toBase58()));
};
export const useMultipleSolBalance = (
publicKeys: PublicKey[] | null | undefined,
) => {
const connection = useConnection();
const fn = async () => {
if (!publicKeys) return;
const result = await connection.getMultipleAccountsInfo(publicKeys);
return result.map((e, idx) => {
return {
pubkey: publicKeys[idx],
amount: e?.lamports || 0,
decimals: 9,
mint: null,
owner: publicKeys[idx],
tokenName: 'SOL',
tokenSymbol: 'SOL',
valid: true,
};
});
};
return useAsyncData(fn, tuple('useMultipleSolBalance', publicKeys?.length));
};
export const useMultipleBalanceInfo = (
publicKeys: PublicKey[] | null | undefined,
) => {
const { endpoint } = useConnectionConfig();
const tokenInfos = useTokenInfos();
const [accountsInfo, accountsInfoLoaded] = useMultipleAccountsInfo(
publicKeys,
);
const [mintsInfo, mintsInfoLoaded] = useMultipleMintInfo(accountsInfo);
const [result, setResult] = useState<BalanceInfo[] | null>(null);
useEffect(() => {
const _result: BalanceInfo[] = [];
const fn = () => {
if (!publicKeys) return;
if (!accountsInfoLoaded || !mintsInfoLoaded) return;
if (!mintsInfo || !accountsInfo) return;
const len = accountsInfo.length;
for (let i = 0; i < len; i++) {
const mintInfo = mintsInfo[i];
const accountInfo = accountsInfo[i];
if (!mintInfo) continue;
if (!accountInfo) continue;
if (accountInfo.owner.equals(TOKEN_PROGRAM_ID)) {
const { mint, owner, amount } = parseTokenAccountData(
accountInfo.data,
);
const { symbol, logoUri, name } = getTokenInfo(
mint,
endpoint,
tokenInfos,
);
try {
let { decimals } = parseMintData(mintInfo.data);
_result.push({
pubkey: publicKeys[i],
amount,
decimals,
mint,
owner,
tokenName: name,
tokenSymbol: symbol,
tokenLogoUri: logoUri,
valid: true,
});
} catch (err) {
_result.push({
pubkey: publicKeys[i],
amount,
decimals: 0,
mint,
owner,
tokenName: 'Invalid',
tokenSymbol: 'INVALID',
tokenLogoUri: null,
valid: false,
});
}
}
}
setResult(_result);
};
fn();
}, [
accountsInfoLoaded,
mintsInfoLoaded,
accountsInfo?.length,
mintsInfo?.length,
]);
return result;
};

View File

@ -7,7 +7,7 @@ import { isExtension } from './utils';
import { useEffect, useState } from 'react';
export function normalizeMnemonic(mnemonic) {
return mnemonic.trim().split(/\s+/g).join(" ");
return mnemonic.trim().split(/\s+/g).join(' ');
}
export async function generateMnemonicAndSeed() {
@ -32,11 +32,14 @@ async function getExtensionUnlockedMnemonic() {
}
return new Promise((resolve) => {
chrome.runtime.sendMessage({
channel: 'sollet_extension_mnemonic_channel',
method: 'get',
}, resolve);
})
chrome.runtime.sendMessage(
{
channel: 'sollet_extension_mnemonic_channel',
method: 'get',
},
resolve,
);
});
}
const EMPTY_MNEMONIC = {
@ -55,7 +58,7 @@ let unlockedMnemonicAndSeed = (async () => {
}
const stored = JSON.parse(
(await getExtensionUnlockedMnemonic()) ||
sessionStorage.getItem('unlocked') ||
sessionStorage.getItem('unlocked') ||
localStorage.getItem('unlocked') ||
'null',
);
@ -77,13 +80,13 @@ export function getUnlockedMnemonicAndSeed() {
// returns [mnemonic, loading]
export function useUnlockedMnemonicAndSeed() {
const [currentUnlockedMnemonic, setCurrentUnlockedMnemonic] = useState(null);
useEffect(() => {
walletSeedChanged.addListener('change', setCurrentUnlockedMnemonic);
unlockedMnemonicAndSeed.then(setCurrentUnlockedMnemonic);
return () => {
walletSeedChanged.removeListener('change', setCurrentUnlockedMnemonic);
}
};
}, []);
return !currentUnlockedMnemonic

View File

@ -147,12 +147,9 @@ const WalletContext = React.createContext(null);
export function WalletProvider({ children }) {
useListener(walletSeedChanged, 'change');
const [{
mnemonic,
seed,
importsEncryptionKey,
derivationPath,
}] = useUnlockedMnemonicAndSeed();
const [
{ mnemonic, seed, importsEncryptionKey, derivationPath },
] = useUnlockedMnemonicAndSeed();
const { enqueueSnackbar } = useSnackbar();
const connection = useConnection();
const [wallet, setWallet] = useState();

315
yarn.lock
View File

@ -2,15 +2,6 @@
# yarn lockfile v1
"101@^1.0.0", "101@^1.2.0":
version "1.6.3"
resolved "https://registry.yarnpkg.com/101/-/101-1.6.3.tgz#9071196e60c47e4ce327075cf49c0ad79bd822fd"
integrity sha512-4dmQ45yY0Dx24Qxp+zAsNLlMF6tteCyfVzgbulvSyC7tCyd3V8sW76sS0tHq8NpcbXfWTKasfyfzU1Kd86oKzw==
dependencies:
clone "^1.0.2"
deep-eql "^0.1.3"
keypather "^1.10.2"
"@babel/code-frame@7.10.4", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
@ -1247,7 +1238,7 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
"@babel/runtime@^7.10.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
version "7.11.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
@ -1261,7 +1252,14 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2":
"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5":
version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2"
integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.9.2":
version "7.12.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
@ -2422,6 +2420,13 @@
dependencies:
buffer "~6.0.3"
"@solana/buffer-layout@^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz#75b1b11adc487234821c81dfae3119b73a5fd734"
integrity sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ==
dependencies:
buffer "~6.0.3"
"@solana/spl-token-registry@^0.2.102":
version "0.2.102"
resolved "https://registry.yarnpkg.com/@solana/spl-token-registry/-/spl-token-registry-0.2.102.tgz#e313a098474bb8b1fab5af74fce2644a046dbf01"
@ -2503,20 +2508,20 @@
tweetnacl "^1.0.0"
"@solana/web3.js@^1.17.0":
version "1.19.0"
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.19.0.tgz#b4f0153844a137d03a23b03e478138c1deada232"
integrity sha512-tZ+Bk0sD6xvyHas13eRTl0fOtWGHoKithNjIHHYeUbZWwdxOKdutfv14SuD1eqkBdoiQs3KFJvVUkj3M7zTVDg==
version "1.37.0"
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.37.0.tgz#167b5b5d4aedc151237d9230b6142da068b0af34"
integrity sha512-O2iCcgkGdi2FXwVLztPIZHcBuZXdhbVLavMsG+RdEyFGzFD0tQN1rOJ+Xb5eaexjqtgcqRN+Fyg3wAhLcHJbiA==
dependencies:
"@babel/runtime" "^7.12.5"
"@ethersproject/sha2" "^5.5.0"
"@solana/buffer-layout" "^4.0.0"
bn.js "^5.0.0"
borsh "^0.4.0"
borsh "^0.7.0"
bs58 "^4.0.1"
buffer "6.0.1"
buffer-layout "^1.2.0"
crypto-hash "^1.2.2"
cross-fetch "^3.1.4"
jayson "^3.4.4"
js-sha3 "^0.8.0"
node-fetch "^2.6.1"
rpc-websockets "^7.4.2"
secp256k1 "^4.0.2"
superstruct "^0.14.2"
@ -2786,9 +2791,9 @@
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
"@types/connect@^3.4.33":
version "3.4.33"
resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546"
integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==
version "3.4.35"
resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
dependencies:
"@types/node" "*"
@ -2811,9 +2816,9 @@
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/express-serve-static-core@^4.17.9":
version "4.17.13"
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.13.tgz#d9af025e925fc8b089be37423b8d1eac781be084"
integrity sha512-RgDi5a4nuzam073lRGKTUIaL3eF2+H7LJvJ8eUnCI0wA6SNjXc44DCmWNiTLs/AZ7QlsFWZiw/gTG3nSQGL0fA==
version "4.17.28"
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8"
integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@ -2882,9 +2887,9 @@
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
"@types/lodash@^4.14.159":
version "4.14.161"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.161.tgz#a21ca0777dabc6e4f44f3d07f37b765f54188b18"
integrity sha512-EP6O3Jkr7bXvZZSZYlsgt5DIjiGr0dXP1/jVEwVLTFgg0d+3lWVQkRavYVQszV7dYUwvg0B8R0MBDpcmXg7XIA==
version "4.14.181"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.181.tgz#d1d3740c379fda17ab175165ba04e2d03389385d"
integrity sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==
"@types/minimatch@*":
version "3.0.3"
@ -2892,9 +2897,9 @@
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*":
version "14.11.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.2.tgz#2de1ed6670439387da1c9f549a2ade2b0a799256"
integrity sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==
version "17.0.23"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da"
integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==
"@types/node@10.12.18":
version "10.12.18"
@ -2906,7 +2911,12 @@
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@^12.12.54", "@types/node@^12.12.6":
"@types/node@^12.12.54":
version "12.20.47"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.47.tgz#ca9237d51f2a2557419688511dab1c8daf475188"
integrity sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg==
"@types/node@^12.12.6":
version "12.12.62"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.62.tgz#733923d73669188d35950253dd18a21570085d2b"
integrity sha512-qAfo81CsD7yQIM9mVyh6B/U47li5g7cfpVQEDMfQeF8pSZVwzbhwU3crc0qG4DmpsebpJPR49AKOExQyJ05Cpg==
@ -2949,14 +2959,14 @@
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
"@types/qs@*":
version "6.9.5"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b"
integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==
version "6.9.7"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
"@types/range-parser@*":
version "1.2.3"
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
version "1.2.4"
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
"@types/react-copy-to-clipboard@^5.0.1":
version "5.0.1"
@ -3059,6 +3069,13 @@
"@types/webpack-sources" "*"
source-map "^0.6.0"
"@types/ws@^7.4.4":
version "7.4.7"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702"
integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==
dependencies:
"@types/node" "*"
"@types/yargs-parser@*":
version "15.0.0"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
@ -3669,18 +3686,6 @@ asn1@~0.2.3:
dependencies:
safer-buffer "~2.1.0"
assert-args@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/assert-args/-/assert-args-1.2.1.tgz#404103a1452a32fe77898811e54e590a8a9373bd"
integrity sha1-QEEDoUUqMv53iYgR5U5ZCoqTc70=
dependencies:
"101" "^1.2.0"
compound-subject "0.0.1"
debug "^2.2.0"
get-prototype-of "0.0.0"
is-capitalized "^1.0.0"
is-class "0.0.4"
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
@ -3943,7 +3948,14 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
base-x@^3.0.2, base-x@^3.0.8:
base-x@^3.0.2:
version "3.0.9"
resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320"
integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==
dependencies:
safe-buffer "^5.0.1"
base-x@^3.0.8:
version "3.0.8"
resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d"
integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==
@ -4075,21 +4087,26 @@ bn.js@4.11.6:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU=
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0:
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9:
version "4.11.9"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2:
version "5.1.3"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b"
integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==
bn.js@^4.4.0:
version "4.12.0"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
bn.js@^5.1.0, bn.js@^5.1.3, bn.js@^5.2.0:
bn.js@^5.0.0, bn.js@^5.1.0, bn.js@^5.1.3, bn.js@^5.2.0:
version "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.1.1, bn.js@^5.1.2:
version "5.1.3"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b"
integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==
body-parser@1.19.0, body-parser@^1.16.0:
version "1.19.0"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
@ -4142,6 +4159,15 @@ borsh@^0.6.0:
bs58 "^4.0.0"
text-encoding-utf-8 "^1.0.2"
borsh@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a"
integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==
dependencies:
bn.js "^5.2.0"
bs58 "^4.0.0"
text-encoding-utf-8 "^1.0.2"
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@ -4357,11 +4383,11 @@ buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0:
ieee754 "^1.1.4"
bufferutil@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.1.tgz#3a177e8e5819a1243fe16b63a199951a7ad8d4a7"
integrity sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA==
version "4.0.6"
resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433"
integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==
dependencies:
node-gyp-build "~3.7.0"
node-gyp-build "^4.3.0"
builtin-modules@^3.1.0:
version "3.1.0"
@ -4745,11 +4771,6 @@ clone-response@^1.0.2:
dependencies:
mimic-response "^1.0.0"
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
clsx@^1.0.4, clsx@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
@ -4871,11 +4892,6 @@ compose-function@3.0.3:
dependencies:
arity-n "^1.0.4"
compound-subject@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/compound-subject/-/compound-subject-0.0.1.tgz#271554698a15ae608b1dfcafd30b7ba1ea892c4b"
integrity sha1-JxVUaYoVrmCLHfyv0wt7oeqJLEs=
compressible@~2.0.16:
version "2.0.18"
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
@ -5525,13 +5541,6 @@ dedent@^0.7.0:
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
deep-eql@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
integrity sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=
dependencies:
type-detect "0.1.1"
deep-equal@^1.0.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
@ -5609,6 +5618,11 @@ del@^4.1.1:
pify "^4.0.1"
rimraf "^2.6.3"
delay@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d"
integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@ -5894,7 +5908,7 @@ electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.621:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.628.tgz#be5a14ddf3a455de876274c84de0926439a287a7"
integrity sha512-fmhO4YGo/kapy+xL9Eq/cZwDASaTHZu3psIFYo4yc+RY1LzbZr84xjKlDImDrlrmWhOxsrDi98nX097U/xK/cQ==
elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3:
elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.3:
version "6.5.3"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6"
integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==
@ -5907,7 +5921,7 @@ elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.0"
elliptic@6.5.4:
elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4:
version "6.5.4"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
@ -7169,11 +7183,6 @@ get-package-type@^0.1.0:
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
get-prototype-of@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/get-prototype-of/-/get-prototype-of-0.0.0.tgz#98772bd10716d16deb4b322516c469efca28ac44"
integrity sha1-mHcr0QcW0W3rSzIlFsRp78oorEQ=
get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
@ -7978,11 +7987,6 @@ is-callable@^1.1.4, is-callable@^1.2.0, is-callable@^1.2.2:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
is-capitalized@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-capitalized/-/is-capitalized-1.0.0.tgz#4c8464b4d91d3e4eeb44889dd2cd8f1b0ac4c136"
integrity sha1-TIRktNkdPk7rRIid0s2PGwrEwTY=
is-ci@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
@ -7990,11 +7994,6 @@ is-ci@^2.0.0:
dependencies:
ci-info "^2.0.0"
is-class@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/is-class/-/is-class-0.0.4.tgz#e057451705bb34e39e3e33598c93a9837296b736"
integrity sha1-4FdFFwW7NOOePjNZjJOpg3KWtzY=
is-color-stop@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
@ -8295,6 +8294,11 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
isomorphic-ws@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc"
integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@ -8367,21 +8371,25 @@ jayson@^3.0.1:
uuid "^3.4.0"
jayson@^3.4.4:
version "3.6.2"
resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.6.2.tgz#e551e25abf2efe333051a6ed88b10f08c5288f50"
integrity sha512-hbl+x2xH6FT7nckw+Pq3lKOIJaMBKOgNJEVfvloDBWB8iSfzn/1U2igj1A5rplqNMFN/OnnaTNw8qPKVmoq83Q==
version "3.6.6"
resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.6.6.tgz#189984f624e398f831bd2be8e8c80eb3abf764a1"
integrity sha512-f71uvrAWTtrwoww6MKcl9phQTC+56AopLyEenWvKVAIMz+q0oVGj6tenLZ7Z6UiPBkJtKLj4kt0tACllFQruGQ==
dependencies:
"@types/connect" "^3.4.33"
"@types/express-serve-static-core" "^4.17.9"
"@types/lodash" "^4.14.159"
"@types/node" "^12.12.54"
"@types/ws" "^7.4.4"
JSONStream "^1.3.5"
commander "^2.20.3"
delay "^5.0.0"
es6-promisify "^5.0.0"
eyes "^0.1.8"
isomorphic-ws "^4.0.1"
json-stringify-safe "^5.0.1"
lodash "^4.17.20"
uuid "^3.4.0"
uuid "^8.3.2"
ws "^7.4.5"
jest-changed-files@^26.6.2:
version "26.6.2"
@ -9067,13 +9075,6 @@ keccak@^3.0.0, keccak@^3.0.1:
node-addon-api "^2.0.0"
node-gyp-build "^4.2.0"
keypather@^1.10.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/keypather/-/keypather-1.10.2.tgz#e0449632d4b3e516f21cc014ce7c5644fddce614"
integrity sha1-4ESWMtSz5RbyHMAUznxWRP3c5hQ=
dependencies:
"101" "^1.0.0"
keyv@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
@ -9338,11 +9339,16 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5:
"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.5:
version "4.17.20"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
lodash@^4.17.20:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
loglevel@^1.6.8:
version "1.7.1"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
@ -9908,11 +9914,18 @@ node-addon-api@^2.0.0:
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32"
integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==
node-fetch@2.6.1, node-fetch@^2.2.0, node-fetch@^2.6.1:
node-fetch@2.6.1, node-fetch@^2.2.0:
version "2.6.1"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
node-fetch@^2.6.1:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies:
whatwg-url "^5.0.0"
node-forge@0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579"
@ -9923,15 +9936,10 @@ node-forge@^0.10.0:
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
node-gyp-build@^4.2.0:
version "4.2.3"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739"
integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==
node-gyp-build@~3.7.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.7.0.tgz#daa77a4f547b9aed3e2aac779eaf151afd60ec8d"
integrity sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w==
node-gyp-build@^4.2.0, node-gyp-build@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
node-int64@^0.4.0:
version "0.4.0"
@ -11949,7 +11957,12 @@ regenerator-runtime@^0.11.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7:
regenerator-runtime@^0.13.4:
version "0.13.9"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
regenerator-runtime@^0.13.7:
version "0.13.7"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
@ -12294,16 +12307,15 @@ rollup@^1.31.1:
acorn "^7.1.0"
rpc-websockets@^7.4.2:
version "7.4.6"
resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.4.6.tgz#a0053ad36e893774cdd0edb72ac577deaf34f247"
integrity sha512-vDGdyJv858O5ZIc7glov8pQDdFztOqujA7iNyrfPxw87ajHT5s8WQU4MLNEG8pTR/xzqOn06dYH7kef2hijInw==
version "7.4.17"
resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.4.17.tgz#f38845dd96db0442bff9e15fba9df781beb44cc0"
integrity sha512-eolVi/qlXS13viIUH9aqrde902wzSLAai0IjmOZSRefp5I3CSG/vCnD0c0fDSYCWuEyUoRL1BHQA8K1baEUyow==
dependencies:
"@babel/runtime" "^7.11.2"
assert-args "^1.2.1"
circular-json "^0.5.9"
eventemitter3 "^4.0.7"
uuid "^8.3.0"
ws "^7.3.1"
ws "^7.4.5"
optionalDependencies:
bufferutil "^4.0.1"
utf-8-validate "^5.0.2"
@ -12446,7 +12458,7 @@ scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1:
resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312"
integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==
secp256k1@^4.0.1, secp256k1@^4.0.2:
secp256k1@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1"
integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==
@ -12455,6 +12467,15 @@ secp256k1@^4.0.1, secp256k1@^4.0.2:
node-addon-api "^2.0.0"
node-gyp-build "^4.2.0"
secp256k1@^4.0.2:
version "4.0.3"
resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303"
integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==
dependencies:
elliptic "^6.5.4"
node-addon-api "^2.0.0"
node-gyp-build "^4.2.0"
select-hose@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
@ -13598,6 +13619,11 @@ tr46@^2.0.2:
dependencies:
punycode "^2.1.1"
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
traverse-chain@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1"
@ -13683,11 +13709,6 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
type-detect@0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
integrity sha1-C6XsKohWQORw6k6FBZcZANrFiCI=
type-detect@4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
@ -13940,11 +13961,11 @@ use@^3.1.0:
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
utf-8-validate@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.2.tgz#63cfbccd85dc1f2b66cf7a1d0eebc08ed056bfb3"
integrity sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw==
version "5.0.9"
resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3"
integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==
dependencies:
node-gyp-build "~3.7.0"
node-gyp-build "^4.3.0"
utf8@3.0.0:
version "3.0.0"
@ -14008,10 +14029,10 @@ uuid@^3.3.2, uuid@^3.4.0:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
uuid@^8.3.0:
version "8.3.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31"
integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==
uuid@^8.3.0, uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
v8-compile-cache@^2.0.3:
version "2.1.1"
@ -14097,8 +14118,10 @@ watchpack@^1.7.4:
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453"
integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
dependencies:
chokidar "^3.4.1"
graceful-fs "^4.1.2"
neo-async "^2.5.0"
watchpack-chokidar2 "^2.0.1"
optionalDependencies:
chokidar "^3.4.1"
watchpack-chokidar2 "^2.0.1"
@ -14349,6 +14372,11 @@ web3@^1.2.11:
web3-shh "1.3.0"
web3-utils "1.3.0"
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
webidl-conversions@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
@ -14553,6 +14581,14 @@ whatwg-mimetype@^2.3.0:
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
whatwg-url@^8.0.0:
version "8.4.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837"
@ -14819,7 +14855,7 @@ ws@^6.2.1:
dependencies:
async-limiter "~1.0.0"
ws@^7.0.0, ws@^7.3.1:
ws@^7.0.0:
version "7.3.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8"
integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==
@ -14829,6 +14865,11 @@ ws@^7.2.3:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb"
integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ==
ws@^7.4.5:
version "7.5.7"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
xhr-request-promise@^0.1.2:
version "0.1.3"
resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c"