Merge branch 'master' into armani/wormhole
This commit is contained in:
commit
d7a5e168b0
14
package.json
14
package.json
|
@ -3,13 +3,15 @@
|
|||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@ledgerhq/hw-transport-webusb": "^5.45.0",
|
||||
"@material-ui/core": "^4.11.2",
|
||||
"@ledgerhq/hw-transport-webhid": "^5.51.1",
|
||||
"@material-ui/core": "^4.11.4",
|
||||
"@material-ui/icons": "^4.11.2",
|
||||
"@project-serum/anchor": "^0.4.4",
|
||||
"@material-ui/lab": "^4.0.0-alpha.58",
|
||||
"@project-serum/anchor": "^0.7.0",
|
||||
"@project-serum/serum": "^0.13.33",
|
||||
"@solana/spl-token-registry": "^0.2.1",
|
||||
"@solana/web3.js": "^0.87.2",
|
||||
"@project-serum/swap-ui": "^0.1.0",
|
||||
"@solana/spl-token-registry": "^0.2.102",
|
||||
"@solana/web3.js": "^1.10.1",
|
||||
"@testing-library/jest-dom": "^5.11.6",
|
||||
"@testing-library/react": "^11.2.2",
|
||||
"@testing-library/user-event": "^12.6.0",
|
||||
|
@ -25,10 +27,12 @@
|
|||
"buffer-layout": "^1.2.0",
|
||||
"ed25519-hd-key": "^1.2.0",
|
||||
"immutable-tuple": "^0.4.10",
|
||||
"material-ui-popup-state": "^1.8.3",
|
||||
"mdi-material-ui": "^6.21.0",
|
||||
"notistack": "^1.0.2",
|
||||
"qrcode.react": "^1.0.0",
|
||||
"react": "^17.0.1",
|
||||
"react-async-hook": "^3.6.2",
|
||||
"react-dom": "^17.0.1",
|
||||
"react-scripts": "4.0.1",
|
||||
"tweetnacl": "^1.0.3",
|
||||
|
|
|
@ -15,6 +15,7 @@ import LoadingIndicator from './LoadingIndicator';
|
|||
import Collapse from '@material-ui/core/Collapse';
|
||||
import { Typography } from '@material-ui/core';
|
||||
import TokenInfoDialog from './TokenInfoDialog';
|
||||
import FtxPayDialog from './FtxPay/FtxPayDialog';
|
||||
import Link from '@material-ui/core/Link';
|
||||
import ExpandLess from '@material-ui/icons/ExpandLess';
|
||||
import ExpandMore from '@material-ui/icons/ExpandMore';
|
||||
|
@ -36,6 +37,7 @@ import SortIcon from '@material-ui/icons/Sort';
|
|||
import DeleteIcon from '@material-ui/icons/Delete';
|
||||
import AddTokenDialog from './AddTokenDialog';
|
||||
import ExportAccountDialog from './ExportAccountDialog';
|
||||
import ftxPayIcon from './FtxPay/icon.png';
|
||||
import SendDialog from './SendDialog';
|
||||
import DepositDialog from './DepositDialog';
|
||||
import {
|
||||
|
@ -54,6 +56,7 @@ import ListItemIcon from '@material-ui/core/ListItemIcon';
|
|||
import TokenIcon from './TokenIcon';
|
||||
import EditAccountNameDialog from './EditAccountNameDialog';
|
||||
import MergeAccountsDialog from './MergeAccountsDialog';
|
||||
import SwapButton from './SwapButton';
|
||||
|
||||
const balanceFormat = new Intl.NumberFormat(undefined, {
|
||||
minimumFractionDigits: 4,
|
||||
|
@ -103,6 +106,7 @@ export default function BalancesList() {
|
|||
false,
|
||||
);
|
||||
const [showMergeAccounts, setShowMergeAccounts] = useState(false);
|
||||
const [showFtxPayDialog, setShowFtxPayDialog] = useState(false);
|
||||
const [sortAccounts, setSortAccounts] = useState(SortAccounts.None);
|
||||
const { accounts, setAccountName } = useWalletSelector();
|
||||
const isExtensionWidth = useIsExtensionWidth();
|
||||
|
@ -211,6 +215,20 @@ export default function BalancesList() {
|
|||
</IconButton>
|
||||
</Tooltip>
|
||||
)}
|
||||
<Tooltip title="Deposit via FTX Pay" arrow>
|
||||
<IconButton onClick={() => setShowFtxPayDialog(true)}>
|
||||
<img
|
||||
title={'FTX Pay'}
|
||||
alt={'FTX Pay'}
|
||||
style={{
|
||||
width: 20,
|
||||
height: 20,
|
||||
}}
|
||||
src={ftxPayIcon}
|
||||
/>
|
||||
</IconButton>
|
||||
</Tooltip>
|
||||
<SwapButton />
|
||||
<Tooltip title="Merge Tokens" arrow>
|
||||
<IconButton
|
||||
size={iconSize}
|
||||
|
@ -275,6 +293,11 @@ export default function BalancesList() {
|
|||
open={showAddTokenDialog}
|
||||
onClose={() => setShowAddTokenDialog(false)}
|
||||
/>
|
||||
<FtxPayDialog
|
||||
open={showFtxPayDialog}
|
||||
publicKeys={publicKeys}
|
||||
onClose={() => setShowFtxPayDialog(false)}
|
||||
/>
|
||||
<EditAccountNameDialog
|
||||
open={showEditAccountNameDialog}
|
||||
onClose={() => setShowEditAccountNameDialog(false)}
|
||||
|
@ -665,7 +688,9 @@ function BalanceListItemDetails({
|
|||
>
|
||||
Send
|
||||
</Button>
|
||||
{localStorage.getItem('warning-close-account') && mint && amount === 0 ? (
|
||||
{localStorage.getItem('warning-close-account') &&
|
||||
mint &&
|
||||
amount === 0 ? (
|
||||
<Button
|
||||
variant="outlined"
|
||||
color="secondary"
|
||||
|
@ -676,7 +701,6 @@ function BalanceListItemDetails({
|
|||
Delete
|
||||
</Button>
|
||||
) : null}
|
||||
|
||||
</div>
|
||||
{additionalInfo}
|
||||
</div>
|
||||
|
|
|
@ -30,6 +30,8 @@ import Tab from '@material-ui/core/Tab';
|
|||
import { DialogContentText, Tooltip } from '@material-ui/core';
|
||||
import { EthFeeEstimate } from './EthFeeEstimate';
|
||||
|
||||
const DISABLED_MINTS = new Set(['ABE7D8RU1eHfCJWzHYZZeymeE8k9nPPXfqge2NQYyKoL']);
|
||||
|
||||
export default function DepositDialog({
|
||||
open,
|
||||
onClose,
|
||||
|
@ -63,7 +65,8 @@ export default function DepositDialog({
|
|||
indicatorColor="primary"
|
||||
>
|
||||
<Tab label={firstTab} />
|
||||
<Tab label={secondTab} />
|
||||
{(!DISABLED_MINTS.has(mint && mint.toString()) ||
|
||||
localStorage.getItem('sollet-private')) && <Tab label={secondTab} />}
|
||||
</Tabs>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,127 @@
|
|||
import React, { useState } from 'react';
|
||||
import DialogForm from '../DialogForm';
|
||||
import DialogContent from '@material-ui/core/DialogContent';
|
||||
import DialogContentText from '@material-ui/core/DialogContentText';
|
||||
import DialogTitle from '@material-ui/core/DialogTitle';
|
||||
import Button from '@material-ui/core/Button';
|
||||
import DialogActions from '@material-ui/core/DialogActions';
|
||||
import { useWalletSelector } from '../../utils/wallet';
|
||||
import { usePopularTokens } from '../../utils/tokens/names';
|
||||
import TokenIcon from '../TokenIcon';
|
||||
import Link from '@material-ui/core/Link';
|
||||
import { abbreviateAddress } from '../../utils/utils';
|
||||
import FormControl from '@material-ui/core/FormControl';
|
||||
import { useSolanaExplorerUrlSuffix } from '../../utils/connection';
|
||||
import { MenuItem, Select } from '@material-ui/core';
|
||||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
const useStyles = makeStyles((theme) => ({
|
||||
menuItem: {
|
||||
display: 'flex',
|
||||
flexDirection: 'row',
|
||||
alignItems: 'center',
|
||||
},
|
||||
tokenIcon: {
|
||||
marginRight: theme.spacing(1),
|
||||
},
|
||||
container: {
|
||||
display: 'flex',
|
||||
flexDirection: 'row',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
marginTop: theme.spacing(3),
|
||||
},
|
||||
selector: {
|
||||
marginRight: theme.spacing(3),
|
||||
},
|
||||
}));
|
||||
|
||||
export default function FtxPayDialog({ open, onClose }) {
|
||||
const { accounts } = useWalletSelector();
|
||||
const classes = useStyles();
|
||||
const popularTokens = usePopularTokens();
|
||||
const selectedAccount = accounts.find((a) => a.isSelected);
|
||||
const [coin, setCoin] = useState('SOL');
|
||||
const address = selectedAccount?.address?.toBase58();
|
||||
const urlSuffix = useSolanaExplorerUrlSuffix();
|
||||
const onSubmit = () => {
|
||||
const urlSearchParams = new URLSearchParams();
|
||||
urlSearchParams.append('address', address);
|
||||
urlSearchParams.append('coin', coin);
|
||||
urlSearchParams.append('wallet', 'sol');
|
||||
urlSearchParams.append('memoIsRequired', false);
|
||||
window.open(
|
||||
`https://ftx.com/pay/request?${urlSearchParams}`,
|
||||
'_blank',
|
||||
'resizable,width=450,height=780',
|
||||
);
|
||||
};
|
||||
return (
|
||||
<DialogForm open={open} onClose={onClose} fullWidth>
|
||||
<DialogTitle>
|
||||
Deposit funds with{' '}
|
||||
<Link target="_blank" href={'https://ftx.com/pay'}>
|
||||
FTX Pay
|
||||
</Link>
|
||||
</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.
|
||||
</DialogContentText>
|
||||
<DialogContentText>
|
||||
If you don't have an FTX account, it may take a few moments to get up.
|
||||
</DialogContentText>
|
||||
<div className={classes.container}>
|
||||
<FormControl variant="outlined" className={classes.selector}>
|
||||
<Select value={coin} onChange={(e) => setCoin(e.target.value)}>
|
||||
<MenuItem value={'SOL'}>
|
||||
<div className={classes.menuItem}>
|
||||
<TokenIcon
|
||||
url={null}
|
||||
mint={null}
|
||||
tokenName={'SOL'}
|
||||
size={30}
|
||||
className={classes.tokenIcon}
|
||||
/>
|
||||
<div>Solana SOL</div>
|
||||
</div>
|
||||
</MenuItem>
|
||||
{popularTokens
|
||||
.filter((tokenInfo) => tokenInfo.address && tokenInfo.symbol)
|
||||
.map((tokenInfo) => (
|
||||
<MenuItem value={tokenInfo.symbol} key={tokenInfo.symbol}>
|
||||
<div className={classes.menuItem}>
|
||||
<TokenIcon
|
||||
url={tokenInfo.logoUri}
|
||||
tokenName={tokenInfo.name}
|
||||
size={30}
|
||||
className={classes.tokenIcon}
|
||||
/>
|
||||
<Link
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
href={
|
||||
`https://explorer.solana.com/account/${tokenInfo.address}` +
|
||||
urlSuffix
|
||||
}
|
||||
>
|
||||
{tokenInfo.name ?? abbreviateAddress(tokenInfo.address)}{' '}
|
||||
{tokenInfo.symbol}
|
||||
</Link>
|
||||
</div>
|
||||
</MenuItem>
|
||||
))}
|
||||
</Select>
|
||||
</FormControl>
|
||||
<Button onClick={onSubmit} size="large" color="primary">
|
||||
Open FTX Pay
|
||||
</Button>
|
||||
</div>
|
||||
</DialogContent>
|
||||
|
||||
<DialogActions>
|
||||
<Button onClick={onClose}>Close</Button>
|
||||
</DialogActions>
|
||||
</DialogForm>
|
||||
);
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
|
@ -48,6 +48,10 @@ const WUSDT_MINT = new PublicKey(
|
|||
);
|
||||
|
||||
const USDT_MINT = new PublicKey('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB');
|
||||
const DISABLED_ERC20_MINTS = new Set([
|
||||
'kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6',
|
||||
'ABE7D8RU1eHfCJWzHYZZeymeE8k9nPPXfqge2NQYyKoL',
|
||||
])
|
||||
|
||||
export default function SendDialog({ open, onClose, publicKey, balanceInfo }) {
|
||||
const isProdNetwork = useIsProdNetwork();
|
||||
|
@ -89,17 +93,23 @@ export default function SendDialog({ open, onClose, publicKey, balanceInfo }) {
|
|||
<Tab label="ERC20 USDC" key="swap" value="swap" />,
|
||||
];
|
||||
} else {
|
||||
return [
|
||||
<Tab label={`SPL ${swapCoinInfo.ticker}`} key="spl" value="spl" />,
|
||||
wormholeTab,
|
||||
const erc20Tab = (
|
||||
<Tab
|
||||
label={`${swapCoinInfo.erc20Contract ? 'ERC20' : 'Native'} ${
|
||||
swapCoinInfo.ticker
|
||||
}`}
|
||||
key="swap"
|
||||
value="swap"
|
||||
/>,
|
||||
/>
|
||||
);
|
||||
const tabs = [
|
||||
<Tab label={`SPL ${swapCoinInfo.ticker}`} key="spl" value="spl" />,
|
||||
wormholeTab,
|
||||
];
|
||||
if (!DISABLED_ERC20_MINTS.has(mint.toString()) || localStorage.getItem('sollet-private')) {
|
||||
tabs.push(erc20Tab);
|
||||
}
|
||||
return tabs;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
import React from 'react';
|
||||
import { Tooltip, Popover, IconButton } from '@material-ui/core';
|
||||
import SwapHoriz from '@material-ui/icons/SwapHoriz';
|
||||
import PopupState, { bindTrigger, bindPopover } from 'material-ui-popup-state';
|
||||
import Swap from '@project-serum/swap-ui';
|
||||
import { Provider } from '@project-serum/anchor';
|
||||
import { Connection, TransactionSignature } from '@solana/web3.js';
|
||||
import { TokenListContainer } from '@solana/spl-token-registry';
|
||||
import { useTokenInfos } from '../utils/tokens/names';
|
||||
import { useSendTransaction } from '../utils/notifications';
|
||||
import { useWallet } from '../utils/wallet';
|
||||
import { useConnection } from '../utils/connection';
|
||||
|
||||
export default function SwapButton() {
|
||||
const [sendTransaction] = useSendTransaction();
|
||||
const connection = useConnection();
|
||||
const wallet = useWallet();
|
||||
const tokenInfos = useTokenInfos();
|
||||
const tokenList = tokenInfos && new TokenListContainer(tokenInfos);
|
||||
const provider = new NotifyingProvider(connection, wallet, sendTransaction);
|
||||
|
||||
return (
|
||||
tokenList && (
|
||||
<PopupState variant="popover">
|
||||
{(popupState) => (
|
||||
<div style={{ display: 'flex' }}>
|
||||
<Tooltip title="Swap Tokens">
|
||||
<IconButton {...bindTrigger(popupState)}>
|
||||
<SwapHoriz />
|
||||
</IconButton>
|
||||
</Tooltip>
|
||||
<Popover
|
||||
{...bindPopover(popupState)}
|
||||
anchorOrigin={{
|
||||
vertical: 'bottom',
|
||||
horizontal: 'left',
|
||||
}}
|
||||
transformOrigin={{
|
||||
vertical: 'top',
|
||||
horizontal: 'right',
|
||||
}}
|
||||
PaperProps={{ style: { borderRadius: '10px' } }}
|
||||
disableRestoreFocus
|
||||
keepMounted
|
||||
>
|
||||
<Swap provider={provider} tokenList={tokenList} />
|
||||
</Popover>
|
||||
</div>
|
||||
)}
|
||||
</PopupState>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
class NotifyingProvider extends Provider {
|
||||
constructor(
|
||||
connection: Connection,
|
||||
wallet: Wallet,
|
||||
sendTransaction: (Promise<TransactionSignature>, Function) => void,
|
||||
) {
|
||||
super(connection, wallet, {
|
||||
commitment: 'recent',
|
||||
});
|
||||
this.sendTransaction = sendTransaction;
|
||||
}
|
||||
|
||||
async send(
|
||||
tx: Transaction,
|
||||
signers?: Array<Signer | undefined>,
|
||||
opts?: ConfirmOptions,
|
||||
): Promise<TransactionSignature> {
|
||||
return new Promise((onSuccess, onError) => {
|
||||
this.sendTransaction(super.send(tx, signers, opts), {
|
||||
onSuccess,
|
||||
onError,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async sendAll(
|
||||
txs: Array<{ tx: Transaction, signers: Array<Signer | undefined> }>,
|
||||
opts?: ConfirmOptions,
|
||||
): Promise<Array<TransactionSignature>> {
|
||||
return new Promise(async (resolve, onError) => {
|
||||
let txSigs: Array<TransactionSignature> = [];
|
||||
for (const tx of txs) {
|
||||
txSigs.push(
|
||||
await new Promise((onSuccess) => {
|
||||
this.sendTransaction(super.send(tx.tx, tx.signers, opts), {
|
||||
onSuccess,
|
||||
onError,
|
||||
});
|
||||
}),
|
||||
);
|
||||
}
|
||||
resolve(txSigs);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
import React, { useState } from 'react';
|
||||
|
||||
export default function TokenIcon({ mint, url, tokenName, size = 20 }) {
|
||||
export default function TokenIcon({ mint, url, tokenName, size = 20, ...props }) {
|
||||
const [hasError, setHasError] = useState(false);
|
||||
|
||||
if (!url && mint === null) {
|
||||
|
@ -23,6 +23,7 @@ export default function TokenIcon({ mint, url, tokenName, size = 20 }) {
|
|||
borderRadius: size / 2,
|
||||
}}
|
||||
onError={() => setHasError(true)}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -99,9 +99,19 @@ function CreateWalletForm() {
|
|||
|
||||
function SeedWordsForm({ mnemonicAndSeed, goForward }) {
|
||||
const [confirmed, setConfirmed] = useState(false);
|
||||
const [downloaded, setDownloaded] = useState(false);
|
||||
const [showDialog, setShowDialog] = useState(false);
|
||||
const [seedCheck, setSeedCheck] = useState('');
|
||||
|
||||
const downloadMnemonic = (mnemonic) => {
|
||||
const url = window.URL.createObjectURL(new Blob([mnemonic]));
|
||||
const link = document.createElement('a');
|
||||
link.href = url;
|
||||
link.setAttribute('download', 'sollet.bak');
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Card>
|
||||
|
@ -149,9 +159,17 @@ function SeedWordsForm({ mnemonicAndSeed, goForward }) {
|
|||
}
|
||||
label="I have saved these words in a safe place."
|
||||
/>
|
||||
<Typography paragraph>
|
||||
<Button variant="contained" color="primary" onClick={() => {
|
||||
downloadMnemonic(mnemonicAndSeed?.mnemonic);
|
||||
setDownloaded(true);
|
||||
}}>
|
||||
Download Backup Mnemonic File (Required)
|
||||
</Button>
|
||||
</Typography>
|
||||
</CardContent>
|
||||
<CardActions style={{ justifyContent: 'flex-end' }}>
|
||||
<Button color="primary" disabled={!confirmed} onClick={() => setShowDialog(true)}>
|
||||
<Button color="primary" disabled={!confirmed || !downloaded} onClick={() => setShowDialog(true)}>
|
||||
Continue
|
||||
</Button>
|
||||
</CardActions>
|
||||
|
|
|
@ -6,8 +6,7 @@ import {
|
|||
PublicKey,
|
||||
} from '@solana/web3.js';
|
||||
import tuple from 'immutable-tuple';
|
||||
import { struct } from 'superstruct';
|
||||
import assert from 'assert';
|
||||
import * as anchor from '@project-serum/anchor';
|
||||
import { useLocalStorageState, useRefEqual } from './utils';
|
||||
import { refreshCache, setCache, useAsyncData } from './fetch-loop';
|
||||
|
||||
|
@ -18,7 +17,7 @@ const ConnectionContext = React.createContext<{
|
|||
} | null>(null);
|
||||
|
||||
export const MAINNET_URL = 'https://solana-api.projectserum.com';
|
||||
export const MAINNET_VIP_URL = 'https://vip-api.mainnet-beta.solana.com/';
|
||||
export const MAINNET_VIP_URL = 'https://vip-api-1e4b2d8l9r.mainnet-beta.solana.com';
|
||||
|
||||
export function ConnectionProvider({ children }) {
|
||||
const [endpoint, setEndpoint] = useLocalStorageState(
|
||||
|
@ -131,88 +130,5 @@ export async function getMultipleSolanaAccounts(
|
|||
): Promise<
|
||||
Array<null | { publicKey: PublicKey; account: AccountInfo<Buffer> }>
|
||||
> {
|
||||
const args = [publicKeys.map((k) => k.toBase58()), { commitment: 'recent' }];
|
||||
// @ts-ignore
|
||||
const unsafeRes = await connection._rpcRequest('getMultipleAccounts', args);
|
||||
const res = GetMultipleAccountsAndContextRpcResult(unsafeRes);
|
||||
if (res.error) {
|
||||
throw new Error(
|
||||
'failed to get info about accounts ' +
|
||||
publicKeys.map((k) => k.toBase58()).join(', ') +
|
||||
': ' +
|
||||
res.error.message,
|
||||
);
|
||||
}
|
||||
assert(typeof res.result !== 'undefined');
|
||||
const accounts: Array<null | {
|
||||
executable: any;
|
||||
owner: PublicKey;
|
||||
lamports: any;
|
||||
data: Buffer;
|
||||
}> = [];
|
||||
for (const account of res.result.value) {
|
||||
let value: {
|
||||
executable: any;
|
||||
owner: PublicKey;
|
||||
lamports: any;
|
||||
data: Buffer;
|
||||
} | null = null;
|
||||
if (res.result.value && account) {
|
||||
const { executable, owner, lamports, data } = account;
|
||||
assert(data[1] === 'base64');
|
||||
value = {
|
||||
executable,
|
||||
owner: new PublicKey(owner),
|
||||
lamports,
|
||||
data: Buffer.from(data[0], 'base64'),
|
||||
};
|
||||
}
|
||||
accounts.push(value);
|
||||
}
|
||||
return accounts.map((account, idx) => {
|
||||
return account === null
|
||||
? null
|
||||
: {
|
||||
publicKey: publicKeys[idx],
|
||||
account,
|
||||
};
|
||||
});
|
||||
return anchor.utils.getMultipleAccounts(connection, publicKeys);
|
||||
}
|
||||
|
||||
function jsonRpcResult(resultDescription: any) {
|
||||
const jsonRpcVersion = struct.literal('2.0');
|
||||
return struct.union([
|
||||
struct({
|
||||
jsonrpc: jsonRpcVersion,
|
||||
id: 'string',
|
||||
error: 'any',
|
||||
}),
|
||||
struct({
|
||||
jsonrpc: jsonRpcVersion,
|
||||
id: 'string',
|
||||
error: 'null?',
|
||||
result: resultDescription,
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
function jsonRpcResultAndContext(resultDescription: any) {
|
||||
return jsonRpcResult({
|
||||
context: struct({
|
||||
slot: 'number',
|
||||
}),
|
||||
value: resultDescription,
|
||||
});
|
||||
}
|
||||
|
||||
const AccountInfoResult = struct({
|
||||
executable: 'boolean',
|
||||
owner: 'string',
|
||||
lamports: 'number',
|
||||
data: 'any',
|
||||
rentEpoch: 'number?',
|
||||
});
|
||||
|
||||
export const GetMultipleAccountsAndContextRpcResult = jsonRpcResultAndContext(
|
||||
struct.array([struct.union(['null', AccountInfoResult])]),
|
||||
);
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
import React, { useContext, useState, useEffect } from 'react';
|
||||
import EventEmitter from 'events';
|
||||
import { useConnectionConfig, MAINNET_URL } from '../connection';
|
||||
import {
|
||||
useConnectionConfig,
|
||||
MAINNET_URL,
|
||||
MAINNET_VIP_URL,
|
||||
} from '../connection';
|
||||
import { useListener } from '../utils';
|
||||
import { clusterForEndpoint } from '../clusters';
|
||||
import { useCallback } from 'react';
|
||||
|
@ -274,12 +278,13 @@ export function TokenRegistryProvider(props) {
|
|||
const { endpoint } = useConnectionConfig();
|
||||
const [tokenInfos, setTokenInfos] = useState(null);
|
||||
useEffect(() => {
|
||||
if (endpoint !== MAINNET_VIP_URL && endpoint !== MAINNET_URL) return;
|
||||
const tokenListProvider = new TokenListProvider();
|
||||
tokenListProvider.resolve().then((tokenListContainer) => {
|
||||
const cluster = clusterForEndpoint(endpoint);
|
||||
|
||||
const filteredTokenListContainer = tokenListContainer?.filterByClusterSlug(
|
||||
cluster?.clusterSlug
|
||||
cluster?.clusterSlug,
|
||||
);
|
||||
const tokenInfos =
|
||||
tokenListContainer !== filteredTokenListContainer
|
||||
|
|
|
@ -26,6 +26,9 @@ const RAYDIUM_LP_PROGRAM_ID = new PublicKey(
|
|||
const MANGO_PROGRAM_ID = new PublicKey(
|
||||
'JD3bq9hGdy38PuWQ4h2YJpELmHVGPPfFSuFkpzAd9zfu',
|
||||
);
|
||||
const MANGO_PROGRAM_ID_V2 = new PublicKey(
|
||||
'5fNfvyp5czQVX77yoACa3JJVEhdRaWjPuazuWgjhTqEH',
|
||||
);
|
||||
|
||||
const marketCache = {};
|
||||
let marketCacheConnection = null;
|
||||
|
@ -133,7 +136,7 @@ const toInstruction = async (
|
|||
accountKeys,
|
||||
decodedInstruction,
|
||||
);
|
||||
} else if (programId.equals(MANGO_PROGRAM_ID)) {
|
||||
} else if (programId.equals(MANGO_PROGRAM_ID) || programId.equals(MANGO_PROGRAM_ID_V2)) {
|
||||
console.log('[' + index + '] Handled as mango markets instruction');
|
||||
let decodedInstruction = decodeMangoInstruction(decoded);
|
||||
return await handleMangoInstruction(
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { useCallback, useEffect, useRef, useState } from 'react';
|
||||
import { Account, Connection, PublicKey } from '@solana/web3.js';
|
||||
import { Keypair, Connection, PublicKey } from '@solana/web3.js';
|
||||
import { useMediaQuery } from '@material-ui/core';
|
||||
import * as bs58 from 'bs58';
|
||||
|
||||
|
@ -7,6 +7,7 @@ export async function sleep(ms: number) {
|
|||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
|
||||
export function useLocalStorageState<T>(
|
||||
key: string,
|
||||
defaultState: T,
|
||||
|
@ -101,10 +102,10 @@ export const isExtensionPopup = isExtension && window.opener;
|
|||
*/
|
||||
export const decodeAccount = (privateKey: string) => {
|
||||
try {
|
||||
return new Account(JSON.parse(privateKey));
|
||||
return Keypair.fromSecretKey(new Uint8Array(JSON.parse(privateKey)));
|
||||
} catch (_) {
|
||||
try {
|
||||
return new Account(bs58.decode(privateKey));
|
||||
return Keypair.fromSecretKey(new Uint8Array(bs58.decode(privateKey)));
|
||||
} catch (_) {
|
||||
return undefined;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import TransportWebUsb from '@ledgerhq/hw-transport-webusb';
|
||||
import TransportWebHid from '@ledgerhq/hw-transport-webhid';
|
||||
import {
|
||||
getPublicKey,
|
||||
solana_derivation_path,
|
||||
|
@ -9,6 +9,8 @@ import {
|
|||
import { DERIVATION_PATH } from './localStorage';
|
||||
import bs58 from 'bs58';
|
||||
|
||||
let TRANSPORT = null;
|
||||
|
||||
export class LedgerWalletProvider {
|
||||
constructor(args) {
|
||||
this.onDisconnect = (args && args.onDisconnect) || (() => {});
|
||||
|
@ -25,7 +27,10 @@ export class LedgerWalletProvider {
|
|||
}
|
||||
|
||||
init = async () => {
|
||||
this.transport = await TransportWebUsb.create();
|
||||
if (TRANSPORT === null) {
|
||||
TRANSPORT = await TransportWebHid.create();
|
||||
}
|
||||
this.transport = TRANSPORT;
|
||||
this.pubKey = await getPublicKey(this.transport, this.solanaDerivationPath);
|
||||
this.transport.on('disconnect', this.onDisconnect);
|
||||
this.listAddresses = async (walletCount) => {
|
||||
|
|
|
@ -41,6 +41,7 @@ function deriveSeed(seed, walletIndex, derivationPath, accountIndex) {
|
|||
export class LocalStorageWalletProvider {
|
||||
constructor(args) {
|
||||
this.account = args.account;
|
||||
this.publicKey = this.account.publicKey;
|
||||
}
|
||||
|
||||
init = async () => {
|
||||
|
@ -56,10 +57,6 @@ export class LocalStorageWalletProvider {
|
|||
return this;
|
||||
};
|
||||
|
||||
get publicKey() {
|
||||
return this.account.publicKey;
|
||||
}
|
||||
|
||||
signTransaction = async (transaction) => {
|
||||
transaction.partialSign(this.account);
|
||||
return transaction;
|
||||
|
|
442
yarn.lock
442
yarn.lock
|
@ -1254,6 +1254,13 @@
|
|||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.10.5":
|
||||
version "7.14.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6"
|
||||
integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
|
||||
|
@ -1493,6 +1500,11 @@
|
|||
"@ethersproject/rlp" "^5.0.3"
|
||||
"@ethersproject/signing-key" "^5.0.4"
|
||||
|
||||
"@fontsource/roboto@^4.3.0":
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-4.3.0.tgz#00f1cceca43eff85bb0e1d424311751ee41f6aa6"
|
||||
integrity sha512-WeFWCWYutLWyEtRmBhn+bLbW4/km0l+HhTpR8wWDxJLiGiMOhVLO/Z0q5w6l20ZOkWnf6Z1rN3o3W2HjvYN6Rg==
|
||||
|
||||
"@hapi/address@2.x.x":
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
|
||||
|
@ -1712,54 +1724,54 @@
|
|||
"@types/yargs" "^15.0.0"
|
||||
chalk "^4.0.0"
|
||||
|
||||
"@ledgerhq/devices@^5.45.0":
|
||||
version "5.45.0"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.45.0.tgz#f39f42c2526a98bde2cb42af111848783f2394b1"
|
||||
integrity sha512-wAtm4kvQ8pAdqdIpDa/OqU9rhtqI0sTdwDGGp4vthHiWNdBwqwPFcKmEki+mUgPCfRqn3SifyqaPqvFpvu+oWw==
|
||||
"@ledgerhq/devices@^5.51.1":
|
||||
version "5.51.1"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.51.1.tgz#d741a4a5d8f17c2f9d282fd27147e6fe1999edb7"
|
||||
integrity sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==
|
||||
dependencies:
|
||||
"@ledgerhq/errors" "^5.43.0"
|
||||
"@ledgerhq/logs" "^5.43.0"
|
||||
rxjs "^6.6.6"
|
||||
semver "^7.3.4"
|
||||
"@ledgerhq/errors" "^5.50.0"
|
||||
"@ledgerhq/logs" "^5.50.0"
|
||||
rxjs "6"
|
||||
semver "^7.3.5"
|
||||
|
||||
"@ledgerhq/errors@^5.43.0":
|
||||
version "5.43.0"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.43.0.tgz#6bec77ebc31c4333a7f8d13b1f3f4d739b859b75"
|
||||
integrity sha512-ZjKlUQbIn/DHXAefW3Y1VyDrlVhVqqGnXzrqbOXuDbZ2OAIfSe/A1mrlCbWt98jP/8EJQBuCzBOtnmpXIL/nYg==
|
||||
"@ledgerhq/errors@^5.50.0":
|
||||
version "5.50.0"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.50.0.tgz#e3a6834cb8c19346efca214c1af84ed28e69dad9"
|
||||
integrity sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==
|
||||
|
||||
"@ledgerhq/hw-transport-webusb@^5.45.0":
|
||||
version "5.45.0"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-5.45.0.tgz#27e9888733e9718132f84690ba45dfbef5c1ad0d"
|
||||
integrity sha512-YGiiy2/A8270tw4J2MYdBsYhHFveCytZwaieWA44QTjFgRBjmBoGtdBu9MAQyn2MMb+pXe5bkzDU6HacqrtQ/g==
|
||||
"@ledgerhq/hw-transport-webhid@^5.51.1":
|
||||
version "5.51.1"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-5.51.1.tgz#2050d65ef4ce179e8f43cd7245b811d8f05fdcfc"
|
||||
integrity sha512-w/2qSU0vwFY+D/4ucuYRViO7iS3Uuxmj9sI/Iiqkoiax9Xppb0/6H5m3ffKv6iPMmRYbgwCgXorqx4SLLSD8Kg==
|
||||
dependencies:
|
||||
"@ledgerhq/devices" "^5.45.0"
|
||||
"@ledgerhq/errors" "^5.43.0"
|
||||
"@ledgerhq/hw-transport" "^5.45.0"
|
||||
"@ledgerhq/logs" "^5.43.0"
|
||||
"@ledgerhq/devices" "^5.51.1"
|
||||
"@ledgerhq/errors" "^5.50.0"
|
||||
"@ledgerhq/hw-transport" "^5.51.1"
|
||||
"@ledgerhq/logs" "^5.50.0"
|
||||
|
||||
"@ledgerhq/hw-transport@^5.45.0":
|
||||
version "5.45.0"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.45.0.tgz#5d1e23d61d99664faf29609dbd4a5ca6d1f4c1bc"
|
||||
integrity sha512-YDkPQ2u5BJaMk2rJ8jcSucCv1JRUhmlaWUOvZ+Q7I8VNnvBM+N5yc9nqRX8TuHRlbPyiFm8xjEkPktVejuTAvQ==
|
||||
"@ledgerhq/hw-transport@^5.51.1":
|
||||
version "5.51.1"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz#8dd14a8e58cbee4df0c29eaeef983a79f5f22578"
|
||||
integrity sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==
|
||||
dependencies:
|
||||
"@ledgerhq/devices" "^5.45.0"
|
||||
"@ledgerhq/errors" "^5.43.0"
|
||||
"@ledgerhq/devices" "^5.51.1"
|
||||
"@ledgerhq/errors" "^5.50.0"
|
||||
events "^3.3.0"
|
||||
|
||||
"@ledgerhq/logs@^5.43.0":
|
||||
version "5.43.0"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.43.0.tgz#031bad4b8a3525c5e14210afde0bc09c79564026"
|
||||
integrity sha512-QWfQjea3ekh9ZU+JeL2tJC9cTKLZ/JrcS0JGatLejpRYxQajvnHvHfh0dbHOKXEaXfCskEPTZ3f1kzuts742GA==
|
||||
"@ledgerhq/logs@^5.50.0":
|
||||
version "5.50.0"
|
||||
resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186"
|
||||
integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==
|
||||
|
||||
"@material-ui/core@^4.11.2":
|
||||
version "4.11.2"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.2.tgz#f8276dfa40d88304e6ceb98962af73803d27d42d"
|
||||
integrity sha512-/D1+AQQeYX/WhT/FUk78UCRj8ch/RCglsQLYujYTIqPSJlwZHKcvHidNeVhODXeApojeXjkl0tWdk5C9ofwOkQ==
|
||||
"@material-ui/core@^4.11.4":
|
||||
version "4.11.4"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.4.tgz#4fb9fe5dec5dcf780b687e3a40cff78b2b9640a4"
|
||||
integrity sha512-oqb+lJ2Dl9HXI9orc6/aN8ZIAMkeThufA5iZELf2LQeBn2NtjVilF5D2w7e9RpntAzDb4jK5DsVhkfOvFY/8fg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.4.4"
|
||||
"@material-ui/styles" "^4.11.2"
|
||||
"@material-ui/system" "^4.11.2"
|
||||
"@material-ui/types" "^5.1.0"
|
||||
"@material-ui/styles" "^4.11.4"
|
||||
"@material-ui/system" "^4.11.3"
|
||||
"@material-ui/types" "5.1.0"
|
||||
"@material-ui/utils" "^4.11.2"
|
||||
"@types/react-transition-group" "^4.2.0"
|
||||
clsx "^1.0.4"
|
||||
|
@ -1776,43 +1788,61 @@
|
|||
dependencies:
|
||||
"@babel/runtime" "^7.4.4"
|
||||
|
||||
"@material-ui/styles@^4.11.2":
|
||||
version "4.11.2"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.2.tgz#e70558be3f41719e8c0d63c7a3c9ae163fdc84cb"
|
||||
integrity sha512-xbItf8zkfD3FuGoD9f2vlcyPf9jTEtj9YTJoNNV+NMWaSAHXgrW6geqRoo/IwBuMjqpwqsZhct13e2nUyU9Ljw==
|
||||
"@material-ui/lab@^4.0.0-alpha.58":
|
||||
version "4.0.0-alpha.58"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-4.0.0-alpha.58.tgz#c7ebb66f49863c5acbb20817163737caa299fafc"
|
||||
integrity sha512-GKHlJqLxUeHH3L3dGQ48ZavYrqGOTXkFkiEiuYMAnAvXAZP4rhMIqeHOPXSUQan4Bd8QnafDcpovOSLnadDmKw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.4.4"
|
||||
"@material-ui/utils" "^4.11.2"
|
||||
clsx "^1.0.4"
|
||||
prop-types "^15.7.2"
|
||||
react-is "^16.8.0 || ^17.0.0"
|
||||
|
||||
"@material-ui/styles@^4.11.4":
|
||||
version "4.11.4"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.4.tgz#eb9dfccfcc2d208243d986457dff025497afa00d"
|
||||
integrity sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.4.4"
|
||||
"@emotion/hash" "^0.8.0"
|
||||
"@material-ui/types" "^5.1.0"
|
||||
"@material-ui/types" "5.1.0"
|
||||
"@material-ui/utils" "^4.11.2"
|
||||
clsx "^1.0.4"
|
||||
csstype "^2.5.2"
|
||||
hoist-non-react-statics "^3.3.2"
|
||||
jss "^10.0.3"
|
||||
jss-plugin-camel-case "^10.0.3"
|
||||
jss-plugin-default-unit "^10.0.3"
|
||||
jss-plugin-global "^10.0.3"
|
||||
jss-plugin-nested "^10.0.3"
|
||||
jss-plugin-props-sort "^10.0.3"
|
||||
jss-plugin-rule-value-function "^10.0.3"
|
||||
jss-plugin-vendor-prefixer "^10.0.3"
|
||||
jss "^10.5.1"
|
||||
jss-plugin-camel-case "^10.5.1"
|
||||
jss-plugin-default-unit "^10.5.1"
|
||||
jss-plugin-global "^10.5.1"
|
||||
jss-plugin-nested "^10.5.1"
|
||||
jss-plugin-props-sort "^10.5.1"
|
||||
jss-plugin-rule-value-function "^10.5.1"
|
||||
jss-plugin-vendor-prefixer "^10.5.1"
|
||||
prop-types "^15.7.2"
|
||||
|
||||
"@material-ui/system@^4.11.2":
|
||||
version "4.11.2"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.11.2.tgz#7f0a754bba3673ed5fdbfa02fe438096c104b1f6"
|
||||
integrity sha512-BELFJEel5E+5DMiZb6XXT3peWRn6UixRvBtKwSxqntmD0+zwbbfCij6jtGwwdJhN1qX/aXrKu10zX31GBaeR7A==
|
||||
"@material-ui/system@^4.11.3":
|
||||
version "4.11.3"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.11.3.tgz#466bc14c9986798fd325665927c963eb47cc4143"
|
||||
integrity sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.4.4"
|
||||
"@material-ui/utils" "^4.11.2"
|
||||
csstype "^2.5.2"
|
||||
prop-types "^15.7.2"
|
||||
|
||||
"@material-ui/types@^5.1.0":
|
||||
"@material-ui/types@5.1.0":
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.1.0.tgz#efa1c7a0b0eaa4c7c87ac0390445f0f88b0d88f2"
|
||||
integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==
|
||||
|
||||
"@material-ui/types@^4.1.1":
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-4.1.1.tgz#b65e002d926089970a3271213a3ad7a21b17f02b"
|
||||
integrity sha512-AN+GZNXytX9yxGi0JOfxHrRTbhFybjUJ05rnsBVjcB+16e466Z0Xe5IxawuOayVZgTBNDxmPKo5j4V6OnMtaSQ==
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@material-ui/utils@^4.11.2":
|
||||
version "4.11.2"
|
||||
resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.11.2.tgz#f1aefa7e7dff2ebcb97d31de51aecab1bb57540a"
|
||||
|
@ -1862,17 +1892,13 @@
|
|||
schema-utils "^2.6.5"
|
||||
source-map "^0.7.3"
|
||||
|
||||
"@project-serum/anchor@^0.4.4":
|
||||
version "0.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.4.5.tgz#6c52b5722a3133d5f1df793bfbc1af5c07b0316d"
|
||||
integrity sha512-LxcV8yZae/sOBPZULDlVGqsIyFkjhmJKi2kx1id9EybECX5QqYQTMS69ozdH2e+5VEDjw0dCfRqBCMJ97ylmmQ==
|
||||
"@project-serum/anchor@^0.7.0":
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.7.0.tgz#ef48b8233c0fbe6763699451eccfc5402503b012"
|
||||
integrity sha512-SwY5OxJ6mYO3tTsYr3uQjlRX8tmb0P00u8T4ORWiYVz491fTcWIrGzqcrMHCvq9JFHMPvS6OR8BM0mfefx/DWw==
|
||||
dependencies:
|
||||
"@project-serum/borsh" "^0.1.1"
|
||||
"@solana/web3.js" "^1.2.0"
|
||||
"@types/bn.js" "^4.11.6"
|
||||
"@types/bs58" "^4.0.1"
|
||||
"@types/crypto-hash" "^1.1.2"
|
||||
"@types/pako" "^1.0.1"
|
||||
"@project-serum/borsh" "^0.2.2"
|
||||
"@solana/web3.js" "^1.11.0"
|
||||
base64-js "^1.5.1"
|
||||
bn.js "^5.1.2"
|
||||
bs58 "^4.0.1"
|
||||
|
@ -1884,11 +1910,12 @@
|
|||
js-sha256 "^0.9.0"
|
||||
pako "^2.0.3"
|
||||
snake-case "^3.0.4"
|
||||
toml "^3.0.0"
|
||||
|
||||
"@project-serum/borsh@^0.1.1":
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@project-serum/borsh/-/borsh-0.1.1.tgz#a810aad74e4b458fbd1ab63188f175bee765a8af"
|
||||
integrity sha512-bzCea8KTyc7CNkcMn0V2HW/FdU9pnJUcVRrwLqvJkYeo+mhkXE4AxxWErN3q+UxhEm8ypGIX1OYTKJaTJvj5cQ==
|
||||
"@project-serum/borsh@^0.2.2":
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@project-serum/borsh/-/borsh-0.2.2.tgz#63e558f2d6eb6ab79086bf499dea94da3182498f"
|
||||
integrity sha512-Ms+aWmGVW6bWd3b0+MWwoaYig2QD0F90h0uhr7AzY3dpCb5e2S6RsRW02vFTfa085pY2VLB7nTZNbFECQ1liTg==
|
||||
dependencies:
|
||||
bn.js "^5.1.2"
|
||||
buffer-layout "^1.2.0"
|
||||
|
@ -1902,6 +1929,35 @@
|
|||
bn.js "^5.1.2"
|
||||
buffer-layout "^1.2.0"
|
||||
|
||||
"@project-serum/serum@^0.13.34":
|
||||
version "0.13.34"
|
||||
resolved "https://registry.yarnpkg.com/@project-serum/serum/-/serum-0.13.34.tgz#c76477c27e14d975afa38b6c352b3abe92af6e52"
|
||||
integrity sha512-vOeusQUW8nDS339eb5lNB/H6UvLxGTmFiJuWKG31krlJmkD7TFgDEFaDP6grgs2Yr1HrJABnFohM242MG5FV3Q==
|
||||
dependencies:
|
||||
"@solana/web3.js" "^0.90.0"
|
||||
bn.js "^5.1.2"
|
||||
buffer-layout "^1.2.0"
|
||||
|
||||
"@project-serum/swap-ui@^0.1.0":
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@project-serum/swap-ui/-/swap-ui-0.1.0.tgz#893d31d86346b20b071dd514f9eaba9a55f3e5bb"
|
||||
integrity sha512-QOsrEQLu4Hxlr7CLS3wktPRajif2slTHaP3RIs+D7b2vaxUVOMMoWdWCCcc8OTLbEAbMhx+9gLz9k+rmfReB5A==
|
||||
dependencies:
|
||||
"@fontsource/roboto" "^4.3.0"
|
||||
"@project-serum/serum" "^0.13.34"
|
||||
"@project-serum/swap" "^0.1.0-alpha.20"
|
||||
"@solana/spl-token" "^0.1.4"
|
||||
|
||||
"@project-serum/swap@^0.1.0-alpha.20":
|
||||
version "0.1.0-alpha.20"
|
||||
resolved "https://registry.yarnpkg.com/@project-serum/swap/-/swap-0.1.0-alpha.20.tgz#0d5a57d2d6e507b3375cfb8965bb85fc7bdda9cf"
|
||||
integrity sha512-Q2schT1I/gSj3k9crlefxv9qdeWSPYPtF39Ga518cKlakdXt8FZgfmAgJs7YN389GkOo5FcNBSVvVO47H4mBAg==
|
||||
dependencies:
|
||||
"@project-serum/serum" "^0.13.34"
|
||||
"@solana/spl-token" "^0.1.3"
|
||||
base64-js "^1.5.1"
|
||||
bn.js "^5.1.2"
|
||||
|
||||
"@rollup/plugin-node-resolve@^7.1.1":
|
||||
version "7.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca"
|
||||
|
@ -1949,35 +2005,24 @@
|
|||
dependencies:
|
||||
"@sinonjs/commons" "^1.7.0"
|
||||
|
||||
"@solana/spl-token-registry@^0.2.1":
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@solana/spl-token-registry/-/spl-token-registry-0.2.1.tgz#79b3a8c3f3a12b7956b6ecc08052438972da5ce3"
|
||||
integrity sha512-JzvezgnPftowZXwAzUR7ywm16G6eWb9E7h3iUfeMmzZStBdqB/16TE8+x09yJoYtW5B6bTa80tELB7EfBzZ15w==
|
||||
"@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"
|
||||
integrity sha512-9x18nNNWwOwXWYA+l5IJJoEPsa3gtE067sxnNoZd2b1xNrJKvpm7V8PrtIMy5ASt8Dn8ILZvKaytZZ7PDohOlw==
|
||||
dependencies:
|
||||
cross-fetch "^3.0.6"
|
||||
cross-fetch "3.0.6"
|
||||
|
||||
"@solana/web3.js@^0.87.2":
|
||||
version "0.87.2"
|
||||
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-0.87.2.tgz#92c8d344695c6113d4e0eb3339117fbc6b22d0d2"
|
||||
integrity sha512-BtrOGfg7zUud/zLL/BxXV3E84qpXK1HknqncNQDNr8JlJ4tGc+Xsip5DzSMP/fNUJgbAWblHqWWJxFdN2mtO6A==
|
||||
"@solana/spl-token@^0.1.3", "@solana/spl-token@^0.1.4":
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.1.4.tgz#7fc6ba82a7fbb2b0907f7ffc87709488db83ed2a"
|
||||
integrity sha512-W8uSC4ysWVjbKK7lvsIHFxdMIkOCEoOm9tYY9VVpBlUIp4+K5bpPxHXUlxMiHfkKPWAxab6IGUn71VVLg8uq5Q==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
bn.js "^5.0.0"
|
||||
bs58 "^4.0.1"
|
||||
buffer "^6.0.1"
|
||||
"@babel/runtime" "^7.10.5"
|
||||
"@solana/web3.js" "^1.9.1"
|
||||
bn.js "^5.1.0"
|
||||
buffer "6.0.3"
|
||||
buffer-layout "^1.2.0"
|
||||
crypto-hash "^1.2.2"
|
||||
esdoc-inject-style-plugin "^1.0.0"
|
||||
jayson "^3.0.1"
|
||||
keccak "^3.0.1"
|
||||
mz "^2.7.0"
|
||||
node-fetch "^2.2.0"
|
||||
npm-run-all "^4.1.5"
|
||||
rpc-websockets "^7.4.2"
|
||||
secp256k1 "^4.0.2"
|
||||
superstruct "^0.8.3"
|
||||
tweetnacl "^1.0.0"
|
||||
ws "^7.0.0"
|
||||
dotenv "8.2.0"
|
||||
|
||||
"@solana/web3.js@^0.90.0":
|
||||
version "0.90.5"
|
||||
|
@ -2002,10 +2047,10 @@
|
|||
tweetnacl "^1.0.0"
|
||||
ws "^7.0.0"
|
||||
|
||||
"@solana/web3.js@^1.2.0":
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.9.0.tgz#1676215a2e89e2cb6e4694c5970c3c7c8ac12a19"
|
||||
integrity sha512-wal/itYezfH7ePMoBL6mtSa+J2jTkd7bOwlaen2jeJA+aHmQaLfP+XpI27Y+hPmSRChmHggVgl+/ayX4LX8sZg==
|
||||
"@solana/web3.js@^1.10.1", "@solana/web3.js@^1.11.0", "@solana/web3.js@^1.9.1":
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.11.0.tgz#1cc9a25381687c82e444ad0633f028e050a06753"
|
||||
integrity sha512-kmngWxntzp0HNhWInd7/3g2uqxdOrahvaHOyjilcRe+WCiC777gERz3+eIAbxIYx2zAZPjy02MZzLgoRHccZoQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
bn.js "^5.0.0"
|
||||
|
@ -2239,13 +2284,6 @@
|
|||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/bs58@^4.0.1":
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.1.tgz#3d51222aab067786d3bc3740a84a7f5a0effaa37"
|
||||
integrity sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA==
|
||||
dependencies:
|
||||
base-x "^3.0.6"
|
||||
|
||||
"@types/color-name@^1.1.1":
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
|
||||
|
@ -2258,13 +2296,6 @@
|
|||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/crypto-hash@^1.1.2":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/crypto-hash/-/crypto-hash-1.1.2.tgz#5a993deb0e6ba7c42f86eaa65d9bf563378f4569"
|
||||
integrity sha512-sOmi+4Go2XKodLV4+lfP+5QMQ+6ZYqRJhK8D/n6xsxIUvlerEulmU9S4Lo02pXCH3qPBeJXEy+g8ZERktDJLSg==
|
||||
dependencies:
|
||||
crypto-hash "*"
|
||||
|
||||
"@types/eslint@^7.2.4":
|
||||
version "7.2.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c"
|
||||
|
@ -2394,11 +2425,6 @@
|
|||
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
|
||||
integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
|
||||
|
||||
"@types/pako@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/pako/-/pako-1.0.1.tgz#33b237f3c9aff44d0f82fe63acffa4a365ef4a61"
|
||||
integrity sha512-GdZbRSJ3Cv5fiwT6I0SQ3ckeN2PWNqxd26W9Z2fCK1tGrrasGy4puvNFtnddqH9UJFMQYXxEuuB7B8UK+LLwSg==
|
||||
|
||||
"@types/parse-json@^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
|
||||
|
@ -3409,7 +3435,7 @@ 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.6, base-x@^3.0.8:
|
||||
base-x@^3.0.2, 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==
|
||||
|
@ -3546,6 +3572,11 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2:
|
|||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b"
|
||||
integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==
|
||||
|
||||
bn.js@^5.1.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==
|
||||
|
||||
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"
|
||||
|
@ -3768,6 +3799,14 @@ buffer@6.0.1:
|
|||
base64-js "^1.3.1"
|
||||
ieee754 "^1.2.1"
|
||||
|
||||
buffer@6.0.3, buffer@^6.0.1:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
|
||||
integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
|
||||
dependencies:
|
||||
base64-js "^1.3.1"
|
||||
ieee754 "^1.2.1"
|
||||
|
||||
buffer@^4.3.0:
|
||||
version "4.9.2"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
|
||||
|
@ -3785,14 +3824,6 @@ buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0:
|
|||
base64-js "^1.0.2"
|
||||
ieee754 "^1.1.4"
|
||||
|
||||
buffer@^6.0.1:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
|
||||
integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
|
||||
dependencies:
|
||||
base64-js "^1.3.1"
|
||||
ieee754 "^1.2.1"
|
||||
|
||||
bufferutil@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.1.tgz#3a177e8e5819a1243fe16b63a199951a7ad8d4a7"
|
||||
|
@ -4131,6 +4162,11 @@ class-utils@^0.3.5:
|
|||
isobject "^3.0.0"
|
||||
static-extend "^0.1.1"
|
||||
|
||||
classnames@^2.2.6:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e"
|
||||
integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==
|
||||
|
||||
clean-css@^4.2.3:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
|
||||
|
@ -4540,7 +4576,7 @@ create-hmac@1.1.7, create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
|
|||
safe-buffer "^5.0.1"
|
||||
sha.js "^2.4.8"
|
||||
|
||||
cross-fetch@^3.0.6:
|
||||
cross-fetch@3.0.6:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c"
|
||||
integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==
|
||||
|
@ -4584,7 +4620,7 @@ crypto-browserify@3.12.0, crypto-browserify@^3.11.0:
|
|||
randombytes "^2.0.0"
|
||||
randomfill "^1.0.3"
|
||||
|
||||
crypto-hash@*, crypto-hash@^1.2.2, crypto-hash@^1.3.0:
|
||||
crypto-hash@^1.2.2, crypto-hash@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247"
|
||||
integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==
|
||||
|
@ -7171,6 +7207,13 @@ imurmurhash@^0.1.4:
|
|||
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
|
||||
|
||||
indefinite-observable@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/indefinite-observable/-/indefinite-observable-2.0.1.tgz#574af29bfbc17eb5947793797bddc94c9d859400"
|
||||
integrity sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ==
|
||||
dependencies:
|
||||
symbol-observable "1.2.0"
|
||||
|
||||
indent-string@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
|
||||
|
@ -8311,73 +8354,74 @@ jsprim@^1.2.2:
|
|||
json-schema "0.2.3"
|
||||
verror "1.10.0"
|
||||
|
||||
jss-plugin-camel-case@^10.0.3:
|
||||
version "10.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.4.0.tgz#46c75ff7fd61c304984c21af5817823f0f501ceb"
|
||||
integrity sha512-9oDjsQ/AgdBbMyRjc06Kl3P8lDCSEts2vYZiPZfGAxbGCegqE4RnMob3mDaBby5H9vL9gWmyyImhLRWqIkRUCw==
|
||||
jss-plugin-camel-case@^10.5.1:
|
||||
version "10.6.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.6.0.tgz#93d2cd704bf0c4af70cc40fb52d74b8a2554b170"
|
||||
integrity sha512-JdLpA3aI/npwj3nDMKk308pvnhoSzkW3PXlbgHAzfx0yHWnPPVUjPhXFtLJzgKZge8lsfkUxvYSQ3X2OYIFU6A==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
hyphenate-style-name "^1.0.3"
|
||||
jss "10.4.0"
|
||||
jss "10.6.0"
|
||||
|
||||
jss-plugin-default-unit@^10.0.3:
|
||||
version "10.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.4.0.tgz#2b10f01269eaea7f36f0f5fd1cfbfcc76ed42854"
|
||||
integrity sha512-BYJ+Y3RUYiMEgmlcYMLqwbA49DcSWsGgHpVmEEllTC8MK5iJ7++pT9TnKkKBnNZZxTV75ycyFCR5xeLSOzVm4A==
|
||||
jss-plugin-default-unit@^10.5.1:
|
||||
version "10.6.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.6.0.tgz#af47972486819b375f0f3a9e0213403a84b5ef3b"
|
||||
integrity sha512-7y4cAScMHAxvslBK2JRK37ES9UT0YfTIXWgzUWD5euvR+JR3q+o8sQKzBw7GmkQRfZijrRJKNTiSt1PBsLI9/w==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
jss "10.4.0"
|
||||
jss "10.6.0"
|
||||
|
||||
jss-plugin-global@^10.0.3:
|
||||
version "10.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.4.0.tgz#19449425a94e4e74e113139b629fd44d3577f97d"
|
||||
integrity sha512-b8IHMJUmv29cidt3nI4bUI1+Mo5RZE37kqthaFpmxf5K7r2aAegGliAw4hXvA70ca6ckAoXMUl4SN/zxiRcRag==
|
||||
jss-plugin-global@^10.5.1:
|
||||
version "10.6.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.6.0.tgz#3e8011f760f399cbadcca7f10a485b729c50e3ed"
|
||||
integrity sha512-I3w7ji/UXPi3VuWrTCbHG9rVCgB4yoBQLehGDTmsnDfXQb3r1l3WIdcO8JFp9m0YMmyy2CU7UOV6oPI7/Tmu+w==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
jss "10.4.0"
|
||||
jss "10.6.0"
|
||||
|
||||
jss-plugin-nested@^10.0.3:
|
||||
version "10.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.4.0.tgz#017d0c02c0b6b454fd9d7d3fc33470a15eea9fd1"
|
||||
integrity sha512-cKgpeHIxAP0ygeWh+drpLbrxFiak6zzJ2toVRi/NmHbpkNaLjTLgePmOz5+67ln3qzJiPdXXJB1tbOyYKAP4Pw==
|
||||
jss-plugin-nested@^10.5.1:
|
||||
version "10.6.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.6.0.tgz#5f83c5c337d3b38004834e8426957715a0251641"
|
||||
integrity sha512-fOFQWgd98H89E6aJSNkEh2fAXquC9aZcAVjSw4q4RoQ9gU++emg18encR4AT4OOIFl4lQwt5nEyBBRn9V1Rk8g==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
jss "10.4.0"
|
||||
jss "10.6.0"
|
||||
tiny-warning "^1.0.2"
|
||||
|
||||
jss-plugin-props-sort@^10.0.3:
|
||||
version "10.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.4.0.tgz#7110bf0b6049cc2080b220b506532bf0b70c0e07"
|
||||
integrity sha512-j/t0R40/2fp+Nzt6GgHeUFnHVY2kPGF5drUVlgkcwYoHCgtBDOhTTsOfdaQFW6sHWfoQYgnGV4CXdjlPiRrzwA==
|
||||
jss-plugin-props-sort@^10.5.1:
|
||||
version "10.6.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.6.0.tgz#297879f35f9fe21196448579fee37bcde28ce6bc"
|
||||
integrity sha512-oMCe7hgho2FllNc60d9VAfdtMrZPo9n1Iu6RNa+3p9n0Bkvnv/XX5San8fTPujrTBScPqv9mOE0nWVvIaohNuw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
jss "10.4.0"
|
||||
jss "10.6.0"
|
||||
|
||||
jss-plugin-rule-value-function@^10.0.3:
|
||||
version "10.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.4.0.tgz#7cff4a91e84973536fa49b6ebbdbf7f339b01c82"
|
||||
integrity sha512-w8504Cdfu66+0SJoLkr6GUQlEb8keHg8ymtJXdVHWh0YvFxDG2l/nS93SI5Gfx0fV29dO6yUugXnKzDFJxrdFQ==
|
||||
jss-plugin-rule-value-function@^10.5.1:
|
||||
version "10.6.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.6.0.tgz#3c1a557236a139d0151e70a82c810ccce1c1c5ea"
|
||||
integrity sha512-TKFqhRTDHN1QrPTMYRlIQUOC2FFQb271+AbnetURKlGvRl/eWLswcgHQajwuxI464uZk91sPiTtdGi7r7XaWfA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
jss "10.4.0"
|
||||
jss "10.6.0"
|
||||
tiny-warning "^1.0.2"
|
||||
|
||||
jss-plugin-vendor-prefixer@^10.0.3:
|
||||
version "10.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.4.0.tgz#2a78f3c5d57d1e024fe7ad7c41de34d04e72ecc0"
|
||||
integrity sha512-DpF+/a+GU8hMh/948sBGnKSNfKkoHg2p9aRFUmyoyxgKjOeH9n74Ht3Yt8lOgdZsuWNJbPrvaa3U4PXKwxVpTQ==
|
||||
jss-plugin-vendor-prefixer@^10.5.1:
|
||||
version "10.6.0"
|
||||
resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.6.0.tgz#e1fcd499352846890c38085b11dbd7aa1c4f2c78"
|
||||
integrity sha512-doJ7MouBXT1lypLLctCwb4nJ6lDYqrTfVS3LtXgox42Xz0gXusXIIDboeh6UwnSmox90QpVnub7au8ybrb0krQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
css-vendor "^2.0.8"
|
||||
jss "10.4.0"
|
||||
jss "10.6.0"
|
||||
|
||||
jss@10.4.0, jss@^10.0.3:
|
||||
version "10.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jss/-/jss-10.4.0.tgz#473a6fbe42e85441020a07e9519dac1e8a2e79ca"
|
||||
integrity sha512-l7EwdwhsDishXzqTc3lbsbyZ83tlUl5L/Hb16pHCvZliA9lRDdNBZmHzeJHP0sxqD0t1mrMmMR8XroR12JBYzw==
|
||||
jss@10.6.0, jss@^10.5.1:
|
||||
version "10.6.0"
|
||||
resolved "https://registry.yarnpkg.com/jss/-/jss-10.6.0.tgz#d92ff9d0f214f65ca1718591b68e107be4774149"
|
||||
integrity sha512-n7SHdCozmxnzYGXBHe0NsO0eUf9TvsHVq2MXvi4JmTn3x5raynodDVE/9VQmBdWFyyj9HpHZ2B4xNZ7MMy7lkw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.3.1"
|
||||
csstype "^3.0.2"
|
||||
indefinite-observable "^2.0.1"
|
||||
is-in-browser "^1.1.3"
|
||||
tiny-warning "^1.0.2"
|
||||
|
||||
|
@ -8769,6 +8813,16 @@ map-visit@^1.0.0:
|
|||
dependencies:
|
||||
object-visit "^1.0.0"
|
||||
|
||||
material-ui-popup-state@^1.8.3:
|
||||
version "1.8.3"
|
||||
resolved "https://registry.yarnpkg.com/material-ui-popup-state/-/material-ui-popup-state-1.8.3.tgz#1e263682659c6b39af38c68c21ce4f316f2bb56e"
|
||||
integrity sha512-qvrX5snjXwn3rv5i3+w/T1WF3NHRPZ6KzB/gOzh9cxowEvlWV0HkCSbPmEDTnfQt6s6r964cMV987QZ50eNhxA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
"@material-ui/types" "^4.1.1"
|
||||
classnames "^2.2.6"
|
||||
prop-types "^15.7.2"
|
||||
|
||||
md5.js@^1.3.4:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
||||
|
@ -10993,6 +11047,11 @@ react-app-polyfill@^2.0.0:
|
|||
regenerator-runtime "^0.13.7"
|
||||
whatwg-fetch "^3.4.1"
|
||||
|
||||
react-async-hook@^3.6.2:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.yarnpkg.com/react-async-hook/-/react-async-hook-3.6.2.tgz#360018e5cd6ecc8841152a79875841b9e49dbdba"
|
||||
integrity sha512-RkwHCJ8V7I6umKZLHneapuTRWf+eO4LOj0qUwUDsSn27jrAOcW6ClbV3x22Z4hVxH9bA0zb7y+ozDJDJ8PnZoA==
|
||||
|
||||
react-dev-utils@^11.0.1:
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.1.tgz#30106c2055acfd6b047d2dc478a85c356e66fe45"
|
||||
|
@ -11024,13 +11083,13 @@ react-dev-utils@^11.0.1:
|
|||
text-table "0.2.0"
|
||||
|
||||
react-dom@^17.0.1:
|
||||
version "17.0.1"
|
||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6"
|
||||
integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==
|
||||
version "17.0.2"
|
||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
|
||||
integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
|
||||
dependencies:
|
||||
loose-envify "^1.1.0"
|
||||
object-assign "^4.1.1"
|
||||
scheduler "^0.20.1"
|
||||
scheduler "^0.20.2"
|
||||
|
||||
react-error-overlay@^6.0.8:
|
||||
version "6.0.8"
|
||||
|
@ -11129,9 +11188,9 @@ react-transition-group@^4.4.0:
|
|||
prop-types "^15.6.2"
|
||||
|
||||
react@^17.0.1:
|
||||
version "17.0.1"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127"
|
||||
integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==
|
||||
version "17.0.2"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
|
||||
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
|
||||
dependencies:
|
||||
loose-envify "^1.1.0"
|
||||
object-assign "^4.1.1"
|
||||
|
@ -11627,10 +11686,10 @@ run-queue@^1.0.0, run-queue@^1.0.3:
|
|||
dependencies:
|
||||
aproba "^1.1.1"
|
||||
|
||||
rxjs@^6.6.6:
|
||||
version "6.6.6"
|
||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70"
|
||||
integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==
|
||||
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"
|
||||
|
||||
|
@ -11699,10 +11758,10 @@ saxes@^5.0.0:
|
|||
dependencies:
|
||||
xmlchars "^2.2.0"
|
||||
|
||||
scheduler@^0.20.1:
|
||||
version "0.20.1"
|
||||
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c"
|
||||
integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==
|
||||
scheduler@^0.20.2:
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
|
||||
integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
|
||||
dependencies:
|
||||
loose-envify "^1.1.0"
|
||||
object-assign "^4.1.1"
|
||||
|
@ -11799,13 +11858,20 @@ semver@^6.0.0, semver@^6.3.0:
|
|||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||
|
||||
semver@^7.2.1, semver@^7.3.4:
|
||||
semver@^7.2.1:
|
||||
version "7.3.4"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
|
||||
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
semver@^7.3.5:
|
||||
version "7.3.5"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
|
||||
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
send@0.17.1:
|
||||
version "0.17.1"
|
||||
resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
|
||||
|
@ -12560,6 +12626,11 @@ swarm-js@^0.1.40:
|
|||
tar "^4.0.2"
|
||||
xhr-request "^1.0.1"
|
||||
|
||||
symbol-observable@1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
|
||||
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
|
||||
|
||||
symbol-tree@^3.2.4:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
|
||||
|
@ -12821,6 +12892,11 @@ toidentifier@1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
||||
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
||||
|
||||
toml@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee"
|
||||
integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==
|
||||
|
||||
tough-cookie@^2.3.3, tough-cookie@~2.5.0:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
||||
|
|
Loading…
Reference in New Issue