Add sandwich video to landing page

This commit is contained in:
fragosti
2019-07-31 15:15:55 -07:00
parent dadab94644
commit 73a38ab4f4
10 changed files with 667 additions and 70 deletions

View File

@@ -46,7 +46,6 @@
"ethereumjs-util": "^5.1.1",
"find-versions": "^2.0.0",
"is-mobile": "^0.2.2",
"valid-url": "^1.0.9",
"jsonschema": "^1.2.0",
"less": "^2.7.2",
"lodash": "^4.17.11",
@@ -67,6 +66,7 @@
"react-lazyload": "^2.3.0",
"react-loadable": "^5.5.0",
"react-markdown": "^4.0.6",
"react-modal-video": "^1.2.2",
"react-popper": "^1.0.0-beta.6",
"react-redux": "^5.0.3",
"react-responsive": "^6.0.1",
@@ -75,15 +75,17 @@
"react-scrollable-anchor": "^0.6.1",
"react-syntax-highlighter": "^10.1.1",
"react-tooltip": "^3.2.7",
"react-transition-group": "^4.2.1",
"react-typist": "^2.0.4",
"redux": "^3.6.0",
"redux-devtools-extension": "^2.13.2",
"rollbar": "^2.4.7",
"semver-sort": "0.0.4",
"semver": "5.5.0",
"semver-sort": "0.0.4",
"styled-components": "^4.1.1",
"thenby": "^1.2.3",
"truffle-contract": "2.0.1",
"valid-url": "^1.0.9",
"web3-provider-engine": "14.0.6",
"xml-js": "^1.6.4"
},
@@ -94,7 +96,6 @@
"@types/deep-equal": "^1.0.0",
"@types/find-versions": "^2.0.0",
"@types/is-mobile": "0.3.0",
"@types/valid-url": "^1.0.2",
"@types/jsonschema": "^1.1.1",
"@types/lodash": "4.14.104",
"@types/material-ui": "^0.20.0",
@@ -110,15 +111,19 @@
"@types/react-scroll": "1.5.3",
"@types/react-syntax-highlighter": "^0.0.8",
"@types/react-tap-event-plugin": "0.0.30",
"@types/react-transition-group": "^4.2.0",
"@types/redux": "^3.6.0",
"@types/valid-url": "^1.0.2",
"@types/web3-provider-engine": "^14.0.0",
"awesome-typescript-loader": "^5.2.1",
"css-loader": "0.23.x",
"less-loader": "^4.1.0",
"make-promises-safe": "^1.1.0",
"node-sass": "^4.12.0",
"raw-loader": "^0.5.1",
"react-svg-loader": "^2.1.0",
"rollbar-sourcemap-webpack-plugin": "^2.4.0",
"sass-loader": "^7.1.0",
"shx": "^0.2.2",
"source-map-loader": "^0.2.4",
"style-loader": "0.23.x",

View File

@@ -108,7 +108,7 @@ const ButtonBase = styled.button<ButtonInterface>`
border-color: ${props => props.isTransparent && !props.isNoBorder && !props.isWithArrow && '#00AE99'};
svg {
transform: translate3d(2px, -2px, 0);
transform: ${props => (props.isWithArrow ? 'translate3d(2px, -2px, 0)' : '')};
}
}
`;

View File

