total balance displayed in wallet card. some work towards cryptocoin icons
This commit is contained in:
parent
d00dc19926
commit
f931505b58
@ -1,43 +1,9 @@
|
|||||||
from enum import Enum
|
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from bfxapi.rest.bfx_rest import BfxRest
|
from bfxapi.rest.bfx_rest import BfxRest
|
||||||
from retrying_async import retry
|
from retrying_async import retry
|
||||||
|
|
||||||
from bfxbot.currency import Symbol
|
from bfxbot.currency import Symbol, Balance, BalanceKind, OrderType, Direction
|
||||||
|
|
||||||
|
|
||||||
class BalanceKind(Enum):
|
|
||||||
EXCHANGE = "exchange",
|
|
||||||
MARGIN = "margin"
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def from_str(string: str):
|
|
||||||
string = string.lower()
|
|
||||||
|
|
||||||
if "margin" in string:
|
|
||||||
return BalanceKind.MARGIN
|
|
||||||
if "exchange" in string:
|
|
||||||
return BalanceKind.EXCHANGE
|
|
||||||
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
class Balance:
|
|
||||||
def __init__(self, currency: str, amount: int, kind: BalanceKind):
|
|
||||||
self.currency: str = currency
|
|
||||||
self.amount: int = amount
|
|
||||||
self.kind: BalanceKind = kind
|
|
||||||
|
|
||||||
|
|
||||||
class Direction(Enum):
|
|
||||||
UP = 1,
|
|
||||||
DOWN = -1
|
|
||||||
|
|
||||||
|
|
||||||
class OrderType(Enum):
|
|
||||||
EXCHANGE = "EXCHANGE",
|
|
||||||
MARGIN = "MARGIN"
|
|
||||||
|
|
||||||
|
|
||||||
class BfxWrapper(BfxRest):
|
class BfxWrapper(BfxRest):
|
||||||
@ -74,13 +40,26 @@ class BfxWrapper(BfxRest):
|
|||||||
return await super().get_trades(symbol, start, end)
|
return await super().get_trades(symbol, start, end)
|
||||||
|
|
||||||
@retry()
|
@retry()
|
||||||
async def post(self, endpoint: str, data: dict = {}, params=""):
|
async def post(self, endpoint: str, data=None, params=""):
|
||||||
|
if data is None:
|
||||||
|
data = {}
|
||||||
return await super().post(endpoint, data, params)
|
return await super().post(endpoint, data, params)
|
||||||
|
|
||||||
################################
|
################################
|
||||||
# NEW METHODS
|
# NEW METHODS
|
||||||
################################
|
################################
|
||||||
|
|
||||||
|
# Calculate the average execution price for Trading or rate for Margin funding.
|
||||||
|
async def calculate_execution_price(self, pair: str, amount: float):
|
||||||
|
api_path = "/calc/trade/avg"
|
||||||
|
|
||||||
|
res = await self.post(api_path, {
|
||||||
|
'symbol': pair,
|
||||||
|
'amount': amount
|
||||||
|
})
|
||||||
|
|
||||||
|
return res[0]
|
||||||
|
|
||||||
async def get_current_prices(self, symbol) -> (float, float, float):
|
async def get_current_prices(self, symbol) -> (float, float, float):
|
||||||
if isinstance(symbol, Symbol):
|
if isinstance(symbol, Symbol):
|
||||||
symbol = str(symbol)
|
symbol = str(symbol)
|
||||||
@ -107,7 +86,7 @@ class BfxWrapper(BfxRest):
|
|||||||
|
|
||||||
return balance
|
return balance
|
||||||
|
|
||||||
async def get_balances(self) -> List[Balance]:
|
async def get_balances(self, quote: str = "USD") -> List[Balance]:
|
||||||
balances = []
|
balances = []
|
||||||
wallets = await self.get_wallets()
|
wallets = await self.get_wallets()
|
||||||
|
|
||||||
@ -117,7 +96,9 @@ class BfxWrapper(BfxRest):
|
|||||||
if not kind:
|
if not kind:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
balances.append(Balance(w.currency, w.balance, kind))
|
execution_price = await self.calculate_execution_price(f"t{w.currency}{quote}", w.balance)
|
||||||
|
quote_equivalent = execution_price * w.balance
|
||||||
|
balances.append(Balance(w.currency, w.balance, kind, quote, quote_equivalent))
|
||||||
|
|
||||||
return balances
|
return balances
|
||||||
|
|
||||||
|
@ -2,6 +2,41 @@ import re
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class BalanceKind(Enum):
|
||||||
|
EXCHANGE = "exchange",
|
||||||
|
MARGIN = "margin"
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def from_str(string: str):
|
||||||
|
string = string.lower()
|
||||||
|
|
||||||
|
if "margin" in string:
|
||||||
|
return BalanceKind.MARGIN
|
||||||
|
if "exchange" in string:
|
||||||
|
return BalanceKind.EXCHANGE
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
class Balance:
|
||||||
|
def __init__(self, currency: str, amount: int, kind: BalanceKind, quote: str, quote_equivalent: float):
|
||||||
|
self.currency: str = currency
|
||||||
|
self.amount: int = amount
|
||||||
|
self.kind: BalanceKind = kind
|
||||||
|
self.quote: str = quote
|
||||||
|
self.quote_equivalent: float = quote_equivalent
|
||||||
|
|
||||||
|
|
||||||
|
class Direction(Enum):
|
||||||
|
UP = 1,
|
||||||
|
DOWN = -1
|
||||||
|
|
||||||
|
|
||||||
|
class OrderType(Enum):
|
||||||
|
EXCHANGE = "EXCHANGE",
|
||||||
|
MARGIN = "MARGIN"
|
||||||
|
|
||||||
|
|
||||||
class Symbol(Enum):
|
class Symbol(Enum):
|
||||||
XMR = "XMR"
|
XMR = "XMR"
|
||||||
BTC = "BTC"
|
BTC = "BTC"
|
||||||
@ -14,8 +49,8 @@ class Symbol(Enum):
|
|||||||
return self.__repr__()
|
return self.__repr__()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_str(str: str):
|
def from_str(string: str):
|
||||||
match = re.compile("t([a-zA-Z]+)USD").match(str)
|
match = re.compile("t([a-zA-Z]+)USD").match(string)
|
||||||
|
|
||||||
if not match:
|
if not match:
|
||||||
raise ValueError
|
raise ValueError
|
||||||
|
@ -29,7 +29,9 @@ def balance_to_json(balance: Balance):
|
|||||||
return {
|
return {
|
||||||
'currency': balance.currency,
|
'currency': balance.currency,
|
||||||
'amount': balance.amount,
|
'amount': balance.amount,
|
||||||
'kind': balance.kind.value
|
'kind': balance.kind.value,
|
||||||
|
'quote': balance.quote,
|
||||||
|
'quote_equivalent': balance.quote_equivalent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
import React, {Component} from 'react';
|
import React, {Component} from 'react';
|
||||||
import {Balance, EventName, FirstConnectMessage, NewTickMessage} from "../types";
|
import {Balance, EventName, FirstConnectMessage, NewTickMessage} from "../types";
|
||||||
import {socket} from "../index";
|
import {socket} from "../index";
|
||||||
|
import {SymbolAccessories} from "../utils";
|
||||||
|
|
||||||
export type CoinBalanceProps = {
|
export type CoinBalanceProps = {
|
||||||
name: string,
|
name: string,
|
||||||
amount: number,
|
amount: number,
|
||||||
short: string,
|
|
||||||
percentage?: number,
|
percentage?: number,
|
||||||
quote_equivalent: number,
|
quote_equivalent: number,
|
||||||
quote_symbol: string,
|
quote_symbol: string,
|
||||||
icon: JSX.Element,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class CoinBalance extends Component<CoinBalanceProps> {
|
class CoinBalance extends Component<CoinBalanceProps> {
|
||||||
@ -19,10 +18,19 @@ class CoinBalance extends Component<CoinBalanceProps> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
// do not print equivalent if this element is the quote itself
|
||||||
|
const quoteBlock = this.props.name != this.props.quote_symbol ? this.props.quote_symbol.concat(" ").concat(this.props.quote_equivalent.toLocaleString()) : null
|
||||||
|
|
||||||
|
// const accessory = SymbolAccessories.filter((accessory) => {
|
||||||
|
// return accessory.name == this.props.name
|
||||||
|
// })
|
||||||
|
//
|
||||||
|
// const icon = accessory.length > 0 ? accessory.pop().icon : null
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex-grow flex px-6 py-3 text-gray-800 items-center border-b -mx-4 align-middle">
|
<div className="flex-grow flex px-6 py-3 text-gray-800 items-center border-b -mx-4 align-middle">
|
||||||
<div className={"w-1/8"}>
|
<div className={"w-1/8"}>
|
||||||
{this.props.icon}
|
{/*{icon}*/}
|
||||||
</div>
|
</div>
|
||||||
<div className="w-2/5 xl:w-1/4 px-4 flex items-center">
|
<div className="w-2/5 xl:w-1/4 px-4 flex items-center">
|
||||||
<span className="text-lg">{this.props.name}</span>
|
<span className="text-lg">{this.props.name}</span>
|
||||||
@ -39,41 +47,63 @@ class CoinBalance extends Component<CoinBalanceProps> {
|
|||||||
<div className="flex w-3/5 md:w/12">
|
<div className="flex w-3/5 md:w/12">
|
||||||
<div className="w-1/2 px-4">
|
<div className="w-1/2 px-4">
|
||||||
<div className="text-right">
|
<div className="text-right">
|
||||||
{this.props.amount.toFixed(5)} {this.props.short}
|
{this.props.amount.toFixed(5)} {this.props.name}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="w-1/2 px-4 align-middle">
|
<div className="w-1/2 px-4 my-auto">
|
||||||
<div className="text-right text-gray-400">
|
<div className="text-right">
|
||||||
{this.props.quote_symbol} {this.props.quote_equivalent}
|
<div
|
||||||
|
className={"px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-200 text-gray-800"}>
|
||||||
|
{quoteBlock}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export type WalletCardProps = {
|
export type WalletCardProps = {
|
||||||
quote: string,
|
quote: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
export class WalletCard extends Component<{}, { balances: Array<Balance> }> {
|
export class WalletCard extends Component
|
||||||
|
<{}, { balances: Array<Balance> }> {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
}
|
}
|
||||||
|
|
||||||
state = {
|
state =
|
||||||
balances: []
|
{
|
||||||
|
balances: []
|
||||||
|
}
|
||||||
|
|
||||||
|
totalQuoteBalance() {
|
||||||
|
let total = 0
|
||||||
|
|
||||||
|
this.state.balances.forEach((balance: Balance) => {
|
||||||
|
if (balance.currency == balance.quote) {
|
||||||
|
total += balance.amount
|
||||||
|
} else {
|
||||||
|
total += balance.quote_equivalent
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return total
|
||||||
}
|
}
|
||||||
|
|
||||||
renderCoinBalances() {
|
renderCoinBalances() {
|
||||||
return (
|
return (
|
||||||
this.state.balances.map((balance: Balance) => {
|
this.state.balances.map((balance: Balance) => {
|
||||||
|
const percentage_amount = balance.quote == balance.currency ? balance.amount : balance.quote_equivalent;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<CoinBalance key={balance.currency.concat(balance.kind)} icon={null} name={balance.currency}
|
<CoinBalance key={balance.currency.concat(balance.kind)} name={balance.currency}
|
||||||
amount={balance.amount} short={""}
|
amount={balance.amount} quote_equivalent={balance.quote_equivalent}
|
||||||
quote_equivalent={0} percentage={0}
|
percentage={percentage_amount / this.totalQuoteBalance() * 100}
|
||||||
quote_symbol={"$"}/>
|
quote_symbol={balance.quote}/>
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
@ -97,14 +127,14 @@ export class WalletCard extends Component<{}, { balances: Array<Balance> }> {
|
|||||||
return (
|
return (
|
||||||
<div className="w-full mb-6 lg:mb-0 px-4 flex flex-col">
|
<div className="w-full mb-6 lg:mb-0 px-4 flex flex-col">
|
||||||
<div
|
<div
|
||||||
className="flex-grow flex flex-col bg-white border-t border-b sm:rounded sm:border shadow overflow-hidden">
|
className="flex-grow flex bg-white flex-col border-t border-b sm:rounded-lg sm:border shadow overflow-hidden">
|
||||||
<div className="border-b">
|
<div className="border-b bg-gray-50">
|
||||||
<div className="flex justify-between px-6 -mb-px">
|
<div className="flex justify-between px-6 -mb-px">
|
||||||
<h3 className="text-blue-700 py-4 font-normal text-lg">Your Wallets</h3>
|
<h3 className="text-blue-700 py-4 font-normal text-lg">Your Wallets</h3>
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<button type="button"
|
<button type="button"
|
||||||
className="appearance-none py-4 text-blue-700 border-b border-blue-dark mr-3">
|
className="appearance-none py-4 text-blue-700 border-b border-blue-dark mr-3">
|
||||||
List
|
Margin
|
||||||
</button>
|
</button>
|
||||||
<button type="button"
|
<button type="button"
|
||||||
className="appearance-none py-4 text-gray-600 border-b border-transparent hover:border-grey-dark">
|
className="appearance-none py-4 text-gray-600 border-b border-transparent hover:border-grey-dark">
|
||||||
@ -117,9 +147,9 @@ export class WalletCard extends Component<{}, { balances: Array<Balance> }> {
|
|||||||
{this.renderCoinBalances()}
|
{this.renderCoinBalances()}
|
||||||
|
|
||||||
<div className="px-6 py-4">
|
<div className="px-6 py-4">
|
||||||
{/*<div className="text-center text-gray-400">*/}
|
<div className="text-center text-gray-400">
|
||||||
{/* Total Balance ≈ {this.props}{this.state.total_balance.toFixed(2)}*/}
|
Total Balance ≈ USD {this.totalQuoteBalance().toLocaleString()}
|
||||||
{/*</div>*/}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,7 +8,9 @@ export type Balance = {
|
|||||||
currency: string,
|
currency: string,
|
||||||
amount: number,
|
amount: number,
|
||||||
// exchange / margin
|
// exchange / margin
|
||||||
kind: string
|
kind: string,
|
||||||
|
quote: string,
|
||||||
|
quote_equivalent: number,
|
||||||
}
|
}
|
||||||
|
|
||||||
export type CurrencyPair = {
|
export type CurrencyPair = {
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
import {CurrencyPair} from "./types";
|
import {CurrencyPair} from "./types";
|
||||||
|
// import * as Icon from 'react-cryptocoins'
|
||||||
|
import {Btc, Eth, Xmr} from 'react-cryptocoins';
|
||||||
|
|
||||||
export function symbolToPair(symbol: string): CurrencyPair {
|
export function symbolToPair(symbol: string): CurrencyPair {
|
||||||
const symbol_regex = "t(?<base>[a-zA-Z]{3})(?<quote>[a-zA-Z]{3})"
|
const symbol_regex = "t(?<base>[a-zA-Z]{3})(?<quote>[a-zA-Z]{3})"
|
||||||
@ -10,3 +12,30 @@ export function symbolToPair(symbol: string): CurrencyPair {
|
|||||||
quote: match.groups.quote
|
quote: match.groups.quote
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type SymbolAccesory = {
|
||||||
|
name: string,
|
||||||
|
icon: React.Component,
|
||||||
|
color: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SymbolAccessories: Array<SymbolAccesory> = [
|
||||||
|
{
|
||||||
|
name: "BTC",
|
||||||
|
icon: Btc,
|
||||||
|
color: "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "XMR",
|
||||||
|
icon: Xmr,
|
||||||
|
color: "yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "ETH",
|
||||||
|
icon: Eth,
|
||||||
|
color: "yellow"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
157
websrc/yarn.lock
157
websrc/yarn.lock
@ -1092,6 +1092,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.11.tgz#2521cc86f69d15c5b90664e4829d84566052c1cf"
|
resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.11.tgz#2521cc86f69d15c5b90664e4829d84566052c1cf"
|
||||||
integrity sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw==
|
integrity sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw==
|
||||||
|
|
||||||
|
"@types/component-emitter@^1.2.10":
|
||||||
|
version "1.2.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.10.tgz#ef5b1589b9f16544642e473db5ea5639107ef3ea"
|
||||||
|
integrity sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==
|
||||||
|
|
||||||
"@types/d3@^3":
|
"@types/d3@^3":
|
||||||
version "3.5.44"
|
version "3.5.44"
|
||||||
resolved "https://registry.yarnpkg.com/@types/d3/-/d3-3.5.44.tgz#28635f8bb9adf1cef5bbef2b06778174a9d34383"
|
resolved "https://registry.yarnpkg.com/@types/d3/-/d3-3.5.44.tgz#28635f8bb9adf1cef5bbef2b06778174a9d34383"
|
||||||
@ -1232,11 +1237,6 @@ affine-hull@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
robust-orientation "^1.1.3"
|
robust-orientation "^1.1.3"
|
||||||
|
|
||||||
after@0.8.2:
|
|
||||||
version "0.8.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
|
|
||||||
integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=
|
|
||||||
|
|
||||||
ajv@^6.12.3:
|
ajv@^6.12.3:
|
||||||
version "6.12.6"
|
version "6.12.6"
|
||||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
|
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
|
||||||
@ -1389,11 +1389,6 @@ array-unique@^0.3.2:
|
|||||||
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
||||||
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
|
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
|
||||||
|
|
||||||
arraybuffer.slice@~0.0.7:
|
|
||||||
version "0.0.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
|
|
||||||
integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==
|
|
||||||
|
|
||||||
asn1.js@^5.2.0:
|
asn1.js@^5.2.0:
|
||||||
version "5.4.1"
|
version "5.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
|
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
|
||||||
@ -1628,11 +1623,6 @@ bl@^2.2.1:
|
|||||||
readable-stream "^2.3.5"
|
readable-stream "^2.3.5"
|
||||||
safe-buffer "^5.1.1"
|
safe-buffer "^5.1.1"
|
||||||
|
|
||||||
blob@0.0.5:
|
|
||||||
version "0.0.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683"
|
|
||||||
integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==
|
|
||||||
|
|
||||||
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.6, bn.js@^4.4.0:
|
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.6, bn.js@^4.4.0:
|
||||||
version "4.11.9"
|
version "4.11.9"
|
||||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
|
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
|
||||||
@ -2269,21 +2259,11 @@ component-bind@1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
|
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
|
||||||
integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=
|
integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=
|
||||||
|
|
||||||
component-emitter@1.2.1:
|
|
||||||
version "1.2.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
|
|
||||||
integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
|
|
||||||
|
|
||||||
component-emitter@^1.2.1, component-emitter@~1.3.0:
|
component-emitter@^1.2.1, component-emitter@~1.3.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
|
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
|
||||||
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
|
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
|
||||||
|
|
||||||
component-inherit@0.0.3:
|
|
||||||
version "0.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
|
|
||||||
integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=
|
|
||||||
|
|
||||||
compute-dims@^1.1.0:
|
compute-dims@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/compute-dims/-/compute-dims-1.1.0.tgz#6d5b712929b6c531af3b4d580ed5adacbbd77e0c"
|
resolved "https://registry.yarnpkg.com/compute-dims/-/compute-dims-1.1.0.tgz#6d5b712929b6c531af3b4d580ed5adacbbd77e0c"
|
||||||
@ -2819,13 +2799,6 @@ deasync@^0.1.14:
|
|||||||
bindings "^1.5.0"
|
bindings "^1.5.0"
|
||||||
node-addon-api "^1.7.1"
|
node-addon-api "^1.7.1"
|
||||||
|
|
||||||
debug@2.3.3:
|
|
||||||
version "2.3.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c"
|
|
||||||
integrity sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=
|
|
||||||
dependencies:
|
|
||||||
ms "0.7.2"
|
|
||||||
|
|
||||||
debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
|
debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
|
||||||
version "2.6.9"
|
version "2.6.9"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||||
@ -2840,12 +2813,12 @@ debug@^4.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ms "2.1.2"
|
ms "2.1.2"
|
||||||
|
|
||||||
debug@~3.1.0:
|
debug@~4.1.0:
|
||||||
version "3.1.0"
|
version "4.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
|
||||||
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
|
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "2.0.0"
|
ms "^2.1.1"
|
||||||
|
|
||||||
decode-uri-component@^0.2.0:
|
decode-uri-component@^0.2.0:
|
||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
@ -3143,33 +3116,28 @@ end-of-stream@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
once "^1.4.0"
|
once "^1.4.0"
|
||||||
|
|
||||||
engine.io-client@~3.4.0:
|
engine.io-client@~4.0.0:
|
||||||
version "3.4.4"
|
version "4.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.4.tgz#77d8003f502b0782dd792b073a4d2cf7ca5ab967"
|
resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-4.0.5.tgz#e12b05a11a7a3cccec6d69f9af8435146e3d507e"
|
||||||
integrity sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ==
|
integrity sha512-1lkn0QdekHQPMTcxUh8LqIuxQHNtKV5GvqkQzmZ1rYKAvB6puMm13U7K1ps3OQZ4joE46asQiAKrcdL9weNEVw==
|
||||||
dependencies:
|
dependencies:
|
||||||
|
base64-arraybuffer "0.1.4"
|
||||||
component-emitter "~1.3.0"
|
component-emitter "~1.3.0"
|
||||||
component-inherit "0.0.3"
|
debug "~4.1.0"
|
||||||
debug "~3.1.0"
|
engine.io-parser "~4.0.1"
|
||||||
engine.io-parser "~2.2.0"
|
|
||||||
has-cors "1.1.0"
|
has-cors "1.1.0"
|
||||||
indexof "0.0.1"
|
|
||||||
parseqs "0.0.6"
|
parseqs "0.0.6"
|
||||||
parseuri "0.0.6"
|
parseuri "0.0.6"
|
||||||
ws "~6.1.0"
|
ws "~7.2.1"
|
||||||
xmlhttprequest-ssl "~1.5.4"
|
xmlhttprequest-ssl "~1.5.4"
|
||||||
yeast "0.1.2"
|
yeast "0.1.2"
|
||||||
|
|
||||||
engine.io-parser@~2.2.0:
|
engine.io-parser@~4.0.1:
|
||||||
version "2.2.1"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7"
|
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-4.0.2.tgz#e41d0b3fb66f7bf4a3671d2038a154024edb501e"
|
||||||
integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==
|
integrity sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==
|
||||||
dependencies:
|
dependencies:
|
||||||
after "0.8.2"
|
|
||||||
arraybuffer.slice "~0.0.7"
|
|
||||||
base64-arraybuffer "0.1.4"
|
base64-arraybuffer "0.1.4"
|
||||||
blob "0.0.5"
|
|
||||||
has-binary2 "~1.0.2"
|
|
||||||
|
|
||||||
entities@^1.1.1, entities@^1.1.2:
|
entities@^1.1.1, entities@^1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
@ -4312,13 +4280,6 @@ has-ansi@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex "^2.0.0"
|
ansi-regex "^2.0.0"
|
||||||
|
|
||||||
has-binary2@~1.0.2:
|
|
||||||
version "1.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d"
|
|
||||||
integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==
|
|
||||||
dependencies:
|
|
||||||
isarray "2.0.1"
|
|
||||||
|
|
||||||
has-cors@1.1.0:
|
has-cors@1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
|
resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
|
||||||
@ -4596,11 +4557,6 @@ indexes-of@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
|
resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
|
||||||
integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
|
integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
|
||||||
|
|
||||||
indexof@0.0.1:
|
|
||||||
version "0.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
|
|
||||||
integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
|
|
||||||
|
|
||||||
inflight@^1.0.4:
|
inflight@^1.0.4:
|
||||||
version "1.0.6"
|
version "1.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||||
@ -4953,11 +4909,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||||
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
||||||
|
|
||||||
isarray@2.0.1:
|
|
||||||
version "2.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
|
|
||||||
integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=
|
|
||||||
|
|
||||||
isarray@^2.0.1:
|
isarray@^2.0.1:
|
||||||
version "2.0.5"
|
version "2.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
|
||||||
@ -5070,11 +5021,6 @@ json-stringify-safe@~5.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
||||||
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
|
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
|
||||||
|
|
||||||
json3@3.3.2:
|
|
||||||
version "3.3.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
|
|
||||||
integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=
|
|
||||||
|
|
||||||
json5@^1.0.1:
|
json5@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
|
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
|
||||||
@ -5485,11 +5431,6 @@ mouse-wheel@^1.2.0:
|
|||||||
signum "^1.0.0"
|
signum "^1.0.0"
|
||||||
to-px "^1.0.1"
|
to-px "^1.0.1"
|
||||||
|
|
||||||
ms@0.7.2:
|
|
||||||
version "0.7.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
|
|
||||||
integrity sha1-riXPJRKziFodldfwN4aNhDESR2U=
|
|
||||||
|
|
||||||
ms@2.0.0:
|
ms@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||||
@ -5505,6 +5446,11 @@ ms@2.1.2:
|
|||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
||||||
|
|
||||||
|
ms@^2.1.1:
|
||||||
|
version "2.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||||
|
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||||
|
|
||||||
mumath@^3.3.4:
|
mumath@^3.3.4:
|
||||||
version "3.3.4"
|
version "3.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/mumath/-/mumath-3.3.4.tgz#48d4a0f0fd8cad4e7b32096ee89b161a63d30bbf"
|
resolved "https://registry.yarnpkg.com/mumath/-/mumath-3.3.4.tgz#48d4a0f0fd8cad4e7b32096ee89b161a63d30bbf"
|
||||||
@ -7666,32 +7612,28 @@ snapdragon@^0.8.1:
|
|||||||
source-map-resolve "^0.5.0"
|
source-map-resolve "^0.5.0"
|
||||||
use "^3.1.0"
|
use "^3.1.0"
|
||||||
|
|
||||||
socket.io-client@~2:
|
socket.io-client@~3:
|
||||||
version "2.3.1"
|
version "3.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.1.tgz#91a4038ef4d03c19967bb3c646fec6e0eaa78cff"
|
resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-3.0.4.tgz#c0203419a9f71e1360ef92a31301e80260e94bb9"
|
||||||
integrity sha512-YXmXn3pA8abPOY//JtYxou95Ihvzmg8U6kQyolArkIyLd0pgVhrfor/iMsox8cn07WCOOvvuJ6XKegzIucPutQ==
|
integrity sha512-qMvBuS+W9JIN2mkfAWDCxuIt+jpIKDf8C0604zEqx1JrPaPSS6cN0F3B2GYWC83TqBeVJXW66GFxWV3KD88n0Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
|
"@types/component-emitter" "^1.2.10"
|
||||||
backo2 "1.0.2"
|
backo2 "1.0.2"
|
||||||
component-bind "1.0.0"
|
component-bind "1.0.0"
|
||||||
component-emitter "~1.3.0"
|
component-emitter "~1.3.0"
|
||||||
debug "~3.1.0"
|
debug "~4.1.0"
|
||||||
engine.io-client "~3.4.0"
|
engine.io-client "~4.0.0"
|
||||||
has-binary2 "~1.0.2"
|
|
||||||
indexof "0.0.1"
|
|
||||||
parseqs "0.0.6"
|
|
||||||
parseuri "0.0.6"
|
parseuri "0.0.6"
|
||||||
socket.io-parser "~3.3.0"
|
socket.io-parser "~4.0.1"
|
||||||
to-array "0.1.4"
|
|
||||||
|
|
||||||
socket.io-parser@~2, socket.io-parser@~3.3.0:
|
socket.io-parser@~4.0.1:
|
||||||
version "2.3.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.2.tgz#ae64f90cd8d0b5316556280d98cb744f7422cd94"
|
resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.2.tgz#3d021a9c86671bb079e7c6c806db6a1d9b1bc780"
|
||||||
integrity sha1-rmT5DNjQtTFlVigNmMt0T3QizZQ=
|
integrity sha512-Bs3IYHDivwf+bAAuW/8xwJgIiBNtlvnjYRc4PbXgniLmcP1BrakBoq/QhO24rgtgW7VZ7uAaswRGxutUnlAK7g==
|
||||||
dependencies:
|
dependencies:
|
||||||
component-emitter "1.2.1"
|
"@types/component-emitter" "^1.2.10"
|
||||||
debug "2.3.3"
|
component-emitter "~1.3.0"
|
||||||
isarray "0.0.1"
|
debug "~4.1.0"
|
||||||
json3 "3.3.2"
|
|
||||||
|
|
||||||
source-map-resolve@^0.5.0:
|
source-map-resolve@^0.5.0:
|
||||||
version "0.5.3"
|
version "0.5.3"
|
||||||
@ -8160,11 +8102,6 @@ to-array-buffer@^3.0.0:
|
|||||||
is-blob "^2.0.1"
|
is-blob "^2.0.1"
|
||||||
string-to-arraybuffer "^1.0.0"
|
string-to-arraybuffer "^1.0.0"
|
||||||
|
|
||||||
to-array@0.1.4:
|
|
||||||
version "0.1.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
|
|
||||||
integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA=
|
|
||||||
|
|
||||||
to-arraybuffer@^1.0.0:
|
to-arraybuffer@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
|
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
|
||||||
@ -8803,12 +8740,10 @@ ws@^6.1.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
async-limiter "~1.0.0"
|
async-limiter "~1.0.0"
|
||||||
|
|
||||||
ws@~6.1.0:
|
ws@~7.2.1:
|
||||||
version "6.1.4"
|
version "7.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.5.tgz#abb1370d4626a5a9cd79d8de404aa18b3465d10d"
|
||||||
integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==
|
integrity sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==
|
||||||
dependencies:
|
|
||||||
async-limiter "~1.0.0"
|
|
||||||
|
|
||||||
xml-name-validator@^3.0.0:
|
xml-name-validator@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
|
Loading…
Reference in New Issue
Block a user