This commit is contained in:
Armani Ferrante 2021-08-18 19:34:30 -07:00 committed by GitHub
parent 839449db0b
commit 637da6ae69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 494 additions and 224 deletions

View File

@ -12,6 +12,10 @@
"@project-serum/tokens": "0.0.7",
"@solana/spl-token": "^0.1.6",
"@solana/spl-token-registry": "^0.2.41",
"@solana/wallet-adapter-base": "^0.4.1",
"@solana/wallet-adapter-material-ui": "^0.7.1",
"@solana/wallet-adapter-react": "^0.7.1",
"@solana/wallet-adapter-wallets": "^0.6.1",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
@ -69,6 +73,7 @@
},
"devDependencies": {
"eslint-config-react-app": "^6.0.0",
"gh-pages": "^3.1.0"
"gh-pages": "^3.1.0",
"prettier": "^2.3.2"
}
}

View File

@ -1,30 +1,35 @@
import React, { useState, useEffect, ReactElement } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { useHistory } from 'react-router-dom';
import { useSnackbar } from 'notistack';
import AppBar from '@material-ui/core/AppBar';
import Toolbar from '@material-ui/core/Toolbar';
import Select from '@material-ui/core/Select';
import Menu from '@material-ui/core/Menu';
import Link from '@material-ui/core/Link';
import Typography from '@material-ui/core/Typography';
import MenuItem from '@material-ui/core/MenuItem';
import IconButton from '@material-ui/core/IconButton';
import ExitToAppIcon from '@material-ui/icons/ExitToApp';
import Button from '@material-ui/core/Button';
import PersonIcon from '@material-ui/icons/Person';
import BubbleChartIcon from '@material-ui/icons/BubbleChart';
import RefreshIcon from '@material-ui/icons/Refresh';
import CircularProgress from '@material-ui/core/CircularProgress';
import { refreshAccounts } from './BootstrapProvider';
import { networks } from '../../store/config';
import React, { useState, useEffect, ReactElement } from "react";
import { useSelector, useDispatch } from "react-redux";
import { useHistory } from "react-router-dom";
import { useSnackbar } from "notistack";
import AppBar from "@material-ui/core/AppBar";
import Toolbar from "@material-ui/core/Toolbar";
import Select from "@material-ui/core/Select";
import Menu from "@material-ui/core/Menu";
import Link from "@material-ui/core/Link";
import Typography from "@material-ui/core/Typography";
import IconButton from "@material-ui/core/IconButton";
import ExitToAppIcon from "@material-ui/icons/ExitToApp";
import Button from "@material-ui/core/Button";
import PersonIcon from "@material-ui/icons/Person";
import BubbleChartIcon from "@material-ui/icons/BubbleChart";
import RefreshIcon from "@material-ui/icons/Refresh";
import CircularProgress from "@material-ui/core/CircularProgress";
import {
WalletDialogProvider,
WalletDisconnectButton,
WalletMultiButton,
} from "@solana/wallet-adapter-material-ui";
import { Popper, MenuList, MenuItem, Grow } from "@material-ui/core";
import { refreshAccounts } from "./BootstrapProvider";
import { networks } from "../../store/config";
import {
State as StoreState,
ProgramAccount,
BootstrapState,
} from '../../store/reducer';
import { ActionType } from '../../store/actions';
import { useWallet } from './WalletProvider';
} from "../../store/reducer";
import { ActionType } from "../../store/actions";
import { useWallet } from "./WalletProvider";
type HeaderProps = {
isAppReady: boolean;
@ -49,25 +54,28 @@ export default function Header(props: HeaderProps) {
<AppBar
position="static"
style={{
background: '#ffffff',
color: '#272727',
boxShadow: 'none',
borderBottom: 'solid 1pt #ccc',
background: "#ffffff",
color: "#272727",
boxShadow: "none",
borderBottom: "solid 1pt #ccc",
}}
>
<Toolbar>
<div
style={{
display: 'flex',
justifyContent: 'space-between',
width: '100%',
display: "flex",
justifyContent: "space-between",
width: "100%",
}}
>
<div style={{ display: 'flex' }}>
<div style={{ display: "flex" }}>
<SerumLogoButton />
<BarButton label="Stake" hrefClient="/stake" />
<BarButton label="Lockup" hrefClient="/lockup" />
<BarButton label="Multisig" href="https://multisig.projectserum.com" />
<BarButton
label="Multisig"
href="https://multisig.projectserum.com"
/>
<BarButton label="Trade" href="https://dex.projectserum.com" />
{network.srmFaucet && (
<BarButton
@ -78,14 +86,14 @@ export default function Header(props: HeaderProps) {
</div>
<div
style={{
display: 'flex',
display: "flex",
}}
>
<div
onClick={() => {
setIsRefreshing(true);
enqueueSnackbar(`Refreshing`, {
variant: 'info',
variant: "info",
});
refreshAccounts({
dispatch,
@ -98,30 +106,30 @@ export default function Header(props: HeaderProps) {
setIsRefreshing(false);
closeSnackbar();
})
.catch(err => {
.catch((err) => {
setIsRefreshing(false);
closeSnackbar();
enqueueSnackbar(`There was a problem refreshing: ${err}`, {
variant: 'error',
variant: "error",
autoHideDuration: 2500,
});
});
}}
style={{
display: isAppReady ? 'block' : 'none',
justifyContent: 'center',
flexDirection: 'column',
marginRight: '10px',
display: isAppReady ? "block" : "none",
justifyContent: "center",
flexDirection: "column",
marginRight: "10px",
}}
>
{isRefreshing ? (
<div
style={{
marginTop: '8px',
padding: '10px',
marginTop: "8px",
padding: "10px",
}}
>
<CircularProgress style={{ width: '24px', height: '24px' }} />
<CircularProgress style={{ width: "24px", height: "24px" }} />
</div>
) : (
<div>
@ -132,12 +140,7 @@ export default function Header(props: HeaderProps) {
)}
</div>
<NetworkSelector />
<WalletConnectButton
style={{
display: isAppReady ? 'none' : '',
}}
/>
{isAppReady && <UserSelector />}
<WalletConnectButton />
</div>
</div>
</Toolbar>
@ -148,19 +151,19 @@ export default function Header(props: HeaderProps) {
function SerumLogoButton() {
const history = useHistory();
return (
<div style={{ display: 'flex' }} onClick={() => history.push('/')}>
<div style={{ display: "flex" }} onClick={() => history.push("/")}>
<Button color="inherit">
<div
style={{
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
display: "flex",
flexDirection: "column",
justifyContent: "center",
}}
>
<img
style={{
display: 'block',
height: '35px',
display: "block",
height: "35px",
}}
alt="Logo"
src="http://dex.projectserum.com/static/media/logo.49174c73.svg"
@ -183,26 +186,26 @@ function BarButton(props: BarButtonProps) {
return (
<div
style={{
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
display: "flex",
flexDirection: "column",
justifyContent: "center",
}}
onClick={() => hrefClient && history.push(hrefClient)}
>
<Link
style={{ color: 'inherit', textDecoration: 'none' }}
style={{ color: "inherit", textDecoration: "none" }}
href={href}
target="_blank"
>
<Button color="inherit">
<div
style={{
display: 'flex',
justifyContent: 'center',
flexDirection: 'column',
display: "flex",
justifyContent: "center",
flexDirection: "column",
}}
>
<Typography style={{ fontSize: '15px' }}>{label}</Typography>
<Typography style={{ fontSize: "15px" }}>{label}</Typography>
</div>
</Button>
</Link>
@ -224,24 +227,24 @@ function NetworkSelector() {
return (
<div
style={{
marginRight: '10px',
fontSize: '15px',
display: 'flex',
justifyContent: 'center',
flexDirection: 'column',
marginRight: "10px",
fontSize: "15px",
display: "flex",
justifyContent: "center",
flexDirection: "column",
}}
>
<Button
color="inherit"
onClick={e =>
onClick={(e) =>
setAnchorEl(
// @ts-ignore
e.currentTarget,
e.currentTarget
)
}
>
<BubbleChartIcon />
<Typography style={{ marginLeft: '5px', fontSize: '15px' }}>
<Typography style={{ marginLeft: "5px", fontSize: "15px" }}>
{network.label}
</Typography>
</Button>
@ -250,8 +253,8 @@ function NetworkSelector() {
open={Boolean(anchorEl)}
onClose={handleClose}
style={{
marginLeft: '12px',
color: 'white',
marginLeft: "12px",
color: "white",
}}
>
{Object.keys(networks).map((n: string) => (
@ -276,46 +279,7 @@ function NetworkSelector() {
);
}
function UserSelector() {
const { wallet } = useWallet();
return (
<Select
displayEmpty
renderValue={() => {
return (
<Typography style={{ overflow: 'hidden' }}>
{wallet.publicKey?.toString()}
</Typography>
);
}}
style={{
marginLeft: '12px',
width: '150px',
}}
onChange={e => {
if (e.target.value === 'disconnect') {
wallet.disconnect();
}
}}
>
<MenuItem value="disconnect">
<IconButton color="inherit">
<ExitToAppIcon />
<Typography style={{ marginLeft: '15px' }}>Disconnect</Typography>
</IconButton>
</MenuItem>
</Select>
);
}
type WalletConnectButtonProps = {
style?: any;
};
export function WalletConnectButton(
props: WalletConnectButtonProps,
): ReactElement {
export function WalletConnectButton(): ReactElement {
const { showDisconnect } = useSelector((state: StoreState) => {
return {
showDisconnect: state.common.isWalletConnected,
@ -327,9 +291,9 @@ export function WalletConnectButton(
// Wallet connection event listeners.
useEffect(() => {
wallet.on('disconnect', () => {
enqueueSnackbar('Disconnected from wallet', {
variant: 'info',
wallet.on("disconnect", () => {
enqueueSnackbar("Disconnected from wallet", {
variant: "info",
autoHideDuration: 2500,
});
dispatch({
@ -341,7 +305,7 @@ export function WalletConnectButton(
item: {},
});
});
wallet.on('connect', async () => {
wallet.on("connect", async () => {
dispatch({
type: ActionType.CommonWalletDidConnect,
item: {},
@ -353,27 +317,28 @@ export function WalletConnectButton(
});
}, [wallet, dispatch, enqueueSnackbar, lockupClient.provider.connection]);
return showDisconnect ? (
<Button
style={props.style}
color="inherit"
onClick={() => wallet.disconnect()}
>
<ExitToAppIcon />
<Typography style={{ marginLeft: '5px', fontSize: '15px' }}>
Disconnect
</Typography>
</Button>
) : (
<Button
style={props.style}
color="inherit"
onClick={() => wallet.connect()}
>
<PersonIcon />
<Typography style={{ marginLeft: '5px', fontSize: '15px' }}>
Connect wallet
</Typography>
</Button>
return (
<WalletDialogProvider>
<div
style={{
display: "flex",
justifyContent: "center",
flexDirection: "column",
}}
onClick={() => wallet.disconnect()}
>
<WalletDisconnectButton />
</div>
<div
onClick={() => wallet.connect()}
style={{
display: "flex",
justifyContent: "center",
flexDirection: "column",
}}
>
<WalletMultiButton />
</div>
</WalletDialogProvider>
);
}

View File

@ -1,17 +1,17 @@
import React, { useState } from 'react';
import { useSelector } from 'react-redux';
import BN from 'bn.js';
import Select from '@material-ui/core/Select';
import MenuItem from '@material-ui/core/MenuItem';
import { PublicKey } from '@solana/web3.js';
import { State as StoreState } from '../../store/reducer';
import { toDisplay } from '../../utils/tokens';
import React, { useState } from "react";
import { useSelector } from "react-redux";
import BN from "bn.js";
import Select from "@material-ui/core/Select";
import MenuItem from "@material-ui/core/MenuItem";
import { PublicKey } from "@solana/web3.js";
import { State as StoreState } from "../../store/reducer";
import { toDisplay } from "../../utils/tokens";
type Props = {
style?: any;
mint?: PublicKey | null;
decimals?: number;
variant?: 'outlined' | 'standard';
variant?: "outlined" | "standard";
onChange: (from: PublicKey, maxAmount: BN) => void;
};
@ -21,13 +21,12 @@ export default function OwnedTokenAccountsSelect(p: Props) {
if (!mint) {
return [];
}
console.log('state', state.common);
return state.common.ownedTokenAccounts.filter(
ota => ota.account.mint.toString() === mint.toString(),
(ota) => ota.account.mint.toString() === mint.toString()
);
});
const [fromAccount, setFromAccount] = useState('');
const [fromAccount, setFromAccount] = useState("");
return (
<Select
@ -35,35 +34,35 @@ export default function OwnedTokenAccountsSelect(p: Props) {
variant={variant}
fullWidth
value={fromAccount}
onChange={e => {
onChange={(e) => {
const pk = e.target.value as string;
setFromAccount(pk);
const pubkey = new PublicKey(pk);
const token = ownedTokenAccounts
.filter(ota => ota.publicKey.equals(pubkey))
.filter((ota) => ota.publicKey.equals(pubkey))
.pop();
onChange(pubkey, new BN(token!.account.amount));
}}
>
{ownedTokenAccounts.length === 0 ? (
<MenuItem value={''}>No token accounts found</MenuItem>
<MenuItem value={""}>No token accounts found</MenuItem>
) : (
ownedTokenAccounts.map(ownedTokenAccount => {
ownedTokenAccounts.map((ownedTokenAccount) => {
return (
<MenuItem value={ownedTokenAccount.publicKey.toString()}>
<div
style={{
width: '100%',
display: 'flex',
justifyContent: 'space-between',
overflow: 'hidden',
width: "100%",
display: "flex",
justifyContent: "space-between",
overflow: "hidden",
}}
>
<div>{`${ownedTokenAccount.publicKey}`}</div>
{decimals && (
<div style={{ float: 'right', color: '#ccc' }}>{`${toDisplay(
<div style={{ float: "right", color: "#ccc" }}>{`${toDisplay(
ownedTokenAccount.account.amount,
decimals ?? 0,
decimals ?? 0
)}`}</div>
)}
</div>

View File

@ -4,22 +4,33 @@ import React, {
ReactNode,
useMemo,
useContext,
} from 'react';
import { useSelector } from 'react-redux';
import { Connection, ConfirmOptions } from '@solana/web3.js';
// @ts-ignore
import Wallet from '@project-serum/sol-wallet-adapter';
import { Provider } from '@project-serum/common';
import { Program } from '@project-serum/anchor';
import { State as StoreState } from '../../store/reducer';
import LockupIdl from '../../idl/lockup';
import RegistryIdl from '../../idl/registry';
import MultisigIdl from '../../idl/multisig';
} from "react";
import { useSelector } from "react-redux";
import {
PublicKey,
Transaction,
Connection,
ConfirmOptions,
} from "@solana/web3.js";
import { Provider } from "@project-serum/common";
import { Program } from "@project-serum/anchor";
import { WalletProvider as SolanaWalletProvider } from "@solana/wallet-adapter-react";
import {
getPhantomWallet,
getSolflareWallet,
getSolletWallet,
} from "@solana/wallet-adapter-wallets";
import { State as StoreState } from "../../store/reducer";
import LockupIdl from "../../idl/lockup";
import RegistryIdl from "../../idl/registry";
import MultisigIdl from "../../idl/multisig";
import { useWallet as useSolana } from "@solana/wallet-adapter-react";
import { WalletAdapter } from "@solana/wallet-adapter-base";
export function useWallet(): WalletContextValues {
const w = useContext(WalletContext);
if (!w) {
throw new Error('Missing wallet context');
throw new Error("Missing wallet context");
}
return w;
}
@ -30,58 +41,65 @@ type WalletContextValues = {
wallet: Wallet;
lockupClient: Program;
registryClient: Program;
multisigClient: Program;
multisigClient: Program;
};
export default function WalletProvider(
props: PropsWithChildren<ReactNode>,
props: PropsWithChildren<ReactNode>
): ReactElement {
const wallets = useMemo(
() => [getPhantomWallet(), getSolflareWallet(), getSolletWallet()],
[]
);
return (
<SolanaWalletProvider wallets={wallets}>
<WalletProviderInner {...props} />
</SolanaWalletProvider>
);
}
function WalletProviderInner(props: PropsWithChildren<ReactNode>) {
const { wallet: solWallet } = useSolana();
const { walletProvider, network } = useSelector((state: StoreState) => {
return {
walletProvider: state.common.walletProvider,
network: state.common.network,
};
});
const { wallet, lockupClient, registryClient, multisigClient } =
useMemo(() => {
const opts: ConfirmOptions = {
preflightCommitment: "recent",
commitment: "recent",
};
const connection = new Connection(network.url, opts.preflightCommitment);
const wallet = new Wallet(solWallet ? solWallet.adapter() : undefined);
// @ts-ignore
const provider = new Provider(connection, wallet, opts);
const {
wallet,
lockupClient,
registryClient,
multisigClient,
} = useMemo(() => {
const opts: ConfirmOptions = {
preflightCommitment: 'recent',
commitment: 'recent',
};
const connection = new Connection(network.url, opts.preflightCommitment);
const wallet = new Wallet(walletProvider, network.url);
// @ts-ignore
const provider = new Provider(connection, wallet, opts);
const lockupClient = new Program(
LockupIdl,
network.lockupProgramId,
provider,
);
const registryClient = new Program(
RegistryIdl,
network.registryProgramId,
provider,
);
const multisigClient = new Program(
MultisigIdl,
network.multisigProgramId,
provider,
);
return {
wallet,
lockupClient,
registryClient,
multisigClient,
};
}, [walletProvider, network]);
const lockupClient = new Program(
LockupIdl,
network.lockupProgramId,
provider
);
const registryClient = new Program(
RegistryIdl,
network.registryProgramId,
provider
);
const multisigClient = new Program(
MultisigIdl,
network.multisigProgramId,
provider,
);
return {
wallet,
lockupClient,
registryClient,
multisigClient,
};
}, [solWallet, walletProvider, network]);
return (
<WalletContext.Provider
@ -91,3 +109,46 @@ export default function WalletProvider(
</WalletContext.Provider>
);
}
class Wallet {
get publicKey(): PublicKey | undefined {
// @ts-ignore
return this.adapter ? this.adapter.publicKey : undefined;
}
constructor(readonly adapter: WalletAdapter | undefined) {}
on(event: any, cb: any) {
if (this.adapter) {
return this.adapter.on(event, cb);
}
}
async connect() {
if (this.adapter) {
try {
await this.adapter.connect();
} catch (err) {
console.error(err);
}
}
}
disconnect() {
if (this.adapter) {
this.adapter.disconnect();
}
}
signTransaction(tx: Transaction) {
if (this.adapter) {
return this.adapter.signTransaction(tx);
}
}
signAllTransactions(txs: Transaction[]) {
if (this.adapter) {
return this.adapter.signAllTransactions(txs);
}
}
}

258
yarn.lock
View File

@ -1503,6 +1503,45 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
"@ledgerhq/devices@^6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-6.3.0.tgz#7ee59614198882311d1805912e368451527d05b2"
integrity sha512-DmVxqMAf3FhkpKjkbBCFVJ5DmesfplujeCLzFwO/zF5VGuwY7xxPqeSxlpusXJkqhEq+DbFzIDRWJYDf7rtXqg==
dependencies:
"@ledgerhq/errors" "^6.2.0"
"@ledgerhq/logs" "^6.2.0"
rxjs "6"
semver "^7.3.5"
"@ledgerhq/errors@^6.2.0":
version "6.2.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.2.0.tgz#7dc2b3bf6bdedccdaa1b97dccacfa912c4fc22f8"
integrity sha512-eO03x8HJmG60WtlrMuahigW/rwywFdcGzCnihta/MjkM8BD9A660cKVkyIuheCcpaB7UV/r+QsRl9abHbjjaag==
"@ledgerhq/hw-transport-webhid@^6.2.0":
version "6.4.1"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-6.4.1.tgz#81f0939c95154b47e00c7e95d6ccdfdbd3f883bc"
integrity sha512-usMuN/WpbReNk7/bKCCM9MKuqM2DlidJbgMFUqXpa1VAlDPI0M7lVhcutXTzILzgDNySMb0HLmRkio8zRXgRZg==
dependencies:
"@ledgerhq/devices" "^6.3.0"
"@ledgerhq/errors" "^6.2.0"
"@ledgerhq/hw-transport" "^6.3.0"
"@ledgerhq/logs" "^6.2.0"
"@ledgerhq/hw-transport@^6.2.0", "@ledgerhq/hw-transport@^6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.3.0.tgz#4fc966b1a68c991c0a6b5384841f99c4f8304ce9"
integrity sha512-kdnVrgmxrFtKaRdkoaQBEa02RXgLzEBiooYbxA65BGSJig3PGWDS9LrqNpzLTZM1RQlivd9NLBmfwU2ze4chWA==
dependencies:
"@ledgerhq/devices" "^6.3.0"
"@ledgerhq/errors" "^6.2.0"
events "^3.3.0"
"@ledgerhq/logs@^6.2.0":
version "6.2.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.2.0.tgz#9fb2d6f1811316697f7b3cc14607f6c608912419"
integrity sha512-SLyFyD7ElMhgKWPYedFGCT/ilcbGPgL5hXXYHxOM79Fs5fWi0zaUpt5oGqGMsOAAFaMa9/rbun0pokzPhEFz8A==
"@material-ui/core@^4.11.0":
version "4.12.1"
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.12.1.tgz#ac8f081498047aa02bb6ee70b77c5dad6a2a6e73"
@ -1664,7 +1703,7 @@
bn.js "^5.1.2"
buffer-layout "^1.2.0"
"@project-serum/sol-wallet-adapter@^0.2.0":
"@project-serum/sol-wallet-adapter@^0.2.0", "@project-serum/sol-wallet-adapter@^0.2.5":
version "0.2.5"
resolved "https://registry.yarnpkg.com/@project-serum/sol-wallet-adapter/-/sol-wallet-adapter-0.2.5.tgz#d949a8cc4d2f74e31e4f0205989703977689c76b"
integrity sha512-Y0XHe+FXXJ7P8XZtx3luAlatO0ge2LdrZUCmqMSzJf+K+fko+qTYIBSUuWwO7y/O4brIXVReR1mEUvF6QKDF2w==
@ -1745,6 +1784,80 @@
buffer-layout "^1.2.0"
dotenv "10.0.0"
"@solana/wallet-adapter-base@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-base/-/wallet-adapter-base-0.4.1.tgz#3264220c7eef5abaf7eca0e77cc51403f4f0fcf6"
integrity sha512-VkMB0g89FNnfBY3PSrZh6gULWvLcvAUrQtAzKpojYdkSxL/Cm2sH9JsLylXXhT0r1vOvEc72aR/otwrX5YHm2g==
dependencies:
eventemitter3 "^4.0.7"
"@solana/wallet-adapter-ledger@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-ledger/-/wallet-adapter-ledger-0.4.1.tgz#4ca71b8bab1e3c2aa90c9794891652447c40fc42"
integrity sha512-r9RgXwZNtqqy3v0hXvvWNh+pc2qT7JjAn1XMSuoa6S9SPET/X8Dut7GTuYqI3rb8WSJYUTtlxVD5qJq/amzLvA==
dependencies:
"@ledgerhq/hw-transport" "^6.2.0"
"@ledgerhq/hw-transport-webhid" "^6.2.0"
"@solana/wallet-adapter-material-ui@^0.7.1":
version "0.7.1"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-material-ui/-/wallet-adapter-material-ui-0.7.1.tgz#54592c35968ad8772efc47da212639771521625b"
integrity sha512-KL/rQRDFqOKUOW7O1EeWSCwEIkqTMmO6pBQ+kTt9CjSeHmbhzf8pp4hKuIj5+1txT4H/606USnJQza+xNeC0+Q==
"@solana/wallet-adapter-mathwallet@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-mathwallet/-/wallet-adapter-mathwallet-0.4.1.tgz#f5eb5eaef6874b25f50d1a412a9c39d04d5f3505"
integrity sha512-7HMp5E2ZRw2CJnj/q81/BaaXR/BdY+PuLRAXQk+JhAJTLqxKZXMYOy9IiTCgLfvrY82WVU6EbqlwgtC+ZwsGmw==
"@solana/wallet-adapter-phantom@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-phantom/-/wallet-adapter-phantom-0.4.1.tgz#db5f70aa1cf293314b447a902995099e7a3a1c16"
integrity sha512-2Y3625SyQi0Kz9crqzrYOJD76jfDlcFhUEfJYlWWc+aJTnKwLECd91qGoBmms40PyBuTmdB9eJWTYT0Ev0NAig==
"@solana/wallet-adapter-react@^0.7.1":
version "0.7.1"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-react/-/wallet-adapter-react-0.7.1.tgz#3b51028ff15a92f5cc6db990fbbc4d7b7db7f489"
integrity sha512-iqyMm7j5FNYOrn1hOYJtro07axEH7RQuMO93Q0gohiyu0zZEnNhbvch6e1EQMpfu2R+Z5qXJzEfbDT9X7G1aGg==
"@solana/wallet-adapter-solflare@^0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-solflare/-/wallet-adapter-solflare-0.1.0.tgz#28e8bb9572a1f5fb43396168252e27f13c0b369a"
integrity sha512-UR0puHUlVQZVZPpEaGXPJPj5A0qzCq69eEqbFIHtVXogYwIRpS5w84fakzBw34DobgnELX0ODb913jS+hbz2sw==
"@solana/wallet-adapter-sollet@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-sollet/-/wallet-adapter-sollet-0.4.1.tgz#e376ee2a2ad2167b6bde9285c1a176250284808a"
integrity sha512-GvGGtitK4nqK/1zGXM66+xrZAWX7rsdNofOT06g5iL87WyZ+oiTneA9VdJYH8UcCJSPU+J8th3Eou+TyvaYUaA==
dependencies:
"@project-serum/sol-wallet-adapter" "^0.2.5"
"@solana/wallet-adapter-solong@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-solong/-/wallet-adapter-solong-0.4.1.tgz#4adba03cf30cf4ac835813a1e1ebd48f1bc00129"
integrity sha512-rf2fDB2JY8mYwqjmN3hvh/5eOzHMG+7J8MMbntwR8EWBp7nEhDNz5QUZfeDuFW2VKc4Iqdm4WzB0WOMFtNlEhA==
"@solana/wallet-adapter-torus@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-torus/-/wallet-adapter-torus-0.5.0.tgz#79ad003ebdae61f838b6bf97055304fec798fecc"
integrity sha512-NP9WGBfxMwTLjvyi/WICffcGLvdnVymcNIStawGqzryWlrTgzeVF7v5GYVwyt0DLnZRbVy0+oJdIs6M2U0uHsQ==
dependencies:
"@toruslabs/openlogin" "^0.9.2"
"@toruslabs/openlogin-ed25519" "^0.9.2"
"@types/keccak" "^3.0.1"
"@solana/wallet-adapter-wallets@^0.6.1":
version "0.6.1"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-wallets/-/wallet-adapter-wallets-0.6.1.tgz#e1afb5b7ebeba460384e9be5a378e165b76d61d5"
integrity sha512-BoejyJXuIJt89nRzQJdTEjG26q0tIyw0Cr3woIyCWTEIylmfGO9Oiedj5LsK9IvhP+5PGaXf/IfMhgmLtjyn1w==
dependencies:
"@solana/wallet-adapter-ledger" "^0.4.1"
"@solana/wallet-adapter-mathwallet" "^0.4.1"
"@solana/wallet-adapter-phantom" "^0.4.1"
"@solana/wallet-adapter-solflare" "^0.1.0"
"@solana/wallet-adapter-sollet" "^0.4.1"
"@solana/wallet-adapter-solong" "^0.4.1"
"@solana/wallet-adapter-torus" "^0.5.0"
"@solana/web3.js@^0.90.0":
version "0.90.5"
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-0.90.5.tgz#5be7d78a19f0b5e01bf82c52e3cbf0bb72a38cfd"
@ -1948,6 +2061,69 @@
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
"@toruslabs/eccrypto@^1.1.7":
version "1.1.7"
resolved "https://registry.yarnpkg.com/@toruslabs/eccrypto/-/eccrypto-1.1.7.tgz#962954d6416f56ca2ba9bb9948cd08bd3b8cd0c4"
integrity sha512-zU4GnrH21yDY179fgp5Ovi4YjLdHy3WXM3QHCHAomYNxa03eAw2lxNR2bZ7kb698yk40s4WMrbnauukgabXH4Q==
dependencies:
acorn "^8.4.1"
elliptic "^6.5.4"
es6-promise "^4.2.8"
nan "^2.14.2"
optionalDependencies:
secp256k1 "^3.8.0"
"@toruslabs/http-helpers@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@toruslabs/http-helpers/-/http-helpers-1.4.0.tgz#6d2d4129d1126876b0616b7dffec3f4b339739b5"
integrity sha512-lPRhTWeChQunds2CGV70xvaoFMMebZAqZLpTYZjUJfziumQjT12w9HWLIzlRfGFVKoYUsUiZLpGHl0JEwHCcqg==
dependencies:
deepmerge "^4.2.2"
"@toruslabs/openlogin-ed25519@^0.9.2":
version "0.9.5"
resolved "https://registry.yarnpkg.com/@toruslabs/openlogin-ed25519/-/openlogin-ed25519-0.9.5.tgz#2435fdb45f0bd021ccdcbdb35fa0ed6615869427"
integrity sha512-zlwVR6nQD+mFVlmCEogmSGb0+fCKphfrIZ19XDTidlWoqSRFBDl/daditf33aTH58rrEmb2l7JKkwEYkxhdZJA==
dependencies:
"@toruslabs/tweetnacl-js" "^1.0.3"
"@toruslabs/openlogin-jrpc@^0.9.5":
version "0.9.5"
resolved "https://registry.yarnpkg.com/@toruslabs/openlogin-jrpc/-/openlogin-jrpc-0.9.5.tgz#6fb14e7908967ab610ae48e9204a617830e556e7"
integrity sha512-jLvOMhsCZlpFT3lA2PZzaUlXbtwYEXRIUDWVXIWWquuRI5zgH9Pg19HtQ2+i46ikEDl+KAiEoGKo5QuuY6iDXA==
dependencies:
"@toruslabs/openlogin-utils" "^0.9.5"
end-of-stream "^1.4.4"
fast-safe-stringify "^2.0.8"
once "^1.4.0"
pump "^3.0.0"
"@toruslabs/openlogin-utils@^0.9.5":
version "0.9.5"
resolved "https://registry.yarnpkg.com/@toruslabs/openlogin-utils/-/openlogin-utils-0.9.5.tgz#b334cab762e8b3e24224cc2b4ebd96812c05288d"
integrity sha512-1SvgRvxW+PARIppW/w9UxXgMtMTvnDucWznDhzJC8JlvdIObJBcmFkzL1gh2nctXEwJJeUIusXz/v6EsDCVkNA==
dependencies:
base64url "^3.0.1"
keccak "^3.0.1"
randombytes "^2.1.0"
"@toruslabs/openlogin@^0.9.2":
version "0.9.5"
resolved "https://registry.yarnpkg.com/@toruslabs/openlogin/-/openlogin-0.9.5.tgz#417abadc7796c584c043e59d5574687fe864eca6"
integrity sha512-wtYPpWQs+8BluA8NBowYzZ9COR1hi53W1QT43SDvlGy6JkMidyISK/waLpA5l2hTDGd2OFbcHaGVi41p9co6IQ==
dependencies:
"@toruslabs/eccrypto" "^1.1.7"
"@toruslabs/http-helpers" "^1.4.0"
"@toruslabs/openlogin-jrpc" "^0.9.5"
"@toruslabs/openlogin-utils" "^0.9.5"
lodash.merge "^4.6.2"
pump "^3.0.0"
"@toruslabs/tweetnacl-js@^1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@toruslabs/tweetnacl-js/-/tweetnacl-js-1.0.3.tgz#52abbcd2a6b77959ef6a98afedce77764d87226d"
integrity sha512-WQJYMTR/bkqvpk3DWOqRt5e24RhwJp9PXUoSj4zSthd3+fDhKYCI56YVMPNDKah1fCffOe9F3m8iZ5SgDZ+Csw==
"@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"
@ -2111,6 +2287,13 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818"
integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==
"@types/keccak@^3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@types/keccak/-/keccak-3.0.1.tgz#1dfad12395f32927cf409707534dd796d57aa84c"
integrity sha512-/MxAVmtyyeOvZ6dGf3ciLwFRuV5M8DRIyYNFGHYI6UyBW4/XqyO0LZw+JFMvaeY3cHItQAkELclBU1x5ank6mg==
dependencies:
"@types/node" "*"
"@types/lodash@^4.14.159":
version "4.14.171"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.171.tgz#f01b3a5fe3499e34b622c362a46a609fdb23573b"
@ -2645,7 +2828,7 @@ acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
acorn@^8.2.4:
acorn@^8.2.4, 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==
@ -3217,6 +3400,11 @@ base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1:
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
base64url@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d"
integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==
base@^0.11.1:
version "0.11.2"
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
@ -3267,12 +3455,19 @@ bindings@^1.5.0:
dependencies:
file-uri-to-path "1.0.0"
bip66@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22"
integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=
dependencies:
safe-buffer "^5.0.1"
bluebird@^3.5.5:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.8, bn.js@^4.11.9:
version "4.12.0"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
@ -3366,7 +3561,7 @@ browser-process-hrtime@^1.0.0:
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6:
version "1.2.0"
resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
@ -4909,6 +5104,15 @@ dotenv@8.2.0:
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
drbg.js@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b"
integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=
dependencies:
browserify-aes "^1.0.6"
create-hash "^1.1.2"
create-hmac "^1.1.4"
duplexer@^0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
@ -4939,7 +5143,7 @@ electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.723:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.772.tgz#fd1ed39f9f3149f62f581734e4f026e600369479"
integrity sha512-X/6VRCXWALzdX+RjCtBU6cyg8WZgoxm9YA02COmDOiNJEZ59WkQggDbWZ4t/giHi/3GS+cvdrP6gbLISANAGYA==
elliptic@^6.5.2, elliptic@^6.5.3:
elliptic@^6.5.2, elliptic@^6.5.3, 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==
@ -4992,7 +5196,7 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.4:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
@ -5095,7 +5299,7 @@ es6-iterator@2.0.3, es6-iterator@~2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
es6-promise@^4.0.3:
es6-promise@^4.0.3, es6-promise@^4.2.8:
version "4.2.8"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
@ -5427,7 +5631,7 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.7:
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
events@^3.0.0:
events@^3.0.0, events@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
@ -5613,6 +5817,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
fast-safe-stringify@^2.0.8:
version "2.0.8"
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f"
integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag==
fastq@^1.6.0:
version "1.11.1"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807"
@ -8356,6 +8565,11 @@ nan@^2.12.1:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
nan@^2.14.0, nan@^2.14.2:
version "2.15.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee"
integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==
nanoid@^3.1.23:
version "3.1.23"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
@ -9810,6 +10024,11 @@ prepend-http@^1.0.0:
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
prettier@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d"
integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==
pretty-bytes@^5.3.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
@ -10677,6 +10896,13 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
rxjs@6:
version "6.6.7"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
dependencies:
tslib "^1.9.0"
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@ -10777,6 +11003,20 @@ schema-utils@^3.0.0:
ajv "^6.12.5"
ajv-keywords "^3.5.2"
secp256k1@^3.8.0:
version "3.8.0"
resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d"
integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==
dependencies:
bindings "^1.5.0"
bip66 "^1.1.5"
bn.js "^4.11.8"
create-hash "^1.2.0"
drbg.js "^1.0.1"
elliptic "^6.5.2"
nan "^2.14.0"
safe-buffer "^5.1.2"
secp256k1@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1"
@ -11824,7 +12064,7 @@ tsconfig-paths@^3.9.0:
minimist "^1.2.0"
strip-bom "^3.0.0"
tslib@^1.8.1:
tslib@^1.8.1, tslib@^1.9.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==