merge master

pull/402/head^2
slowbackspace 5 years ago
commit 005cd8ae02

@ -6,7 +6,8 @@
],
"globals": {
"LOCAL": true,
"COMMITHASH": true
"COMMITHASH": true,
"VERSION": true
},
"env": {
"browser": true,

@ -1,3 +1,22 @@
## 1.1.0-beta
__added__
- Ripple support enabled
- responsive sidebar
- QR code scanner in send form
- clear send form button
__changed__
- update dependencies
- upgrade babel7
- split icons for T1 and TT
- device header styles
- input styles
- split sign and verify title
__fixed__
- beta disclaimer wrapper position
- sidebar scrollbar
## 1.0.3-beta
__added__
- Ethereum: sign & verify tab

@ -1,13 +1,11 @@
# Trezor Wallet
You can try this wallet live [HERE](https://beta-wallet.trezor.io/next/)
To install dependencies run `npm install` or `yarn`
To start locally run `npm run dev` or `yarn run dev`
To build the project run `npm run build` or `yarn run build`
## Docker
- Build `./scripts/docker-build.sh`
- Run `./scripts/docker-run.sh`
## Project structure
The project is divided into two parts - data that are used when compiling the project and data that aren't.

@ -1,6 +1,6 @@
{
"name": "trezor-wallet",
"version": "1.0.0",
"version": "1.0.3-beta",
"author": "TREZOR <info@trezor.io>",
"description": "",
"bin": {
@ -31,16 +31,16 @@
},
"dependencies": {
"@babel/polyfill": "^7.2.5",
"bignumber.js": "2.4.0",
"bignumber.js": "8.0.2",
"color-hash": "^1.0.3",
"commander": "^2.19.0",
"connected-react-router": "^6.2.2",
"connected-react-router": "6.0.0",
"copy-webpack-plugin": "^4.6.0",
"cross-env": "^5.2.0",
"date-fns": "^1.30.1",
"ethereumjs-tx": "^1.3.7",
"ethereumjs-units": "^0.2.0",
"ethereumjs-util": "^5.2.0",
"ethereumjs-util": "^6.0.0",
"express": "^4.16.4",
"friendly-errors-webpack-plugin": "^1.7.0",
"git-revision-webpack-plugin": "^3.0.3",
@ -54,8 +54,8 @@
"raf": "^3.4.1",
"raven-js": "^3.27.0",
"rc-tooltip": "^3.7.3",
"react": "^16.8.0",
"react-dom": "^16.8.0",
"react": "^16.8.1",
"react-dom": "^16.8.1",
"react-hot-loader": "^4.6.5",
"react-intl": "^2.8.0",
"react-json-view": "^1.19.1",
@ -80,8 +80,8 @@
"trezor-bridge-communicator": "1.0.2",
"trezor-connect": "7.0.0-beta.2",
"wallet-address-validator": "^0.2.4",
"web3": "1.0.0-beta.41",
"webpack": "^4.29.1",
"web3": "1.0.0-beta.43",
"webpack": "^4.29.3",
"webpack-build-notifier": "^0.1.30",
"webpack-bundle-analyzer": "^3.0.3",
"whatwg-fetch": "^3.0.0",

@ -8,6 +8,7 @@ import * as TOKEN from 'actions/constants/token';
import * as PENDING from 'actions/constants/pendingTx';
import * as reducerUtils from 'reducers/utils';
import { getVersion } from 'utils/device';
import { initialState } from 'reducers/SelectedAccountReducer';
import type {
@ -51,10 +52,11 @@ const getExceptionPage = (state: State, selectedAccount: SelectedAccountState):
shortcut: 'not-used',
};
}
if (discovery.fwNotSupported) {
return {
type: 'fwNotSupported',
title: `${network.name} is not supported with Trezor ${device.features.model}`,
title: `${network.name} is not supported with Trezor ${getVersion(device)}`,
message: 'Find more information on Trezor Wiki.',
shortcut: network.shortcut,
};

@ -226,16 +226,16 @@ export const amountValidation = ($state: State): PayloadAction<State> => (dispat
if (!state.amount.match(decimalRegExp)) {
state.errors.amount = `Maximum ${token.decimals} decimals allowed`;
} else if (new BigNumber(state.total).greaterThan(account.balance)) {
} else if (new BigNumber(state.total).isGreaterThan(account.balance)) {
state.errors.amount = `Not enough ${state.networkSymbol} to cover transaction fee`;
} else if (new BigNumber(state.amount).greaterThan(new BigNumber(token.balance).minus(pendingAmount))) {
} else if (new BigNumber(state.amount).isGreaterThan(new BigNumber(token.balance).minus(pendingAmount))) {
state.errors.amount = 'Not enough funds';
} else if (new BigNumber(state.amount).lessThanOrEqualTo('0')) {
} else if (new BigNumber(state.amount).isLessThanOrEqualTo('0')) {
state.errors.amount = 'Amount is too low';
}
} else if (!state.amount.match(ETH_18_RE)) {
state.errors.amount = 'Maximum 18 decimals allowed';
} else if (new BigNumber(state.total).greaterThan(new BigNumber(account.balance).minus(pendingAmount))) {
} else if (new BigNumber(state.total).isGreaterThan(new BigNumber(account.balance).minus(pendingAmount))) {
state.errors.amount = 'Not enough funds';
}
}
@ -261,9 +261,9 @@ export const gasLimitValidation = ($state: State): PayloadAction<State> => (disp
state.errors.gasLimit = 'Gas limit is not a number';
} else {
const gl: BigNumber = new BigNumber(gasLimit);
if (gl.lessThan(1)) {
if (gl.isLessThan(1)) {
state.errors.gasLimit = 'Gas limit is too low';
} else if (gl.lessThan(state.currency !== state.networkSymbol ? network.defaultGasLimitTokens : network.defaultGasLimit)) {
} else if (gl.isLessThan(state.currency !== state.networkSymbol ? network.defaultGasLimitTokens : network.defaultGasLimit)) {
state.warnings.gasLimit = 'Gas limit is below recommended';
}
}
@ -284,9 +284,9 @@ export const gasPriceValidation = ($state: State): PayloadAction<State> => (): S
state.errors.gasPrice = 'Gas price is not a number';
} else {
const gp: BigNumber = new BigNumber(gasPrice);
if (gp.greaterThan(1000)) {
if (gp.isGreaterThan(1000)) {
state.warnings.gasPrice = 'Gas price is too high';
} else if (gp.lessThanOrEqualTo('0')) {
} else if (gp.isLessThanOrEqualTo('0')) {
state.errors.gasPrice = 'Gas price is too low';
}
}
@ -312,9 +312,9 @@ export const nonceValidation = ($state: State): PayloadAction<State> => (dispatc
state.errors.nonce = 'Nonce is not a valid number';
} else {
const n: BigNumber = new BigNumber(nonce);
if (n.lessThan(account.nonce)) {
if (n.isLessThan(account.nonce)) {
state.warnings.nonce = 'Nonce is lower than recommended';
} else if (n.greaterThan(account.nonce)) {
} else if (n.isGreaterThan(account.nonce)) {
state.warnings.nonce = 'Nonce is greater than recommended';
}
}
@ -347,7 +347,12 @@ export const calculateFee = (gasPrice: string, gasLimit: string): string => {
export const calculateTotal = (amount: string, gasPrice: string, gasLimit: string): string => {
try {
return new BigNumber(amount).plus(calculateFee(gasPrice, gasLimit)).toFixed();
const bAmount = new BigNumber(amount);
// BigNumber() returns NaN on non-numeric string
if (bAmount.isNaN()) {
throw new Error('Amount is not a number');
}
return bAmount.plus(calculateFee(gasPrice, gasLimit)).toFixed();
} catch (error) {
return '0';
}
@ -358,7 +363,7 @@ export const calculateMaxAmount = (balance: BigNumber, gasPrice: string, gasLimi
// TODO - minus pendings
const fee = calculateFee(gasPrice, gasLimit);
const max = balance.minus(fee);
if (max.lessThan(0)) return '0';
if (max.isLessThan(0)) return '0';
return max.toFixed();
} catch (error) {
return '0';

@ -236,7 +236,7 @@ const amountValidation = ($state: State): PayloadAction<State> => (dispatch: Dis
const pendingAmount: BigNumber = getPendingAmount(pending, state.networkSymbol);
if (!state.amount.match(XRP_6_RE)) {
state.errors.amount = 'Maximum 6 decimals allowed';
} else if (new BigNumber(state.total).greaterThan(new BigNumber(account.balance).minus(pendingAmount))) {
} else if (new BigNumber(state.total).isGreaterThan(new BigNumber(account.balance).minus(pendingAmount))) {
state.errors.amount = 'Not enough funds';
}
}
@ -271,9 +271,9 @@ export const feeValidation = ($state: State): PayloadAction<State> => (dispatch:
state.errors.fee = 'Fee must be an absolute number';
} else {
const gl: BigNumber = new BigNumber(fee);
if (gl.lessThan(network.fee.minFee)) {
if (gl.isLessThan(network.fee.minFee)) {
state.errors.fee = 'Fee is below recommended';
} else if (gl.greaterThan(network.fee.maxFee)) {
} else if (gl.isGreaterThan(network.fee.maxFee)) {
state.errors.fee = 'Fee is above recommended';
}
}
@ -300,7 +300,12 @@ export const destinationTagValidation = ($state: State): PayloadAction<State> =>
const calculateTotal = (amount: string, fee: string): string => {
try {
return new BigNumber(amount).plus(fee).toFixed();
const bAmount = new BigNumber(amount);
// BigNumber() returns NaN on non-numeric string
if (bAmount.isNaN()) {
throw new Error('Amount is not a number');
}
return bAmount.plus(fee).toFixed();
} catch (error) {
return '0';
}
@ -310,7 +315,7 @@ const calculateMaxAmount = (balance: BigNumber, fee: string): string => {
try {
// TODO - minus pendings
const max = balance.minus(fee);
if (max.lessThan(0)) return '0';
if (max.isLessThan(0)) return '0';
return max.toFixed();
} catch (error) {
return '0';

@ -12,8 +12,6 @@ import colors from 'config/colors';
import { FONT_SIZE } from 'config/variables';
import * as LogActions from 'actions/LogActions';
declare var COMMITHASH: string;
type Props = {
opened: boolean,
isLanding: boolean,
@ -60,7 +58,7 @@ const Right = styled.div`
const Footer = ({ opened, toggle, isLanding }: Props) => (
<Wrapper>
<Left>
<Copy title={COMMITHASH}>&copy; {getYear(new Date())}</Copy>
<Copy>&copy; {getYear(new Date())}</Copy>
<StyledLink href="http://satoshilabs.com" isGreen>SatoshiLabs</StyledLink>
<StyledLink href="./assets/tos.pdf" isGreen>Terms</StyledLink>
<StyledLink onClick={toggle} isGreen>{ opened ? 'Hide Log' : 'Show Log' }</StyledLink>

@ -5,6 +5,9 @@ import styled from 'styled-components';
import { NavLink } from 'react-router-dom';
import colors from 'config/colors';
import { SCREEN_SIZE } from 'config/variables';
import Icon from 'components/Icon';
import icons from 'config/icons';
import type { toggleSidebar as toggleSidebarType } from 'actions/WalletActions';
import LanguagePicker from './components/LanguagePicker/Container';
@ -14,12 +17,6 @@ const Wrapper = styled.header`
background: ${colors.HEADER};
overflow: hidden;
z-index: 200;
svg {
fill: ${colors.WHITE};
height: 28px;
width: 100px;
}
`;
const LayoutWrapper = styled.div`
@ -50,21 +47,32 @@ const MenuToggler = styled.div`
white-space: nowrap;
color: ${colors.WHITE};
align-self: center;
align-items: center;
cursor: pointer;
user-select: none;
padding: 10px 0px;
transition: all .1s ease-in;
@media screen and (max-width: ${SCREEN_SIZE.SM}) {
display: initial;
display: flex;
}
`;
const TogglerText = styled.div`
`;
const Logo = styled.div`
flex: 1;
justify-content: flex-start;
display: flex;
svg {
fill: ${colors.WHITE};
height: 28px;
width: 100px;
}
@media screen and (max-width: ${SCREEN_SIZE.SM}) {
flex: 1 0 33%;
justify-content: center;
@ -127,7 +135,29 @@ const Header = ({ sidebarEnabled, sidebarOpened, toggleSidebar }: Props) => (
<Wrapper data-test="Main__page__navigation">
<LayoutWrapper>
<Left>
{ sidebarEnabled && <MenuToggler onClick={toggleSidebar}>{sidebarOpened ? '✕ Close' : '☰ Menu'}</MenuToggler>}
{ sidebarEnabled && (
<MenuToggler onClick={toggleSidebar}>
{sidebarOpened ? (
<>
<Icon
size={24}
color={colors.WHITE}
icon={icons.CLOSE}
/>
<TogglerText>Close</TogglerText>
</>
) : (
<>
<Icon
color={colors.WHITE}
size={24}
icon={icons.MENU}
/>
<TogglerText>Menu</TogglerText>
</>
)}
</MenuToggler>
)}
</Left>
<Logo>
<NavLink to="/">

@ -68,7 +68,7 @@ Tooltip.propTypes = {
PropTypes.string,
]),
readMoreLink: PropTypes.string,
enterDelayMs: PropTypes.bool,
enterDelayMs: PropTypes.number,
};
export default Tooltip;

@ -15,8 +15,9 @@ const Img = styled.img`
`;
const TrezorImage = ({ model }: Props) => {
const imageName = model === 'One' ? 1 : model;
// $FlowIssue: `require` must be a string literal.
const src = require(`./images/trezor-${model}.png`); // eslint-disable-line
const src = require(`./images/trezor-${imageName}.png`); // eslint-disable-line
return (
<Wrapper>
<Img model={model} src={src} />

@ -38,11 +38,18 @@ const CameraPlaceholder = styled(P)`
padding: 10px 0;
`;
const Error = styled(P)`
text-align: center;
const Error = styled.div`
padding: 10px 0;
`;
const ErrorTitle = styled(P)`
text-align: center;
color: ${colors.ERROR_PRIMARY};
`;
const ErrorMessage = styled.span`
text-align: center;
color: ${colors.TEXT_PRIMARY};
`;
const StyledQrReader = styled(QrReader)`
padding: 10px 0;
@ -95,14 +102,26 @@ class QrModal extends React.Component<Props, State> {
}
handleError = (err: any) => {
console.log(err);
this.setState({
error: err,
});
// log thrown error
console.error(err);
if (this.props.onError) {
this.props.onError(err);
}
if (err.name === 'NotAllowedError' || err.name === 'PermissionDeniedError'
|| err.name === 'NotReadableError' || err.name === 'TrackStartError') {
this.setState({
error: 'Permission to access the camera was denied.',
});
} else if (err.name === 'NotFoundError' || err.name === 'DevicesNotFoundError') {
this.setState({
error: 'The camera was not recognized.',
});
} else {
this.setState({
error: 'Unknown error. See console logs for details.',
});
}
}
handleCancel = () => {
@ -123,29 +142,25 @@ class QrModal extends React.Component<Props, State> {
/>
</CloseLink>
<Padding>
<H2>Scan an address from a QR code</H2>
{!this.state.readerLoaded && (
<CameraPlaceholder>
Waiting for camera...
</CameraPlaceholder>
)
}
</Padding>
<StyledQrReader
delay={500}
onError={this.handleError}
onScan={this.handleScan}
onLoad={this.onLoad}
style={{ width: '100%' }}
showViewFinder={false}
/>
<Padding>
<H2>Scan QR code</H2>
{!this.state.readerLoaded && !this.state.error && <CameraPlaceholder>Waiting for camera...</CameraPlaceholder>}
{this.state.error && (
<Error>
{this.state.error.toString()}
<ErrorTitle>Oops! Something went wrong!</ErrorTitle>
<ErrorMessage>{this.state.error.toString()}</ErrorMessage>
</Error>
)}
</Padding>
{!this.state.error && (
<StyledQrReader
delay={500}
onError={this.handleError}
onScan={this.handleScan}
onLoad={this.onLoad}
style={{ width: '100%' }}
showViewFinder={false}
/>
)}
</Wrapper>
);
}

@ -19,7 +19,7 @@ export default (props: Props) => {
const { reserve, balance } = account;
const bigBalance = new Bignumber(balance);
const bigReserve = new Bignumber(reserve);
if (bigBalance.lessThan(bigReserve)) {
if (bigBalance.isLessThan(bigReserve)) {
notifications.push(
<Notification
key="xrp-warning"

@ -79,6 +79,9 @@ export default {
QRCODE: [
'M832 1024l-64 0l0 -128l64 0l0 128Zm-320 0l-64 0l0 -128l64 0l0 128Zm192 0l-128 0l0 -128l128 0l0 128Zm192 -192l64 0l0 64l64 0l0 128l-128 0l0 -192Zm-896 -192l384 0l0 384l-384 0l0 -384Zm320 320l0 -256l-256 0l0 256l256 0Zm-64 -64l-128 0l0 -128l128 0l0 128Zm512 0l-64 0l0 -64l64 0l0 64Zm-192 -128l0 128l-64 0l0 -64l-64 0l0 -64l128 0Zm128 64l-64 0l0 -64l64 0l0 64Zm192 0l-128 0l0 -64l128 0l0 64Zm-256 -64l-64 0l0 -64l64 0l0 64Zm320 -64l-64 0l0 -64l128 0l0 128l-64 0l0 -64Zm-384 0l-128 0l0 -128l128 0l0 128Zm64 -64l64 0l0 -64l128 0l0 128l-192 0l0 -64Zm-320 -128l64 0l0 -64l64 0l0 128l-128 0l0 -64Zm256 0l-64 0l0 -64l192 0l0 128l-128 0l0 -64Zm-576 -64l128 0l0 64l64 0l0 64l-192 0l0 -128Zm896 64l-128 0l0 -64l256 0l0 128l-128 0l0 -64Zm-576 0l-128 0l0 -64l128 0l0 64Zm192 -64l-64 0l0 -64l64 0l0 64Zm-512 -448l384 0l0 384l-384 0l0 -384Zm576 384l-64 0l0 -128l64 0l0 128Zm64 -384l384 0l0 384l-384 0l0 -384Zm-320 320l0 -256l-256 0l0 256l256 0Zm640 0l0 -256l-256 0l0 256l256 0Zm-704 -64l-128 0l0 -128l128 0l0 128Zm640 0l-128 0l0 -128l128 0l0 128Zm-384 -256l0 64l64 0l0 128l-64 0l0 64l-64 0l0 -256l64 0Z',
],
MENU: [
'M192,265.497l640,0l0,119.906l-640,0l0,-119.906Zm0,186.56l640,0l0,119.946l-640,0l0,-119.946Zm0,186.56l640,0l0,119.886l-640,0l0,-119.886Z',
],
};
/*

@ -27,22 +27,21 @@ declare module 'bignumber.js' {
// Methods
abs(): T_BigNumber;
cmp(n: $npm$big$number$object): $npm$cmp$result;
div(n: $npm$big$number$object): T_BigNumber;
dividedBy(n: $npm$big$number$object): T_BigNumber;
eq(n: $npm$big$number$object): boolean;
gt(n: $npm$big$number$object): boolean;
greaterThan(n: $npm$big$number$object): boolean;
isGreaterThan(n: $npm$big$number$object): boolean;
gte(n: $npm$big$number$object): boolean;
lt(n: $npm$big$number$object): boolean;
lessThan(n: $npm$big$number$object): boolean;
isLessThan(n: $npm$big$number$object): boolean;
lte(n: $npm$big$number$object): boolean;
lessThanOrEqualTo(n: $npm$big$number$object): boolean;
isLessThanOrEqualTo(n: $npm$big$number$object): boolean;
isNaN(): boolean;
minus(n: $npm$big$number$object): T_BigNumber;
mod(n: $npm$big$number$object): T_BigNumber;
plus(n: $npm$big$number$object): T_BigNumber;
pow(exp: number): BigNumber;
round(dp: ?number, rm: ?RM): T_BigNumber;
sqrt(): T_BigNumber;
times(n: $npm$big$number$object): T_BigNumber;
toExponential(dp: ?number): string;

@ -33,7 +33,7 @@ const initialState: State = {
dropdownOpened: false,
firstLocationChange: true,
showBetaDisclaimer: false,
showSidebar: true,
showSidebar: false,
initialParams: null,
initialPathname: null,
disconnectRequest: null,

@ -12,6 +12,11 @@ export const routes: Array<Route> = [
pattern: '/',
fields: [],
},
{
name: 'landing-version',
pattern: '/version',
fields: ['version'],
},
{
name: 'landing-bridge',
pattern: '/bridge',

@ -44,15 +44,15 @@ exports[`device utils get status name 7`] = `"Disconnected"`;
exports[`device utils get status name 8`] = `"Unavailable"`;
exports[`device utils get version 1`] = `"1"`;
exports[`device utils get version 1`] = `"One"`;
exports[`device utils get version 2`] = `"1"`;
exports[`device utils get version 2`] = `"One"`;
exports[`device utils get version 3`] = `"1"`;
exports[`device utils get version 3`] = `"One"`;
exports[`device utils get version 4`] = `"1"`;
exports[`device utils get version 4`] = `"One"`;
exports[`device utils get version 5`] = `"1"`;
exports[`device utils get version 5`] = `"One"`;
exports[`device utils get version 6`] = `"T"`;

@ -104,7 +104,7 @@ export const getVersion = (device: TrezorDevice): string => {
if (device.features && device.features.major_version > 1) {
version = 'T';
} else {
version = '1';
version = 'One';
}
return version;
};

@ -56,7 +56,12 @@ export const hexToString = (hex: string): string => {
export const toDecimalAmount = (amount: string | number, decimals: number): string => {
try {
return new BigNumber(amount).div(10 ** decimals).toString(10);
const bAmount = new BigNumber(amount);
// BigNumber() returns NaN on non-numeric string
if (bAmount.isNaN()) {
throw new Error('Amount is not a number');
}
return bAmount.div(10 ** decimals).toString(10);
} catch (error) {
return '0';
}
@ -64,7 +69,12 @@ export const toDecimalAmount = (amount: string | number, decimals: number): stri
export const fromDecimalAmount = (amount: string | number, decimals: number): string => {
try {
return new BigNumber(amount).times(10 ** decimals).toString(10);
const bAmount = new BigNumber(amount);
// BigNumber() returns NaN on non-numeric string
if (bAmount.isNaN()) {
throw new Error('Amount is not a number');
}
return bAmount.times(10 ** decimals).toString(10);
} catch (error) {
return '0';
}

@ -0,0 +1,33 @@
import React from 'react';
import styled from 'styled-components';
import { H3, H2 } from 'components/Heading';
import LandingWrapper from 'views/Landing/components/LandingWrapper';
import Link from 'components/Link';
const Wrapper = styled.div`
display: flex;
flex: 1;
flex-direction: column;
align-items: center;
justify-content: center;
`;
const Line = styled.div`
padding: 20px;
`;
const Version = () => (
<LandingWrapper>
<Wrapper>
<H3>APPLICATION VERSION</H3>
<H2>{VERSION}</H2>
<Line />
<H3>LAST COMMIT HASH</H3>
<Link href={`https://github.com/trezor/trezor-wallet/commits/${COMMITHASH}`}>
<H2>{COMMITHASH}</H2>
</Link>
</Wrapper>
</LandingWrapper>
);
export default Version;

@ -36,7 +36,7 @@ const Wrapper = styled.div`
`;
const CoinLogoWrapper = styled.div`
margin: 10px 0;
margin: 10px 0 20px 0;
`;
const StyledCoinLogo = styled(CoinLogo)`

@ -16,6 +16,9 @@ type Props = {
router: $ElementType<State, 'router'>,
selectedAccount: $ElementType<State, 'selectedAccount'>,
};
type LocalState = {
wrapper: ?HTMLElement,
};
const Wrapper = styled.div`
position: relative;
@ -68,9 +71,18 @@ const StyledNavLink = styled(NavLink)`
}
`;
class TopNavigationAccount extends React.PureComponent<Props> {
class TopNavigationAccount extends React.PureComponent<Props, LocalState> {
constructor(props) {
super(props);
this.state = {
wrapper: null,
};
}
wrapperRefCallback = (element: ?HTMLElement) => {
this.wrapper = element;
this.setState({
wrapper: element,
});
}
wrapper: ?HTMLElement;
@ -91,7 +103,7 @@ class TopNavigationAccount extends React.PureComponent<Props> {
{network.type === 'ethereum'
&& <StyledNavLink to={`${basePath}/signverify`}><FormattedMessage {...l10nMessages.TR_SIGN_AND_VERIFY} /></StyledNavLink>
}
<Indicator pathname={pathname} wrapper={() => this.wrapper} />
<Indicator pathname={pathname} wrapper={() => this.state.wrapper} />
</Wrapper>
);
}

@ -253,7 +253,10 @@ const AccountSend = (props: Props) => {
}
let isSendButtonDisabled: boolean = Object.keys(errors).length > 0 || total === '0' || amount.length === 0 || address.length === 0 || sending;
let sendButtonText = <FormattedMessage {...l10nSendMessages.TR_SEND} values={{ amount: `${total} ${network.symbol}` }} />;
let sendButtonText = <FormattedMessage {...l10nSendMessages.TR_SEND} values={{ amount: '' }} />;
if (total !== '0') {
sendButtonText = <FormattedMessage {...l10nSendMessages.TR_SEND} values={{ amount: `${total} ${network.symbol}` }} />;
}
if (!device.connected) {
sendButtonText = <FormattedMessage {...l10nSendMessages.TR_DEVICE_IS_NOT_CONNECTED} />;
isSendButtonDisabled = true;

@ -19,8 +19,11 @@ const Wrapper = styled.div`
display: flex;
flex: 1;
flex-direction: row;
flex-wrap: wrap;
background: ${colors.WHITE};
@media screen and (max-width: ${SCREEN_SIZE.MD}) {
flex-wrap: wrap;
}
`;
const Row = styled.div`
@ -31,11 +34,6 @@ const RowButtons = styled(Row)`
display: flex;
align-items: center;
justify-content: flex-end;
@media all and (max-width: 850px) {
flex-wrap: wrap;
margin: -5px;
}
`;
const StyledButton = styled(Button)`
@ -45,15 +43,6 @@ const StyledButton = styled(Button)`
&:first-child {
margin-left: 0;
}
@media all and (max-width: 850px) {
flex: 1;
margin: 5px;
&:first-child {
margin-left: 5px;
}
}
`;
const Column = styled.div`
@ -61,7 +50,7 @@ const Column = styled.div`
flex: 1 1 50%;
flex-direction: column;
@media screen and (max-width: ${SCREEN_SIZE.XS}) {
@media screen and (max-width: ${SCREEN_SIZE.MD}) {
flex: 1 1 100%;
}
`;
@ -71,7 +60,7 @@ const Sign = styled(Column)``;
const Verify = styled(Column)`
padding-left: 20px;
@media screen and (max-width: ${SCREEN_SIZE.XS}) {
@media screen and (max-width: ${SCREEN_SIZE.MD}) {
padding-left: 0px;
}
`;

@ -8,6 +8,7 @@ import { ConnectedRouter } from 'connected-react-router';
import ConnectedIntlProvider from 'support/ConnectedIntlProvider';
import ErrorBoundary from 'support/ErrorBoundary';
import ImagesPreloader from 'support/ImagesPreloader';
import Version from 'views/Landing/views/Version';
import { getPattern } from 'support/routes';
// landing views
@ -40,6 +41,7 @@ const App = () => (
<ConnectedRouter history={history}>
<Switch>
<Route exact path={getPattern('landing-home')} component={RootView} />
<Route exact path={getPattern('landing-version')} component={Version} />
<Route exact path={getPattern('landing-bridge')} component={InstallBridge} />
<Route exact path={getPattern('landing-import')} component={ImportView} />
<Route>

@ -3,14 +3,15 @@ import GitRevisionPlugin from 'git-revision-webpack-plugin';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import FriendlyErrorsWebpackPlugin from 'friendly-errors-webpack-plugin';
import WebpackBuildNotifierPlugin from 'webpack-build-notifier';
// turn on for bundle analyzing
// import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
import packageJson from '../package.json';
import {
SRC, BUILD, PORT, PUBLIC, TRANSLATIONS,
} from './constants';
// turn on for bundle analyzing
// import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
const gitRevisionPlugin = new GitRevisionPlugin();
module.exports = {
@ -103,6 +104,7 @@ module.exports = {
suppressSuccess: true,
}),
new webpack.DefinePlugin({
VERSION: JSON.stringify(packageJson.version),
COMMITHASH: JSON.stringify(gitRevisionPlugin.commithash()),
}),
new HtmlWebpackPlugin({

@ -3,6 +3,7 @@ import GitRevisionPlugin from 'git-revision-webpack-plugin';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import FriendlyErrorsWebpackPlugin from 'friendly-errors-webpack-plugin';
import CopyWebpackPlugin from 'copy-webpack-plugin';
import packageJson from '../package.json';
import {
SRC, BUILD, PUBLIC, TRANSLATIONS,
} from './constants';
@ -67,6 +68,7 @@ module.exports = {
plugins: [
new webpack.DefinePlugin({
'process.env.BUILD': JSON.stringify(process.env.BUILD),
VERSION: JSON.stringify(packageJson.version),
COMMITHASH: JSON.stringify(gitRevisionPlugin.commithash()),
}),
new HtmlWebpackPlugin({

@ -934,6 +934,13 @@
resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.18.tgz#6a60435d4663e290f3709898a4f75014f279c4d6"
integrity sha512-OTPWHmsyW18BhrnG5x8F7PzeZ2nFxmHGb42bZn79P9hl+GI5cMzyPgQTwNjbem0lJhoru/8vtjAFCUOu3+gE2w==
"@types/bn.js@^4.11.4":
version "4.11.4"
resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.4.tgz#a7bed5bdef9f16b25c92ba27745ab261374787d7"
integrity sha512-AO8WW+aRcKWKQAYTfKLzwnpL6U+TfPqS+haRrhCy5ff04Da8WZud3ZgVjspQXaEXJDcTlsjUEVvL39wegDek5w==
dependencies:
"@types/node" "*"
"@types/chai-jquery@1.1.35":
version "1.1.35"
resolved "https://registry.yarnpkg.com/@types/chai-jquery/-/chai-jquery-1.1.35.tgz#9a8f0a39ec0851b2768a8f8c764158c2a2568d04"
@ -2168,7 +2175,12 @@ big.js@^5.2.2:
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
bignumber.js@2.4.0, bignumber.js@^2.3.0:
bignumber.js@8.0.2:
version "8.0.2"
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.0.2.tgz#d8c4e1874359573b1ef03011a2d861214aeef137"
integrity sha512-EiuvFrnbv0jFixEQ9f58jo7X0qI2lNGIr/MxntmVzQc5JUweDSh8y8hbTCAomFtqwUPIOWcLXP0VEOSZTG7FFw==
bignumber.js@^2.3.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.4.0.tgz#838a992da9f9d737e0f4b2db0be62bb09dd0c5e8"
@ -2970,10 +2982,10 @@ connect-history-api-fallback@^1.3.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
connected-react-router@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-6.2.2.tgz#10ed0942ee2032de7cb0fd8479bde526853906ed"
integrity sha512-tPI3s7yYtnTt/XLoQFsQqIEQxdQCrsZltEdozjG7LPkOTNglJJ7WqUqnlnh9thC6ebavfaJoTtPa9G2EibuJbg==
connected-react-router@6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-6.0.0.tgz#cb7ccbbc5ed353832ecd91d68289c916e8aba734"
integrity sha512-TarPqf2wY3cz993Mw3eBg2U12M5OmaGwKzJsinvRQh61nKb8WMUvimyhu6u2HeWS8625PHFXjNOU0OIAMWj/bQ==
dependencies:
immutable "^3.8.1"
seamless-immutable "^7.1.3"
@ -4238,14 +4250,14 @@ ethereumjs-util@^5.0.0:
rlp "^2.0.0"
secp256k1 "^3.0.1"
ethereumjs-util@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642"
integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==
ethereumjs-util@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.0.0.tgz#f14841c182b918615afefd744207c7932c8536c0"
integrity sha512-E3yKUyl0Fs95nvTFQZe/ZSNcofhDzUsDlA5y2uoRmf1+Ec7gpGhNCsgKkZBRh7Br5op8mJcYF/jFbmjj909+nQ==
dependencies:
bn.js "^4.11.0"
create-hash "^1.1.2"
ethjs-util "^0.1.3"
ethjs-util "^0.1.6"
keccak "^1.0.2"
rlp "^2.0.0"
safe-buffer "^5.1.1"
@ -4282,6 +4294,14 @@ ethjs-util@^0.1.3:
is-hex-prefixed "1.0.0"
strip-hex-prefix "1.0.0"
ethjs-util@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536"
integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==
dependencies:
is-hex-prefixed "1.0.0"
strip-hex-prefix "1.0.0"
event-stream@~3.3.0:
version "3.3.4"
resolved "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
@ -8755,15 +8775,15 @@ react-base16-styling@^0.6.0:
object-assign "^4.1.1"
prop-types "^15.6.0"
react-dom@^16.8.0:
version "16.8.0"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.0.tgz#18f28d4be3571ed206672a267c66dd083145a9c4"
integrity sha512-dBzoAGYZpW9Yggp+CzBPC7q1HmWSeRc93DWrwbskmG1eHJWznZB/p0l/Sm+69leIGUS91AXPB/qB3WcPnKx8Sw==
react-dom@^16.8.1:
version "16.8.1"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.1.tgz#ec860f98853d09d39bafd3a6f1e12389d283dbb4"
integrity sha512-N74IZUrPt6UiDjXaO7UbDDFXeUXnVhZzeRLy/6iqqN1ipfjrhR60Bp5NuBK+rv3GMdqdIuwIl22u1SYwf330bg==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
scheduler "^0.13.0"
scheduler "^0.13.1"
react-hot-loader@^4.6.5:
version "4.6.5"
@ -8933,15 +8953,15 @@ react-transition-group@^2.5.3:
object-assign "^4.1.1"
prop-types "^15.6.0"
react@^16.8.0:
version "16.8.0"
resolved "https://registry.yarnpkg.com/react/-/react-16.8.0.tgz#8533f0e4af818f448a276eae71681d09e8dd970a"
integrity sha512-g+nikW2D48kqgWSPwNo0NH9tIGG3DsQFlrtrQ1kj6W77z5ahyIHG0w8kPpz4Sdj6gyLnz0lEd/xsjOoGge2MYQ==
react@^16.8.1:
version "16.8.1"
resolved "https://registry.yarnpkg.com/react/-/react-16.8.1.tgz#ae11831f6cb2a05d58603a976afc8a558e852c4a"
integrity sha512-wLw5CFGPdo7p/AgteFz7GblI2JPOos0+biSoxf1FPsGxWQZdN/pj6oToJs1crn61DL3Ln7mN86uZ4j74p31ELQ==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
scheduler "^0.13.0"
scheduler "^0.13.1"
read-pkg-up@^1.0.1:
version "1.0.1"
@ -9563,21 +9583,14 @@ sax@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
scheduler@^0.13.0:
version "0.13.0"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.0.tgz#e701f62e1b3e78d2bbb264046d4e7260f12184dd"
integrity sha512-w7aJnV30jc7OsiZQNPVmBc+HooZuvQZIZIShKutC3tnMFMkcwVN9CZRRSSNw03OnSCKmEkK8usmwcw6dqBaLzw==
scheduler@^0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.1.tgz#1a217df1bfaabaf4f1b92a9127d5d732d85a9591"
integrity sha512-VJKOkiKIN2/6NOoexuypwSrybx13MY7NSy9RNt8wPvZDMRT1CW6qlpF5jXRToXNHz3uWzbm2elNpZfXfGPqP9A==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
schema-utils@^0.4.4:
version "0.4.5"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e"
dependencies:
ajv "^6.1.0"
ajv-keywords "^3.1.0"
schema-utils@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
@ -11167,82 +11180,83 @@ wbuf@^1.1.0, wbuf@^1.7.3:
dependencies:
minimalistic-assert "^1.0.0"
web3-bzz@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.41.tgz#3f9eaac2376ce56aa4d3f5ab23299a6d8c9cb658"
integrity sha512-vLNYGlm3tmi31huIpQpizHxXw5yidx5FtF4zze5VsdMH3r7iVzuRjgShdB/XLUFvL7sdnJ0KNW2ULrScqaZ9aA==
web3-bzz@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.43.tgz#6c2ee480fe74212c70c1c712a20516c64cfb086b"
integrity sha512-5h0MCfJaguwI2TbqSp9elmbZs201uiorRqSxl/TUqeZkzj7hvBjI4nzaCipNxUDoJq2N9Z4J4qVEppj9SsyVLg==
dependencies:
"@babel/runtime" "^7.3.1"
"@types/node" "^10.12.18"
lodash "^4.17.11"
swarm-js "^0.1.39"
web3-core-helpers@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.41.tgz#12d99b249f8436c714905bb345365ef8ce515989"
integrity sha512-dYUYkN8XjSfAOeok8Od4nkzTWVnzKx65bPTJ+aUKuIegZ2qEuzwu6Aalfy09MGxs9tlylkblTg6nk1t7YoOgcQ==
web3-core-helpers@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.43.tgz#4dfd75e21fd1dff55d8d526512afb9c0a6830e70"
integrity sha512-AtDS3elq03vCj4YsivP9WM27BKGEpGg1y6zmbe+gXY8i0MGOiUo3yrolIoeAw5hZzwEyRdBgCzfkL8Mfb7aABA==
dependencies:
"@babel/runtime" "^7.3.1"
lodash "^4.17.11"
web3-eth-iban "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
web3-eth-iban "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
web3-core-method@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.41.tgz#d19eaf02a56918a31a80db4218b8f196bf55f0b3"
integrity sha512-+E70WoTqExXRJRIOBRo4KJVArhR8o5Zh38djQjo/Ddaj5Eu7KiiPTK0z0axXjUQnFyrQbbb1nUmbBJboVxgvKA==
web3-core-method@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.43.tgz#e2e7f3751f806ca87758fb43b7181c73378e8547"
integrity sha512-lZvU1FAEdBIm65KmqpYDWIqFaK5aqoNtgLgxqPs6xMEDX1MCqzoimKlNaGZn3oLxt2wpCawtaCymqE4v2KBf9w==
dependencies:
"@babel/runtime" "^7.3.1"
eventemitter3 "3.1.0"
web3-core "1.0.0-beta.41"
web3-core-helpers "1.0.0-beta.41"
web3-core-promievent "1.0.0-beta.41"
web3-core-subscriptions "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
lodash "^4.17.11"
web3-core "1.0.0-beta.43"
web3-core-helpers "1.0.0-beta.43"
web3-core-promievent "1.0.0-beta.43"
web3-core-subscriptions "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
web3-core-promievent@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.41.tgz#b50c780aaf52ef547b3c6508f7f0b464bc796cfb"
integrity sha512-0ByKXY26lGRKHz05MtqiZwB5cILvdTbNlUdQU94lMFm2KD5XKRvoQjeRAnugr07d8L2q+3LIU1vIGy/OLLi9sQ==
web3-core-promievent@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.43.tgz#759ee03d8db179e8c439ade69b863c9b79c34d29"
integrity sha512-HaQY6FuP+I0cn+Wi87Us24P4tAjUbhoDVtzE4K9CtmFTY1lvIQSLn+pzGhbwDYyKyovQpVMS/oroaI8QI46N1A==
dependencies:
"@babel/runtime" "^7.3.1"
eventemitter3 "^3.1.0"
web3-core-subscriptions@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.41.tgz#5ff628ce7b7c2c59fda2615ff78059afb4287578"
integrity sha512-kSaWfnDuPK3IQXMuNCixe7aq63qOBa2/21WKTpsXNA2yiwPBUmVylwiRMYwhf1ieZFPj9baEtVP8+0wxpXGE4g==
web3-core-subscriptions@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.43.tgz#c0ac44558fc2769ab7f4ade07c3be5643b920bbd"
integrity sha512-M7XuypZZvkPZNQg415j6CZ4Q0Mukydpup4aKiUwpQreJ2CnM05etaNkyhKydVRiAB3v7m63MLTz+LyHBsDjZKA==
dependencies:
"@babel/runtime" "^7.3.1"
eventemitter3 "^3.1.0"
lodash "^4.17.11"
web3-core-helpers "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
web3-core-helpers "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
web3-core@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.41.tgz#91068e6364c7a95301c243782255192bae5e18ea"
integrity sha512-giFB+1G6NyF0r8UAdmOf4j1d9uyrKjm38bz4KKVBGMaM87KvuDAtu0/1RajdPzpQZ3e424CV5VVSxibvVv5fEg==
web3-core@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.43.tgz#e6337e4f1d08b102b45c418376f1488e62aa688e"
integrity sha512-YkLehXkKpI0jyVqyEsuYR1JUeCcuCs2ihXbV4bPyM9DNbw+RryYZoyb7tMP3LtRuXFIDfBxn+rw3TrKiiAfgMQ==
dependencies:
"@babel/runtime" "^7.3.1"
"@types/node" "^10.12.18"
lodash "^4.17.11"
web3-utils "1.0.0-beta.41"
web3-utils "1.0.0-beta.43"
web3-eth-abi@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.41.tgz#52ce83ee29cfbef7bca5577272ef544bf4ac735e"
integrity sha512-p/AcM7ASsYaHsqtR8vZD0tMQKnFC3ZMHYfI1HcEvyeMM3/hhLHPXIDGgqVVSTil5tJFz38YWzPGt/cWplIQPqw==
web3-eth-abi@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.43.tgz#fd07ad664f9a2030a451f8128a65e426ff407490"
integrity sha512-2ghl2N6XHkHlUjkJFIOk8atiNYUFh+fijNci+lxMzeY7RoYA4lIF+o3Z422FhKlZdw8ySPaILTQ8wcwjiiuaEw==
dependencies:
"@babel/runtime" "^7.3.1"
ethers "^4.0.0"
lodash "^4.17.11"
web3-utils "1.0.0-beta.41"
web3-utils "1.0.0-beta.43"
web3-eth-accounts@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.41.tgz#9a272100eb9e3f508fbc58bea389d654e1786928"
integrity sha512-+E+DIOF7B/dlln0aPh05FtYh1vk5oBd/bDOyXI4ki0R3L+1zGppUDxm7lOURqbYE0Ny5RFw4i8i1ygFNCTpBBw==
web3-eth-accounts@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.43.tgz#abbcda793b058211c912127e89247639165aa5b0"
integrity sha512-GaHW0ELydWkbd6uiSsjagd9egeGNG9kaAeSjuwNlcouXMMuaC+TkYTwvy7vVFhk+/qusxdw0jWr+PBWcc0q6/g==
dependencies:
"@babel/runtime" "^7.3.1"
crypto-browserify "3.12.0"
@ -11250,107 +11264,107 @@ web3-eth-accounts@1.0.0-beta.41:
lodash "^4.17.11"
scrypt.js "0.2.0"
uuid "3.3.2"
web3-core "1.0.0-beta.41"
web3-core-helpers "1.0.0-beta.41"
web3-core-method "1.0.0-beta.41"
web3-providers "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
web3-core "1.0.0-beta.43"
web3-core-helpers "1.0.0-beta.43"
web3-core-method "1.0.0-beta.43"
web3-providers "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
web3-eth-contract@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.41.tgz#9196df3b78eab00fe5357ba19b8b57e03bbdff2e"
integrity sha512-irzF24h+R4nVOH5S54YwOBqyXGGJ/tj1SgW+cKRtUPzRdGTqefBv7jdMcpV7N7J0jZObfNxA5bnUBanvP/Ef0g==
web3-eth-contract@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.43.tgz#59cfac2ecaa86fadff84d7df7cd37a077fbe84b7"
integrity sha512-/ydJTHgM2yzOF8N2lLbMOp31d6ne/KdAC/EAujWeT0i5kf78X4cWGe0payGYbZ10Qj0S1OsfBS6RBqih7s2neA==
dependencies:
"@babel/runtime" "^7.3.1"
lodash "^4.17.11"
web3-core "1.0.0-beta.41"
web3-core-helpers "1.0.0-beta.41"
web3-core-method "1.0.0-beta.41"
web3-core-promievent "1.0.0-beta.41"
web3-core-subscriptions "1.0.0-beta.41"
web3-eth-abi "1.0.0-beta.41"
web3-eth-accounts "1.0.0-beta.41"
web3-providers "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
web3-eth-ens@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.41.tgz#1fa2ae69b5440b6c77804464025e741682cd1659"
integrity sha512-bB/LME1//Hw9CGeKfl1D6LfLNoDZdESavzNMdXFukHqB7QtfC1ck6DzEz2TfHOIigoNy0XPPSBpqZH/LdrH8Nw==
web3-core "1.0.0-beta.43"
web3-core-helpers "1.0.0-beta.43"
web3-core-method "1.0.0-beta.43"
web3-core-promievent "1.0.0-beta.43"
web3-core-subscriptions "1.0.0-beta.43"
web3-eth-abi "1.0.0-beta.43"
web3-eth-accounts "1.0.0-beta.43"
web3-providers "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
web3-eth-ens@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.43.tgz#894332725418c4582b0a6a727cc69b1ab6bceac0"
integrity sha512-SVpukYXhGOJTdGxztzvzAOZJMbjn9kItV8iBAUtTnffMvA09BPI+VcC4KYvmKfruhbkm3EJnKox8PrY36MukNQ==
dependencies:
"@babel/runtime" "^7.3.1"
eth-ens-namehash "2.0.8"
lodash "^4.17.11"
web3-core "1.0.0-beta.41"
web3-core-helpers "1.0.0-beta.41"
web3-core-method "1.0.0-beta.41"
web3-core-promievent "1.0.0-beta.41"
web3-eth-abi "1.0.0-beta.41"
web3-eth-contract "1.0.0-beta.41"
web3-net "1.0.0-beta.41"
web3-providers "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
web3-eth-iban@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.41.tgz#a651ae9043f552945c48ce10f50c99cf760ff15a"
integrity sha512-NbaBVApKIEB/1G0OVio0IOWmEvBM87lGO/bGB1xkH44GDdmBaLihBe7KoWcE81AEkBM3l24w7hPApOuD1qfUqg==
web3-core "1.0.0-beta.43"
web3-core-helpers "1.0.0-beta.43"
web3-core-method "1.0.0-beta.43"
web3-core-promievent "1.0.0-beta.43"
web3-eth-abi "1.0.0-beta.43"
web3-eth-contract "1.0.0-beta.43"
web3-net "1.0.0-beta.43"
web3-providers "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
web3-eth-iban@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.43.tgz#d48aa1c11707a6dddd168e3bf2ab00b766a79a55"
integrity sha512-qJMzjWWlHJuWFFYO4meoPfUQMBaUZ4RZnD2jUPAtjnoVa5s4Kc1j4MiSPsAbxSjVdy0gRrCydIufAtBVYCV8eg==
dependencies:
"@babel/runtime" "^7.3.1"
bn.js "4.11.8"
web3-utils "1.0.0-beta.41"
web3-utils "1.0.0-beta.43"
web3-eth-personal@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.41.tgz#fa2b2b1e90582986f194639db6e2395a90a46c2a"
integrity sha512-yBzw21B/F5ld7SCReBVk/fxGlQBaRYmC4/lqb1M1DoSI8xjVUF8tJuxbecGG8dofS5f86vmB+CEA1CdSiRx94A==
web3-eth-personal@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.43.tgz#8dc8eeb95479e6c57db489f494c66223fa82b1ce"
integrity sha512-NoPZHaetrFaVSCLpjIOG8DQvPPVpSf41Z5PM4VMRGLXC1Ofkomwr+MF3ewdHMjjRTUxJam/ksCFHbsNDxOM54w==
dependencies:
"@babel/runtime" "^7.3.1"
web3-core "1.0.0-beta.41"
web3-core-helpers "1.0.0-beta.41"
web3-core-method "1.0.0-beta.41"
web3-net "1.0.0-beta.41"
web3-providers "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
web3-eth@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.41.tgz#e78b4a3cf7e83b9999d1525d081c433bd71c9e45"
integrity sha512-gLQaLB+aIr2iIU3eVMbsR1fMF38pgPaYeK0NvCuO0s87a/PrlEREwGxNQhxjAjZXFWgWGF1fQ2tiojP8toezrQ==
web3-core "1.0.0-beta.43"
web3-core-helpers "1.0.0-beta.43"
web3-core-method "1.0.0-beta.43"
web3-net "1.0.0-beta.43"
web3-providers "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
web3-eth@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.43.tgz#754448452b168611c574a2f838e273a8a728ec56"
integrity sha512-RUxbgPY4lyYozYwdI6ClyJrLACoY1JNywjM/wwno212B2/aDnzOMKPeZdi5py7pPh/RKlfEPOdsT6kVYf79S3A==
dependencies:
"@babel/runtime" "^7.3.1"
web3-core "1.0.0-beta.41"
web3-core-helpers "1.0.0-beta.41"
web3-core-method "1.0.0-beta.41"
web3-core-promievent "1.0.0-beta.41"
web3-core-subscriptions "1.0.0-beta.41"
web3-eth-abi "1.0.0-beta.41"
web3-eth-accounts "1.0.0-beta.41"
web3-eth-contract "1.0.0-beta.41"
web3-eth-ens "1.0.0-beta.41"
web3-eth-iban "1.0.0-beta.41"
web3-eth-personal "1.0.0-beta.41"
web3-net "1.0.0-beta.41"
web3-providers "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
web3-net@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.41.tgz#a371805739126bdf6fa3a404fcb9ec0a29480314"
integrity sha512-JbefIb0jas6HhkQFx24UzhX0cy4ZZdebNk6eqAQ9G8YDz9yq8Cc7FwVppZDQW7Ka+O7StpRLUzoxXIIeIfiSkA==
web3-core "1.0.0-beta.43"
web3-core-helpers "1.0.0-beta.43"
web3-core-method "1.0.0-beta.43"
web3-core-promievent "1.0.0-beta.43"
web3-core-subscriptions "1.0.0-beta.43"
web3-eth-abi "1.0.0-beta.43"
web3-eth-accounts "1.0.0-beta.43"
web3-eth-contract "1.0.0-beta.43"
web3-eth-ens "1.0.0-beta.43"
web3-eth-iban "1.0.0-beta.43"
web3-eth-personal "1.0.0-beta.43"
web3-net "1.0.0-beta.43"
web3-providers "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
web3-net@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.43.tgz#43635466a100ff3f6702a784223c24965a48dc21"
integrity sha512-fWoTlXneRG/4yOTQ+c6iwDcu63OE4PnB+PRnBFLtArTPVr6U1ndQwRUOzlm8PgkGd6ieHZuFnrj3uGcUR6ZU9A==
dependencies:
"@babel/runtime" "^7.3.1"
lodash "^4.17.11"
web3-core "1.0.0-beta.41"
web3-core-helpers "1.0.0-beta.41"
web3-core-method "1.0.0-beta.41"
web3-providers "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
web3-core "1.0.0-beta.43"
web3-core-helpers "1.0.0-beta.43"
web3-core-method "1.0.0-beta.43"
web3-providers "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
web3-providers@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-providers/-/web3-providers-1.0.0-beta.41.tgz#64e7d61429b677280c9dcb7d310f3a0759c8f8a9"
integrity sha512-KTx9yw2inJwUvl5BDHzAYPQ5WmUAPaO/IxWHvS7WvPOCiQonq2HbSF9bOSl5uWkqWeqhIl0nUhGKU7ED5q6yLQ==
web3-providers@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-providers/-/web3-providers-1.0.0-beta.43.tgz#158f4a0ac8325b484c7383a01d1d7a3ab638926a"
integrity sha512-1BMXNLzmQ9HlX8lBq9Eze4yE1VMFekp/fp85hL+garX3fVEeIDVNtA7/AnWGaoe19UMNx8WGAPL19pgUnkoCCQ==
dependencies:
"@babel/runtime" "^7.3.1"
"@types/node" "^10.12.18"
@ -11361,26 +11375,27 @@ web3-providers@1.0.0-beta.41:
websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible"
xhr2-cookies "1.1.0"
web3-shh@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.41.tgz#d24bf9a8a1993e7ee15a7523838dc8ab8468dee4"
integrity sha512-qFXmyAGh7oYizTv/vJWjMrSe5IMCBpU3IR1bliCd/GVqGKylH13N1oe8ifWk+EO8jPfFy7qWlJrbMKfAOAj2Lg==
web3-shh@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.43.tgz#2231540323946e29f590bbfe36bae9c47b4c4fd9"
integrity sha512-S4Petfrb+998persyS/zuK4Qhc8BDqefVpMhAyMiF8tCbOSvP667L4cOV6FCq5peAJ/hJk1HEC3WUJlX5m6SBw==
dependencies:
"@babel/runtime" "^7.3.1"
web3-core "1.0.0-beta.41"
web3-core-helpers "1.0.0-beta.41"
web3-core-method "1.0.0-beta.41"
web3-core-subscriptions "1.0.0-beta.41"
web3-net "1.0.0-beta.41"
web3-providers "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
web3-utils@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.41.tgz#83301ffd85cbf9b99a8bd5ca828f96113a1ccc71"
integrity sha512-6Vf+jzZEsYoAvECm+/mQx4L0p5eOxpDmbR7baFUZpB+DQyNFBc3XPSMUNWHBLqe/OpXjDrS2TeYv40Ai8bd4bg==
web3-core "1.0.0-beta.43"
web3-core-helpers "1.0.0-beta.43"
web3-core-method "1.0.0-beta.43"
web3-core-subscriptions "1.0.0-beta.43"
web3-net "1.0.0-beta.43"
web3-providers "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
web3-utils@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.43.tgz#a8f167c7bc9ab0632e43ba3de5cf0aca12038d96"
integrity sha512-fdV3TELMnbzV75awcRFFzbfpt+FhJrKUHFRmE1KSxFIPSDFTgTBo3KpCvS5D4PajXOAnNb0QbSML9ekSqKtx/A==
dependencies:
"@babel/runtime" "^7.3.1"
"@types/bn.js" "^4.11.4"
"@types/node" "^10.12.18"
bn.js "4.11.8"
eth-lib "0.2.8"
@ -11390,23 +11405,23 @@ web3-utils@1.0.0-beta.41:
randomhex "0.1.5"
utf8 "2.1.1"
web3@1.0.0-beta.41:
version "1.0.0-beta.41"
resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.41.tgz#ed2f7ae63d4db89820a4f6b0d4a0a7cc53eee5e1"
integrity sha512-G4s5GBLP+xxwcIhevc4rmSg1PpQB/ou6KGCAR6UqGaRXNkSysjjifU1eywaCpcbjIN5FXjIOh/HGjVMdkt0VZQ==
web3@1.0.0-beta.43:
version "1.0.0-beta.43"
resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.43.tgz#e378315a3262a90b93b453529ada7c82db5d76b1"
integrity sha512-jEQJ4NHoMI3dPum/kiFiVapOa16Pi5dZ5WWg3A7IpRPlalmaQTV2EGffYmfLbLt0UbbpBhF2M2yXnaGLy4izLQ==
dependencies:
"@babel/runtime" "^7.3.1"
"@types/node" "^10.12.18"
web3-bzz "1.0.0-beta.41"
web3-core "1.0.0-beta.41"
web3-core-helpers "1.0.0-beta.41"
web3-core-method "1.0.0-beta.41"
web3-eth "1.0.0-beta.41"
web3-eth-personal "1.0.0-beta.41"
web3-net "1.0.0-beta.41"
web3-providers "1.0.0-beta.41"
web3-shh "1.0.0-beta.41"
web3-utils "1.0.0-beta.41"
web3-bzz "1.0.0-beta.43"
web3-core "1.0.0-beta.43"
web3-core-helpers "1.0.0-beta.43"
web3-core-method "1.0.0-beta.43"
web3-eth "1.0.0-beta.43"
web3-eth-personal "1.0.0-beta.43"
web3-net "1.0.0-beta.43"
web3-providers "1.0.0-beta.43"
web3-shh "1.0.0-beta.43"
web3-utils "1.0.0-beta.43"
webidl-conversions@^4.0.2:
version "4.0.2"
@ -11525,10 +11540,10 @@ webpack-sources@^1.3.0:
source-list-map "^2.0.0"
source-map "~0.6.1"
webpack@^4.29.1:
version "4.29.1"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.1.tgz#a6533d7bc6a6b1ed188cb029d53d231be777e175"
integrity sha512-dY3KyQIVeg6cDPj9G5Bnjy9Pt9SoCpbNWl0RDKHstbd3MWe0dG9ri4RQRpCm43iToy3zoA1IMOpFkJ8Clnc7FQ==
webpack@^4.29.3:
version "4.29.3"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.3.tgz#e0b406a7b4201ed5e4fb4f84fd7359f9a7db4647"
integrity sha512-xPJvFeB+8tUflXFq+OgdpiSnsCD5EANyv56co5q8q8+YtEasn5Sj3kzY44mta+csCIEB0vneSxnuaHkOL2h94A==
dependencies:
"@webassemblyjs/ast" "1.7.11"
"@webassemblyjs/helper-module-context" "1.7.11"
@ -11549,7 +11564,7 @@ webpack@^4.29.1:
mkdirp "~0.5.0"
neo-async "^2.5.0"
node-libs-browser "^2.0.0"
schema-utils "^0.4.4"
schema-utils "^1.0.0"
tapable "^1.1.0"
terser-webpack-plugin "^1.1.0"
watchpack "^1.5.0"

Loading…
Cancel
Save