@@ -117,7 +117,7 @@ const ButtonWrap = styled.div`
flex-direction: column;
justify-content: center;
* {
> * {
padding-left: 20px;
padding-right: 20px;
}
@@ -138,26 +138,39 @@ const BackgroundWrap = styled.div`
top: 0;
`;
export const Hero: React.StatelessComponent<Props> = (props: Props) => (
<Section padding={props.sectionPadding} isAnnouncement={!!props.announcement}>
{!!props.background && <BackgroundWrap>{props.background}</BackgroundWrap>}
<Wrap isCentered={!props.figure} isFullWidth={props.isFullWidth} isCenteredMobile={props.isCenteredMobile}>
{props.figure && <Content width="400px">{props.figure}</Content>}
export class Hero extends React.Component<Props> {
public static defaultProps = {
isCenteredMobile: true,
};
public shouldComponentUpdate(): boolean {
// The hero is a static component with animations.
// We do not want state changes in parent components to re-trigger animations.
return false;
}
public render(): React.ReactNode {
const props = this.props;
return (
<Section padding={props.sectionPadding} isAnnouncement={!!props.announcement}>
{!!props.background && <BackgroundWrap>{props.background}</BackgroundWrap>}
<Wrap
isCentered={!props.figure}
isFullWidth={props.isFullWidth}
isCenteredMobile={props.isCenteredMobile}
>
{props.figure && <Content width="400px">{props.figure}</Content>}
<Content width={props.maxWidth ? props.maxWidth : props.figure ? '546px' : '678px'}>
{!!props.announcement && <Announcement {...props.announcement} />}
<Title isLarge={props.isLargeTitle} maxWidth={props.maxWidthHeading}>
{props.title}
</Title>
<Content width={props.maxWidth ? props.maxWidth : props.figure ? '546px' : '678px'}>
{!!props.announcement && <Announcement {...props.announcement} />}
<Title isLarge={props.isLargeTitle} maxWidth={props.maxWidthHeading}>
{props.title}
</Title>
<Description>{props.description}</Description>
<Description>{props.description}</Description>
{props.actions && <ButtonWrap>{props.actions}</ButtonWrap>}
</Content>
</Wrap>
</Section>
);
Hero.defaultProps = {
isCenteredMobile: true,
};
{props.actions && <ButtonWrap>{props.actions}</ButtonWrap>}
</Content>
</Wrap>
</Section>
);
}
}

View File

@@ -0,0 +1,259 @@
import React from 'react';
import CSSTransition from 'react-transition-group/CSSTransition';
interface ModalVideoClassnames {
modalVideoEffect: string;
modalVideo: string;
modalVideoClose: string;
modalVideoBody: string;
modalVideoInner: string;
modalVideoIframeWrap: string;
modalVideoCloseBtn: string;
}
interface Aria {
openMessage: string;
dismissBtnMessage: string;
}
export interface ModalVideoProps {
onClose?: () => void;
isOpen: boolean;
classNames?: ModalVideoClassnames;
ratio?: string;
animationSpeed?: number;
allowFullScreen?: boolean;
aria?: Aria;
videoId?: string;
channel?: string;
youtube?: any;
vimeo?: any;
youku?: any;
}
export interface ModalVideoState {
isOpen: boolean;
}
export class ModalVideo extends React.Component<ModalVideoProps, ModalVideoState> {
public static defaultProps: ModalVideoProps = {
channel: 'youtube',
isOpen: false,
youtube: {
autoplay: 1,
cc_load_policy: 1,
color: null,
controls: 1,
disablekb: 0,
enablejsapi: 0,
end: null,
fs: 1,
h1: null,
iv_load_policy: 1,
list: null,
listType: null,
loop: 0,
modestbranding: null,
origin: null,
playlist: null,
playsinline: null,
rel: 0,
showinfo: 1,
start: 0,
wmode: 'transparent',
theme: 'dark',
},
ratio: '16:9',
vimeo: {
api: false,
autopause: true,
autoplay: true,
byline: true,
callback: null,
color: null,
height: null,
loop: false,
maxheight: null,
maxwidth: null,
player_id: null,
portrait: true,
title: true,
width: null,
xhtml: false,
},
youku: {
autoplay: 1,
show_related: 0,
},
allowFullScreen: true,
animationSpeed: 300,
classNames: {
modalVideoEffect: 'modal-video-effect',
modalVideo: 'modal-video',
modalVideoClose: 'modal-video-close',
modalVideoBody: 'modal-video-body',
modalVideoInner: 'modal-video-inner',
modalVideoIframeWrap: 'modal-video-movie-wrap',
modalVideoCloseBtn: 'modal-video-close-btn',
},
aria: {
openMessage: 'You just openned the modal video',
dismissBtnMessage: 'Close the modal by clicking here',
},
};
public modal: any;
public modalbtn: any;
constructor(props: ModalVideoProps) {
super(props);
this.state = {
isOpen: false,
};
this.closeModal = this.closeModal.bind(this);
this.updateFocus = this.updateFocus.bind(this);
}
public openModal(): void {
this.setState({ isOpen: true });
}
public closeModal(): void {
this.setState({ isOpen: false });
if (typeof this.props.onClose === 'function') {
this.props.onClose();
}
}
public keydownHandler(e: any): void {
if (e.keyCode === 27) {
this.closeModal();
}
}
public componentDidMount(): void {
document.addEventListener('keydown', this.keydownHandler.bind(this));
}
public componentWillUnmount(): void {
document.removeEventListener('keydown', this.keydownHandler.bind(this));
}
public componentWillReceiveProps(nextProps: ModalVideoProps): void {
this.setState({ isOpen: nextProps.isOpen });
}
public componentDidUpdate(): void {
if (this.state.isOpen && this.modal) {
this.modal.focus();
}
}
public updateFocus(e: any): void {
if (e.keyCode === 9) {
e.preventDefault();
e.stopPropagation();
if (this.modal === document.activeElement) {
this.modalbtn.focus();
} else {
this.modal.focus();
}
}
}
public getQueryString(obj: any): string {
let url = '';
for (const key of Object.keys(obj)) {
if (obj.hasOwnProperty(key)) {
if (obj[key] !== null) {
url += `${key}=${obj[key]}&`;
}
}
}
return url.substr(0, url.length - 1);
}
public getYoutubeUrl(youtube: any, videoId: string): string {
const query = this.getQueryString(youtube);
return `//www.youtube.com/embed/${videoId}?${query}`;
}
public getVimeoUrl(vimeo: any, videoId: string): string {
const query = this.getQueryString(vimeo);
return `//play.vimeo.com/video/${videoId}?${query}`;
}
public getYoukuUrl(youku: any, videoId: string): string {
const query = this.getQueryString(youku);
return `//player.youku.com/embed/${videoId}?${query}`;
}
public getVideoUrl(opt: any, videoId: string): string {
if (opt.channel === 'youtube') {
return this.getYoutubeUrl(opt.youtube, videoId);
} else if (opt.channel === 'vimeo') {
return this.getVimeoUrl(opt.vimeo, videoId);
} else if (opt.channel === 'youku') {
return this.getYoukuUrl(opt.youku, videoId);
}
return '';
}
public getPadding(ratio: string): string {
const arr = ratio.split(':');
const width = Number(arr[0]);
const height = Number(arr[1]);
const padding = (height * 100) / width;
return `${padding}%`;
}
public render(): React.ReactNode {
const style = {
paddingBottom: this.getPadding(this.props.ratio),
};
return (
<CSSTransition classNames={this.props.classNames.modalVideoEffect} timeout={this.props.animationSpeed}>
{() => {
if (!this.state.isOpen) {
return null;
}
return (
<div
className={this.props.classNames.modalVideo}
tabIndex={-1}
role="dialog"
aria-label={this.props.aria.openMessage}
onClick={this.closeModal}
ref={node => {
this.modal = node;
}}
onKeyDown={this.updateFocus}
>
<div className={this.props.classNames.modalVideoBody}>
<div className={this.props.classNames.modalVideoInner}>
<div className={this.props.classNames.modalVideoIframeWrap} style={style}>
<button
className={this.props.classNames.modalVideoCloseBtn}
aria-label={this.props.aria.dismissBtnMessage}
ref={node => {
this.modalbtn = node;
}}
onKeyDown={this.updateFocus}
/>
<iframe
width="920"
height="460"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
src={this.getVideoUrl(this.props, this.props.videoId)}
frameBorder="0"
allowFullScreen={this.props.allowFullScreen}
tabIndex={-1}
/>
</div>
</div>
</div>
</div>
);
}}
</CSSTransition>
);
}
}

View File

@@ -3,8 +3,10 @@ import * as React from 'react';
import { Button } from 'ts/components/button';
import { Hero } from 'ts/components/hero';
import { LandingAnimation } from 'ts/components/heroImage';
import { Icon } from 'ts/components/icon';
import { HeroAnimation } from 'ts/components/heroAnimation';
import { ModalVideo } from 'ts/components/modals/modal_video';
import { WebsitePaths } from 'ts/types';
// const announcement = {
@@ -13,26 +15,68 @@ import { WebsitePaths } from 'ts/types';
// shouldOpenInNewTab: false,
// };
export const SectionLandingHero = () => (
<Hero
title="Powering Decentralized Exchange"
isLargeTitle={true}
isFullWidth={true}
description="0x is an open protocol that enables the peer-to-peer exchange of assets on the Ethereum blockchain."
figure={<LandingAnimation image={<HeroAnimation />} />}
actions={<HeroActions />}
// announcement={announcement}
/>
);
export interface SectionlandingHeroProps {}
export interface SectionLandingHeroState {
isVideoOpen: boolean;
}
const HeroActions = () => (
export class SectionLandingHero extends React.Component<SectionlandingHeroProps, SectionLandingHeroState> {
public state: SectionLandingHeroState = {
isVideoOpen: false,
};
public render(): React.ReactNode {
const { isVideoOpen } = this.state;
return (
<>
<Hero
title="Powering Decentralized Exchange"
isLargeTitle={true}
isFullWidth={true}
description="0x is an open protocol that enables the peer-to-peer exchange of assets on the Ethereum blockchain."
figure={<LandingAnimation image={<HeroAnimation />} />}
actions={<HeroActions onPlayVideoClick={this._openModalVideo} />}
// announcement={announcement}
/>
<ModalVideo
channel="youtube"
isOpen={isVideoOpen}
videoId="c04eIt3FQ5I"
onClose={this._closeModalVideo}
youtube={{
autoplay: 1,
controls: 0,
showinfo: 0,
modestbranding: 1,
}}
ratio="21:9"
/>
</>
);
}
private _closeModalVideo = (): void => {
this.setState({ isVideoOpen: false });
};
private _openModalVideo = (): void => {
this.setState({ isVideoOpen: true });
};
}
interface HeroActionsProps {
onPlayVideoClick: () => void;
}
const HeroActions: React.FC<HeroActionsProps> = props => (
<>
<Button href="https://0x.org/docs" isInline={true}>
Get Started
</Button>
<Button to={WebsitePaths.Why} isTransparent={true} isInline={true}>
Learn More
<Button shouldUseAnchorTag={true} onClick={props.onPlayVideoClick} isTransparent={true} isInline={true}>
<Icon name="play" size={16} margin={[0, 16, 0, -16]} />
Play Video
</Button>
</>
);

View File

@@ -12,6 +12,7 @@ declare module 'react-scrollable-anchor';
declare module 'react-headroom';
declare module 'zeroExInstant';
declare module 'react-toggle-component';
declare module 'react-modal-video';
declare module '*.json' {
const json: any;

View File

@@ -0,0 +1,3 @@
<svg width="14" height="16" viewBox="0 0 14 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 16V0L13.3333 7.56757L0 16Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 158 B

View File

@@ -38,6 +38,7 @@ tradeHistoryStorage.clearIfRequired();
trackedTokenStorage.clearIfRequired();
import 'less/all.less';
import 'react-modal-video/scss/modal-video.scss';
// We pass modulePromise returning lambda instead of module promise,
// cause we only want to import the module when the user navigates to the page.

View File

@@ -19,7 +19,7 @@ const config = {
publicPath: '/',
},
externals: {
zeroExInstant: 'zeroExInstant'
zeroExInstant: 'zeroExInstant',
},
devtool: 'source-map',
resolve: {
@@ -55,6 +55,10 @@ const config = {
loader: 'style-loader!css-loader!less-loader',
exclude: /node_modules/,
},
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader'],
},
{
test: /\.css$/,
loaders: ['style-loader', 'css-loader'],
@@ -63,16 +67,14 @@ const config = {
test: /\.svg$/,
use: [
{
loader: "react-svg-loader",
loader: 'react-svg-loader',
options: {
svgo: {
plugins: [
{ removeViewBox: false }
],
}
}
}
]
plugins: [{ removeViewBox: false }],
},
},
},
],
},
],
},
@@ -109,8 +111,8 @@ const config = {
// Source: https://github.com/webpack/webpack-dev-server/issues/1491
https: {
spdy: {
protocols: ['http/1.1']
}
protocols: ['http/1.1'],
},
},
},
};
@@ -119,9 +121,7 @@ module.exports = (_env, argv) => {
let plugins = [];
if (argv.mode === 'development') {
config.mode = 'development';
plugins.concat([
new BundleAnalyzerPlugin(),
]);
plugins.concat([new BundleAnalyzerPlugin()]);
} else {
config.mode = 'production';
plugins = plugins.concat([

305
yarn.lock
View File

@@ -875,6 +875,13 @@
dependencies:
regenerator-runtime "^0.12.0"
"@babel/runtime@^7.4.5":
version "7.5.5"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132"
integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==
dependencies:
regenerator-runtime "^0.13.2"
"@babel/types@^7.0.0":
version "7.1.3"
resolved "https://registry.npmjs.org/@babel/types/-/types-7.1.3.tgz#3a767004567060c2f40fca49a304712c525ee37d"
@@ -1688,13 +1695,6 @@
version "0.22.9"
resolved "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.9.tgz#b5990152604c2ada749b7f88cab3476f21f39d7b"
"@types/chokidar@^1.7.5":
version "1.7.5"
resolved "https://registry.yarnpkg.com/@types/chokidar/-/chokidar-1.7.5.tgz#1fa78c8803e035bed6d98e6949e514b133b0c9b6"
dependencies:
"@types/events" "*"
"@types/node" "*"
"@types/deep-equal@^1.0.0":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@types/deep-equal/-/deep-equal-1.0.1.tgz#71cfabb247c22bcc16d536111f50c0ed12476b03"
@@ -2037,6 +2037,13 @@
version "0.0.30"
resolved "https://registry.yarnpkg.com/@types/react-tap-event-plugin/-/react-tap-event-plugin-0.0.30.tgz#123f35080412f489b6770c5a65c159ff96654cb5"
"@types/react-transition-group@^4.2.0":
version "4.2.0"
resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.0.tgz#86ddb509ce3de27341c7cb7797abb99b1c4676bf"
integrity sha512-8KkpFRwqS9U1dtVVw1kt/MmWgLmbd5iK5TgqsaeC7fAm74J4j/HiBiRC8eETvwjGGju48RAwyZ3l5iv1H1x93Q==
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@16.4.16":
version "16.4.16"
resolved "https://registry.npmjs.org/@types/react/-/react-16.4.16.tgz#99f91b1200ae8c2062030402006d3b3c3a177043"
@@ -2777,6 +2784,11 @@ async-eventemitter@ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a
dependencies:
async "^2.4.0"
async-foreach@^0.1.3:
version "0.1.3"
resolved "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=
async-limiter@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
@@ -3933,6 +3945,13 @@ braces@^2.3.1, braces@^2.3.2:
split-string "^3.0.2"
to-regex "^3.0.1"
braces@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
broadway@~0.3.2, broadway@~0.3.6:
version "0.3.6"
resolved "https://registry.yarnpkg.com/broadway/-/broadway-0.3.6.tgz#7dbef068b954b7907925fd544963b578a902ba7a"
@@ -4745,6 +4764,16 @@ clone-buffer@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
clone-deep@^2.0.1:
version "2.0.2"
resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==
dependencies:
for-own "^1.0.0"
is-plain-object "^2.0.4"
kind-of "^6.0.0"
shallow-clone "^1.0.0"
clone-stats@^0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
@@ -5373,6 +5402,14 @@ cross-fetch@^2.1.0:
node-fetch "2.1.1"
whatwg-fetch "2.0.3"
cross-spawn@^3.0.0:
version "3.0.1"
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI=
dependencies:
lru-cache "^4.0.1"
which "^1.2.9"
cross-spawn@^4, cross-spawn@^4.0.0:
version "4.0.2"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
@@ -6093,6 +6130,13 @@ dom-helpers@^3.2.0:
version "3.3.1"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6"
dom-helpers@^3.4.0:
version "3.4.0"
resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8"
integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==
dependencies:
"@babel/runtime" "^7.1.2"
dom-serializer@0, dom-serializer@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
@@ -7693,6 +7737,11 @@ for-each@^0.3.2, for-each@~0.3.2:
dependencies:
is-function "~1.0.0"
for-in@^0.1.3:
version "0.1.8"
resolved "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=
for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -7986,6 +8035,13 @@ gaze@^0.5.1:
dependencies:
globule "~0.1.0"
gaze@^1.0.0:
version "1.1.3"
resolved "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==
dependencies:
globule "^1.0.0"
genfun@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1"
@@ -8242,7 +8298,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, gl
once "^1.3.0"
path-is-absolute "^1.0.0"
glob@^7.1.4:
glob@^7.1.4, glob@~7.1.1:
version "7.1.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
dependencies:
@@ -8361,6 +8417,15 @@ globby@^9.2.0:
pify "^4.0.1"
slash "^2.0.0"
globule@^1.0.0:
version "1.2.1"
resolved "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d"
integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==
dependencies:
glob "~7.1.1"
lodash "~4.17.10"
minimatch "~3.0.2"
globule@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5"
@@ -8416,10 +8481,27 @@ got@^6.7.1:
unzip-response "^2.0.1"
url-parse-lax "^1.0.0"
graceful-fs@4.1.15, graceful-fs@^3.0.0, graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@~1.2.0:
graceful-fs@^3.0.0:
version "3.0.11"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818"
integrity sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=
dependencies:
natives "^1.1.0"
graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
version "4.1.15"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
graceful-fs@^4.2.0:
version "4.2.0"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
graceful-fs@~1.2.0:
version "1.2.3"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364"
integrity sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=
"graceful-readlink@>= 1.0.0":
version "1.0.1"
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
@@ -9081,6 +9163,11 @@ imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
in-publish@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
integrity sha1-4g/146KvwmkDILbcVSaCqcf631E=
indent-string@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
@@ -10158,6 +10245,11 @@ jmespath@0.15.0:
version "0.15.0"
resolved "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217"
js-base64@^2.1.8:
version "2.5.1"
resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==
js-base64@^2.1.9:
version "2.4.3"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582"
@@ -10186,7 +10278,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
js-tokens@^4.0.0:
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -10815,7 +10907,7 @@ loader-utils@^0.2.16, loader-utils@~0.2.2:
json5 "^0.5.0"
object-assign "^4.0.1"
loader-utils@^1.0.2:
loader-utils@^1.0.1, loader-utils@^1.0.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
dependencies:
@@ -11010,6 +11102,11 @@ lodash.sortby@^4.7.0:
version "4.7.0"
resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
lodash.tail@^4.1.1:
version "4.1.1"
resolved "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=
lodash.template@^3.0.0:
version "3.6.2"
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
@@ -11074,7 +11171,7 @@ lodash@4.17.11:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1:
lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@~4.17.10:
version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
@@ -11136,6 +11233,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3
dependencies:
js-tokens "^3.0.0"
loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
lottie-web@^5.1.3:
version "5.4.1"
resolved "https://registry.yarnpkg.com/lottie-web/-/lottie-web-5.4.1.tgz#98465741d4907293656cab31e395d79d0546ef26"
@@ -11727,6 +11831,14 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
mixin-object@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=
dependencies:
for-in "^0.1.3"
is-extendable "^0.1.1"
mkdirp-promise@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1"
@@ -11876,7 +11988,7 @@ nan@^2.11.0:
version "2.12.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
nan@^2.12.1:
nan@^2.12.1, nan@^2.13.2:
version "2.14.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
@@ -11901,6 +12013,11 @@ nanomatch@^1.2.9:
snapdragon "^0.8.1"
to-regex "^3.0.1"
natives@^1.1.0:
version "1.1.6"
resolved "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb"
integrity sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -12046,6 +12163,24 @@ node-gyp@^3.6.2:
tar "^2.0.0"
which "1"
node-gyp@^3.8.0:
version "3.8.0"
resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==
dependencies:
fstream "^1.0.0"
glob "^7.0.3"
graceful-fs "^4.1.2"
mkdirp "^0.5.0"
nopt "2 || 3"
npmlog "0 || 1 || 2 || 3 || 4"
osenv "0"
request "^2.87.0"
rimraf "2"
semver "~5.3.0"
tar "^2.0.0"
which "1"
node-gyp@^5.0.2:
version "5.0.3"
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.3.tgz#80d64c23790244991b6d44532f0a351bedd3dd45"
@@ -12141,6 +12276,29 @@ node-pre-gyp@^0.12.0:
semver "^5.3.0"
tar "^4"
node-sass@^4.12.0:
version "4.12.0"
resolved "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017"
integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==
dependencies:
async-foreach "^0.1.3"
chalk "^1.1.1"
cross-spawn "^3.0.0"
gaze "^1.0.0"
get-stdin "^4.0.1"
glob "^7.0.3"
in-publish "^2.0.0"
lodash "^4.17.11"
meow "^3.7.0"
mkdirp "^0.5.1"
nan "^2.13.2"
node-gyp "^3.8.0"
npmlog "^4.0.0"
request "^2.88.0"
sass-graph "^2.2.4"
stdout-stream "^1.4.0"
"true-case-path" "^1.0.2"
nodemon@^1.11.0:
version "1.17.3"
resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.17.3.tgz#3b0bbc2ee05ccb43b1aef15ba05c63c7bc9b8530"
@@ -12376,7 +12534,7 @@ npm-run-path@^2.0.0:
dependencies:
path-key "^2.0.0"
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2:
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
dependencies:
@@ -14224,9 +14382,9 @@ react-helmet@^5.2.0:
prop-types "^15.5.4"
react-side-effect "^1.1.0"
"react-highlight@https://github.com/0xProject/react-highlight.git#a70c7631e09508dafc4719cbcc6f121074e1937d":
react-highlight@0xproject/react-highlight#react-peer-deps:
version "1.0.0"
resolved "https://github.com/0xProject/react-highlight.git#a70c7631e09508dafc4719cbcc6f121074e1937d"
resolved "https://codeload.github.com/0xproject/react-highlight/tar.gz/a70c7631e09508dafc4719cbcc6f121074e1937d"
dependencies:
highlight.js "^9.11.0"
highlightjs-solidity "^1.0.5"
@@ -14287,6 +14445,13 @@ react-markdown@^4.0.6:
unist-util-visit "^1.3.0"
xtend "^4.0.1"
react-modal-video@^1.2.2:
version "1.2.2"
resolved "https://registry.npmjs.org/react-modal-video/-/react-modal-video-1.2.2.tgz#d45069f112a4e79306470b7e893fbe03252b8e6b"
integrity sha512-isfaRFvCZZRWkPvoPRzXL1FaHtI3PQHqkX2UrtOGjGUPNGZeMBDT5xPqON7h4e5CGvpf62XIq3lxT0InPKAUgw==
dependencies:
react-transition-group "^2.2.1"
react-popper@^1.0.0-beta.6:
version "1.0.0-beta.6"
resolved "https://registry.npmjs.org/react-popper/-/react-popper-1.0.0-beta.6.tgz#cb27a2ac56adccbaf5f9c4132387289069240834"
@@ -14430,6 +14595,26 @@ react-transition-group@^1.2.1:
prop-types "^15.5.6"
warning "^3.0.0"
react-transition-group@^2.2.1:
version "2.9.0"
resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d"
integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==
dependencies:
dom-helpers "^3.4.0"
loose-envify "^1.4.0"
prop-types "^15.6.2"
react-lifecycles-compat "^3.0.4"
react-transition-group@^4.2.1:
version "4.2.1"
resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.2.1.tgz#61fc9e36568bff9a1fe4e60fae323c8a6dbc0680"
integrity sha512-IXrPr93VzCPupwm2O6n6C2kJIofJ/Rp5Ltihhm9UfE8lkuVX2ng/SUUl/oWjblybK9Fq2Io7LGa6maVqPB762Q==
dependencies:
"@babel/runtime" "^7.4.5"
dom-helpers "^3.4.0"
loose-envify "^1.4.0"
prop-types "^15.6.2"
react-typist@^2.0.4:
version "2.0.4"
resolved "https://registry.npmjs.org/react-typist/-/react-typist-2.0.4.tgz#e7ee4de53ead913d363d38f07b700c00ce271be0"
@@ -14943,7 +15128,7 @@ request@2.81.0, "request@>=2.9.0 <2.82.0":
tunnel-agent "^0.6.0"
uuid "^3.0.0"
request@^2.47.0, request@^2.87.0:
request@^2.47.0, request@^2.87.0, request@^2.88.0:
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
dependencies:
@@ -15314,6 +15499,28 @@ sane@^2.0.0:
optionalDependencies:
fsevents "^1.2.3"
sass-graph@^2.2.4:
version "2.2.4"
resolved "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=
dependencies:
glob "^7.0.0"
lodash "^4.0.0"
scss-tokenizer "^0.2.3"
yargs "^7.0.0"
sass-loader@^7.1.0:
version "7.1.0"
resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d"
integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==
dependencies:
clone-deep "^2.0.1"
loader-utils "^1.0.1"
lodash.tail "^4.1.1"
neo-async "^2.5.0"
pify "^3.0.0"
semver "^5.5.0"
sax@1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
@@ -15382,6 +15589,14 @@ scryptsy@^1.2.1:
dependencies:
pbkdf2 "^3.0.3"
scss-tokenizer@^0.2.3:
version "0.2.3"
resolved "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE=
dependencies:
js-base64 "^2.1.8"
source-map "^0.4.2"
secp256k1@^3.0.1:
version "3.5.0"
resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.5.0.tgz#677d3b8a8e04e1a5fa381a1ae437c54207b738d0"
@@ -15595,6 +15810,15 @@ sha3@^1.1.0:
dependencies:
nan "2.10.0"
shallow-clone@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==
dependencies:
is-extendable "^0.1.1"
kind-of "^5.0.0"
mixin-object "^2.0.1"
shallowequal@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-0.2.2.tgz#1e32fd5bcab6ad688a4812cb0cc04efc75c7014e"
@@ -15940,6 +16164,13 @@ source-map-url@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
source-map@^0.4.2:
version "0.4.4"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
integrity sha1-66T12pwNyZneaAMti092FzZSA2s=
dependencies:
amdefine ">=0.0.4"
source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
@@ -16117,6 +16348,13 @@ statuses@~1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
stdout-stream@^1.4.0:
version "1.4.1"
resolved "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de"
integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==
dependencies:
readable-stream "^2.0.1"
stealthy-require@^1.1.0:
version "1.1.1"
resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
@@ -16953,6 +17191,13 @@ trough@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.2.tgz#7f1663ec55c480139e2de5e486c6aef6cc24a535"
"true-case-path@^1.0.2":
version "1.0.3"
resolved "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d"
integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==
dependencies:
glob "^7.1.2"
truffle-blockchain-utils@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/truffle-blockchain-utils/-/truffle-blockchain-utils-0.0.1.tgz#07a58e55bb0555a64208c9119c0b04ffe1464aa4"
@@ -18745,6 +18990,13 @@ yargs-parser@^2.4.1:
camelcase "^3.0.0"
lodash.assign "^4.0.6"
yargs-parser@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=
dependencies:
camelcase "^3.0.0"
yargs-parser@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
@@ -18908,6 +19160,25 @@ yargs@^4.7.1:
y18n "^3.2.1"
yargs-parser "^2.4.1"
yargs@^7.0.0:
version "7.1.0"
resolved "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=
dependencies:
camelcase "^3.0.0"
cliui "^3.2.0"
decamelize "^1.1.1"
get-caller-file "^1.0.1"
os-locale "^1.4.0"
read-pkg-up "^1.0.1"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
string-width "^1.0.2"
which-module "^1.0.0"
y18n "^3.2.1"
yargs-parser "^5.0.0"
yargs@^8.0.2:
version "8.0.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"