diff --git a/.babelrc b/.babelrc index 6b3ad3440..209724ac5 100644 --- a/.babelrc +++ b/.babelrc @@ -1,8 +1,5 @@ { - "presets": [ - "@babel/preset-env", - "@babel/preset-react" - ], + "presets": ["@babel/preset-env", "@babel/preset-react"], "plugins": [ [ "@babel/plugin-proposal-decorators", @@ -13,6 +10,7 @@ "@babel/plugin-transform-runtime", "@babel/plugin-proposal-class-properties", "@babel/plugin-proposal-object-rest-spread", - "babel-plugin-styled-components" + "babel-plugin-styled-components", + "transform-react-remove-prop-types" ] } diff --git a/.eslintrc.yml b/.eslintrc.yml index 855c3f4b8..8f2dfabb3 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -62,7 +62,7 @@ rules: react/self-closing-comp: ['warn'] react/jsx-indent: ['warn'] react/no-array-index-key: ['warn'] - react/prefer-stateless-function: ['warn'] + react/prefer-stateless-function: off # JSX jsx-a11y/anchor-is-valid: - warn @@ -77,6 +77,7 @@ rules: jsx-a11y/click-events-have-key-events: ['warn'] jsx-a11y/no-static-element-interactions: ['warn'] jsx-a11y/media-has-caption: ['warn'] + jsx-a11y/accessible-emoji: ['warn'] jsx-a11y/anchor-has-content: off # Following rule haves been disabled for compatibility with diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 4624fea19..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**System:** - - OS: [e.g. iOS, Ubuntu, Windows, Mac OSx] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 7561bced3..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project - ---- - -**Ensure that the feature request is not already listed on [Feathub](https://feathub.com/CaptainFact/captain-fact)** - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.gitignore b/.gitignore index ca25e8247..dd11aa5d9 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ .tmproj nbproject Thumbs.db +.history # NPM packages folder. node_modules/ @@ -31,6 +32,9 @@ coverage # Ignore cypress videos and screenshots cypress/videos +# Ignore styleguide build +styleguide + # API dev image resources dev/dev_docker_api_resources/* !dev/dev_docker_api_resources/.keep diff --git a/.idea/captain-fact-frontend.iml b/.idea/captain-fact-frontend.iml deleted file mode 100644 index 3ed9fa791..000000000 --- a/.idea/captain-fact-frontend.iml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index 1c12d1e1d..9275ffa9f 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,8 @@ should be enough. Otherwise follow the procedure below: - `npm start` - Start the frontend - `npm run test` - run all unit tests +Frontend is started on http://localhost:3333 + A default account should have been created for you with email=`admin@captainfact.io` and password=`password`. diff --git a/app/API/graphql_api.js b/app/API/graphql_api.js index 77253695c..36ecbcc1c 100644 --- a/app/API/graphql_api.js +++ b/app/API/graphql_api.js @@ -1,8 +1,23 @@ import ApolloClient from 'apollo-boost' import { GRAPHQL_API_URL } from '../config' +const authMiddleware = operation => { + const token = localStorage.getItem('token') + + if (token) { + operation.setContext({ + headers: { + authorization: `Bearer ${token}` + } + }) + } + + return operation +} + const GraphQLClient = new ApolloClient({ - uri: GRAPHQL_API_URL + uri: GRAPHQL_API_URL, + request: authMiddleware }) export default GraphQLClient diff --git a/app/API/graphql_queries.js b/app/API/graphql_queries.js index ea75742e9..d7e86c59b 100644 --- a/app/API/graphql_queries.js +++ b/app/API/graphql_queries.js @@ -43,3 +43,20 @@ export const VideosAddedByUserQuery = gql` } } ` + +export const loggedInUserSubscriptionsQuery = gql` + query LoggedInUserSubscriptions($scopes: [String]) { + loggedInUser { + subscriptions(scopes: $scopes) { + id + scope + videoId + isSubscribed + video { + hashId + title + } + } + } + } +` diff --git a/app/components/App/index.jsx b/app/components/App/Layout.jsx similarity index 91% rename from app/components/App/index.jsx rename to app/components/App/Layout.jsx index 9fc58c049..29eb8fe3a 100644 --- a/app/components/App/index.jsx +++ b/app/components/App/Layout.jsx @@ -1,9 +1,10 @@ import React from 'react' import { connect } from 'react-redux' - import { Helmet } from 'react-helmet' +import { Flex } from '@rebass/grid' import { FlashMessages } from '../Utils' +import Navbar from './Navbar' import Sidebar from './Sidebar' import { MainModalContainer } from '../Modal/MainModalContainer' import PublicAchievementUnlocker from '../Users/PublicAchievementUnlocker' @@ -13,7 +14,7 @@ import BackgroundNotifier from './BackgroundNotifier' locale: state.UserPreferences.locale, sidebarExpended: state.UserPreferences.sidebarExpended })) -export default class App extends React.PureComponent { +export default class Layout extends React.PureComponent { render() { const { locale, sidebarExpended, children } = this.props const mainContainerClass = sidebarExpended ? undefined : 'expended' @@ -25,6 +26,7 @@ export default class App extends React.PureComponent { +
{children} diff --git a/app/components/App/Logo.jsx b/app/components/App/Logo.jsx index 0f3f2976a..73be680d0 100644 --- a/app/components/App/Logo.jsx +++ b/app/components/App/Logo.jsx @@ -1,15 +1,56 @@ import React from 'react' +import PropTypes from 'prop-types' +import styled, { css } from 'styled-components' +import { themeGet } from 'styled-system' +import { Flex } from '@rebass/grid' import logo from '../../assets/logo.svg' import borderlessLogo from '../../assets/logo-borderless.svg' +import { Span, Small } from '../StyledUtils/Text' -const Logo = ({ borderless = false }) => ( -

- C - aptain - Fact - (Beta) -

+const LogoContainer = styled(Flex)` + max-height: 100%; + align-items: center; + font-family: ${themeGet('fontFamily.serif')}; + color: ${themeGet('colors.black.500')}; + + ${props => css` + font-size: ${props.size / 2}px; + height: ${props.size}px; + `} +` + +const Image = styled.img` + height: 100%; + width: ${props => props.size}px; +` + +/** + * The main website logo. + */ +const Logo = ({ borderless, height }) => ( + + C + aptain + + Fact + + + (Beta) + + ) +Logo.propTypes = { + /** If true, a version of the logo without border will be used */ + borderless: PropTypes.bool, + /** Base height of the component in pixels */ + height: PropTypes.number +} + +Logo.defaultProps = { + borderless: false, + height: 30 +} + export default Logo diff --git a/app/components/App/Navbar.jsx b/app/components/App/Navbar.jsx new file mode 100644 index 000000000..4b20bcec8 --- /dev/null +++ b/app/components/App/Navbar.jsx @@ -0,0 +1,234 @@ +import React from 'react' +import { connect } from 'react-redux' +import { Link, withRouter } from 'react-router' +import styled, { withTheme, css } from 'styled-components' +import { Flex, Box } from '@rebass/grid' +import { themeGet } from 'styled-system' + +import { Menu } from 'styled-icons/boxicons-regular/Menu' +import { Bell } from 'styled-icons/fa-solid/Bell' +import { CaretDown } from 'styled-icons/fa-solid/CaretDown' +import { UserCircle } from 'styled-icons/fa-regular/UserCircle' + +import { withNamespaces } from 'react-i18next' +import Popup from 'reactjs-popup' +import Logo from './Logo' +import { toggleSidebar } from '../../state/user_preferences/reducer' +import UserPicture from '../Users/UserPicture' +import { USER_PICTURE_LARGE } from '../../constants' +import { withLoggedInUser } from '../LoggedInUser/UserProvider' +import UnstyledButton from '../StyledUtils/UnstyledButton' +import { LoadingFrame } from '../Utils/LoadingFrame' +import { fadeIn } from '../StyledUtils/Keyframes' +import UserMenu from '../Users/UserMenu' +import StyledLink from '../StyledUtils/StyledLink' +import Notifications from '../LoggedInUser/Notifications' +import { ErrorView } from '../Utils/ErrorView' +import Container from '../StyledUtils/Container' +import NotificationsPopupContent from '../Notifications/NotificationsPopupContent' + +const NavbarContainer = styled(Flex)` + position: fixed; + z-index: 9999; + top: 0; + width: 100%; + justify-content: space-between; + align-items: center; + background: rgba(255, 255, 255, 0.9); + height: ${themeGet('navbarHeight')}px; + border-bottom: 1px solid ${themeGet('colors.black.200')}; + box-shadow: 0px 0px 20px 5px rgba(125, 125, 125, 0.3); + transition: top 0.3s; + animation: ${fadeIn} 0.3s; +` + +const UserMenuTrigger = styled(Flex)` + align-items: center; + height: 38px; + cursor: pointer; + + &:hover { + color: ${themeGet('colors.black.300')}; + } + + figure { + max-height: 100%; + max-width: 38px; + } +` + +const UserMenuEntry = styled(({ isActive, ...props }) => )` + display: block; + border-left: 2px solid white; + background: white; + + &:hover { + background: ${themeGet('colors.black.50')}; + } + + ${props => props.index > 0 + && css` + border-top: 1px solid ${themeGet('colors.black.100')}; + `} + + ${props => props.isActive + && css` + border-left: 2px solid ${themeGet('colors.primary')}; + `} +` + +UserMenuEntry.defaultProps = { + px: 2, + py: 1 +} + +const UserLoading = styled(UserCircle)` + animation: ${fadeIn} 0.75s infinite linear alternate; + margin-right: ${themeGet('space.2')}; +` + +const MenuToggleSwitch = styled(Menu)` + height: 100%; + width: 45px; + cursor: pointer; + user-select: none; + + &:hover { + color: ${themeGet('colors.black.500')}; + } +` + +const Navbar = ({ + t, + theme, + toggleSidebar, + loggedInUser, + isAuthenticated, + loggedInUserLoading, + location +}) => { + const loginRedirect = !location.pathname.startsWith('/login') && !location.pathname.startsWith('/signup') + ? location.pathname + : '/videos' + + return ( + + + + {/* Left */} + + + toggleSidebar()} /> + + + + + + {/* Center - will hold the search bar in the future */} + {/* Right */} + {loggedInUserLoading ? ( + + ) : ( + + {isAuthenticated ? ( + + + + + )} + > + + {({ loading, error, notifications, markAsSeen }) => { + if (loading) { + return + } else if (error) { + return + } + + return ( + + ) + }} + + + + + + + )} + > + + {({ Icon, key, route, title, index, isActive, onClick }) => key !== '/notifications' && ( + + + +   + {title} + + + ) + } + + + + ) : ( + + + {t('menu.login')} + + + {t('menu.extension')} + + + {t('menu.signup')} + + + )} + + )} + + + ) +} + +export default withTheme( + connect( + null, + { toggleSidebar } + )(withLoggedInUser(withNamespaces('main')(withRouter(Navbar)))) +) diff --git a/app/components/App/Sidebar.jsx b/app/components/App/Sidebar.jsx index bb0a9d026..84b448910 100644 --- a/app/components/App/Sidebar.jsx +++ b/app/components/App/Sidebar.jsx @@ -4,30 +4,22 @@ import { Link } from 'react-router' import { withNamespaces } from 'react-i18next' import classNames from 'classnames' import capitalize from 'voca/capitalize' +import { Flex } from '@rebass/grid' -import { Icon } from '../Utils' -import { - MOBILE_WIDTH_THRESHOLD, - USER_PICTURE_SMALL, - MIN_REPUTATION_MODERATION -} from '../../constants' -import { LoadingFrame } from '../Utils/LoadingFrame' +import { LinkExternal } from 'styled-icons/octicons/LinkExternal' + +import { MOBILE_WIDTH_THRESHOLD, MIN_REPUTATION_MODERATION } from '../../constants' import RawIcon from '../Utils/RawIcon' import ReputationGuard from '../Utils/ReputationGuard' -import ScoreTag from '../Users/ScoreTag' import { closeSidebar, toggleSidebar } from '../../state/user_preferences/reducer' -import UserPicture from '../Users/UserPicture' -import Logo from './Logo' -import Button from '../Utils/Button' -import { withLoggedInUser } from '../LoggedInUser/UserProvider' import UserLanguageSelector from '../LoggedInUser/UserLanguageSelector' +import ExternalLinkNewTab from '../Utils/ExternalLinkNewTab' @connect( state => ({ sidebarExpended: state.UserPreferences.sidebarExpended }), { toggleSidebar, closeSidebar } ) @withNamespaces('main') -@withLoggedInUser export default class Sidebar extends React.PureComponent { constructor(props) { super(props) @@ -47,6 +39,7 @@ export default class Sidebar extends React.PureComponent { className={classes} activeClassName="is-active" onClick={this.closeSideBarIfMobile} + title={children} {...props} > {iconName && } @@ -59,113 +52,23 @@ export default class Sidebar extends React.PureComponent { return
  • {this.MenuLink(props)}
  • } - renderUserLinks() { - const { - loggedInUser: { username, reputation }, - t - } = this.props - const baseLink = `/u/${username}` - return ( -
    - -
      - - {t('menu.myActivity')} - - - {t('menu.settings')} - -
    -
    - ) - } - - renderConnectLinks() { - return ( -
    - - - {this.props.t('menu.loginSignup')} - -
    - ) - } - - renderUserSection() { - if (this.props.loggedInUserLoading) { - return ( -
    - -
    - ) - } - - return this.props.isAuthenticated ? this.renderUserLinks() : this.renderConnectLinks() - } - render() { const { sidebarExpended, className, t } = this.props return ( - + ) } @@ -190,19 +101,11 @@ export default class Sidebar extends React.PureComponent { {capitalize(t('entities.video_plural'))} - + {t('menu.moderation')} ) } - - usernameFontSize() { - return `${1.4 - this.props.loggedInUser.username.length / 30}em` - } } diff --git a/app/components/Home/CFSocialProfiles.jsx b/app/components/Home/CFSocialProfiles.jsx index e0a5aeabe..752627a96 100644 --- a/app/components/Home/CFSocialProfiles.jsx +++ b/app/components/Home/CFSocialProfiles.jsx @@ -1,7 +1,8 @@ import React from 'react' import PropTypes from 'prop-types' import { Flex } from '@rebass/grid' -import styled from 'styled-components' +import styled, { withTheme } from 'styled-components' +import { get } from 'lodash' import { Discord } from 'styled-icons/fa-brands/Discord' import { Facebook } from 'styled-icons/fa-brands/Facebook' @@ -11,7 +12,6 @@ import { Github } from 'styled-icons/fa-brands/Github' import ExternalLinkNewTab from '../Utils/ExternalLinkNewTab' const IconLinkContainer = styled(ExternalLinkNewTab)` - color: white; margin: 0 0.5em; ` @@ -19,10 +19,10 @@ const IconLinkContainer = styled(ExternalLinkNewTab)` * Render a social icon with the proper link and add a popup with the title * of the social network. */ -const SocialIconLink = ({ Icon, name, url, size }) => { +const SocialIconLink = ({ Icon, name, url, size, color }) => { return ( - + ) } @@ -31,32 +31,37 @@ const SocialIconLink = ({ Icon, name, url, size }) => { * Render social profiles icons for other CaptainFact profiles on * Facebook, Twitter... */ -const CFSocialProfiles = ({ size = '2em' }) => { +const CFSocialProfiles = ({ size, color, justifyContent, theme }) => { + const themeColor = get(theme, `colors.${color}`, color) return ( - + ) @@ -64,7 +69,14 @@ const CFSocialProfiles = ({ size = '2em' }) => { CFSocialProfiles.propTypes = { /** Icons size. Default to 2em */ - size: PropTypes.string + size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + /** Passed to Flex */ + justifyContent: PropTypes.string } -export default CFSocialProfiles +CFSocialProfiles.defaultProps = { + size: '2em', + justifyContent: 'center' +} + +export default withTheme(CFSocialProfiles) diff --git a/app/components/Home/Home.jsx b/app/components/Home/Home.jsx index 4ae1b5e21..498a4f6ca 100644 --- a/app/components/Home/Home.jsx +++ b/app/components/Home/Home.jsx @@ -1,10 +1,9 @@ import React from 'react' -import { connect } from 'react-redux' import { Link } from 'react-router' import { withNamespaces, Trans } from 'react-i18next' import { Flex, Box } from '@rebass/grid' -import * as Matomo from '../../API/matomo' +import * as Matomo from '../../API/matomo' import { Icon } from '../Utils' import InvitationRequestForm from '../Users/InvitationRequestForm' import { INVITATION_SYSTEM } from '../../config' @@ -94,9 +93,9 @@ export default class Home extends React.PureComponent { - +

    {t('ambassadors')}

    @@ -111,7 +110,7 @@ export default class Home extends React.PureComponent {
    - +

    diff --git a/app/components/LoggedInUser/LogoutPage.jsx b/app/components/LoggedInUser/LogoutPage.jsx new file mode 100644 index 000000000..602bf6dea --- /dev/null +++ b/app/components/LoggedInUser/LogoutPage.jsx @@ -0,0 +1,37 @@ +import React from 'react' +import { withRouter } from 'react-router' +import { withNamespaces } from 'react-i18next' + +import { withLoggedInUser } from './UserProvider' +import { LoadingFrame } from '../Utils/LoadingFrame' + +@withRouter +@withNamespaces('user') +@withLoggedInUser +export default class LogoutPage extends React.Component { + componentDidMount() { + this.logoutAndRedirect() + } + + componentDidUpdate() { + this.logoutAndRedirect() + } + + async logoutAndRedirect() { + // Redirect if user is loading + if (this.props.loggedInUserLoading) { + return + } + + // Already unauthenticated, redirect + if (this.props.isAuthenticated) { + await this.props.logout() + } + + this.props.router.replace('/') + } + + render() { + return + } +} diff --git a/app/components/LoggedInUser/Notifications.jsx b/app/components/LoggedInUser/Notifications.jsx new file mode 100644 index 000000000..174cb3794 --- /dev/null +++ b/app/components/LoggedInUser/Notifications.jsx @@ -0,0 +1,118 @@ +import React from 'react' +import PropTypes from 'prop-types' +import gql from 'graphql-tag' +import { Query, Mutation } from 'react-apollo' +import { get } from 'lodash' +import { withRouter } from 'react-router' + +export const loggedInUserNotificationsQuery = gql` + query LoggedInUserNotifications( + $page: Int! = 1 + $pageSize: Int! = 30 + $filter: String = ALL + ) { + loggedInUser { + notifications(page: $page, pageSize: $pageSize, filter: $filter) { + pageNumber + pageSize + totalEntries + totalPages + entries { + id + seenAt + insertedAt + type + action { + entity + type + speakerId + statementId + commentId + user { + name + username + } + video { + hashId + title + } + speaker { + id + slug + fullName + } + comment { + text + } + changes + } + } + } + } + } +` + +const markAsSeenMutation = gql` + mutation UpdateNotification($ids: [Int!], $seen: Boolean!) { + updateNotifications(ids: $ids, seen: $seen) { + id + seenAt + } + } +` + +/** + * A connector to get a user's notifications + */ +const Notifications = ({ children, pageSize, pageNumber, pollInterval, filter }) => { + return ( + + {({ loading, error, data }) => { + const paginatedNotifications = get(data, 'loggedInUser.notifications', { + pageNumber: 1, + totalPages: 1, + entries: [] + }) + + return ( + + {markAsSeen => children({ + notifications: paginatedNotifications.entries, + loading, + error, + pageNumber: paginatedNotifications.pageNumber, + totalPages: paginatedNotifications.totalPages, + markAsSeen: (ids, seen) => { + return markAsSeen({ + variables: Array.isArray(ids) ? { ids, seen } : { ids: [ids], seen } + }) + } + }) + } + + ) + }} + + ) +} + +Notifications.propTypes = { + children: PropTypes.func.isRequired, + pageSize: PropTypes.number, + pageNumber: PropTypes.number, + filter: PropTypes.oneOf(['ALL', 'SEEN', 'UNSEEN']), + pollInterval: PropTypes.number +} + +Notifications.defaultProps = { + /** Default refresh interval in ms. Default = 15s. Set to 0 to disable. */ + pollInterval: 15000, + filter: 'ALL' +} + +export default withRouter(Notifications) diff --git a/app/components/LoggedInUser/NotificationsPage.jsx b/app/components/LoggedInUser/NotificationsPage.jsx new file mode 100644 index 000000000..da3a092fb --- /dev/null +++ b/app/components/LoggedInUser/NotificationsPage.jsx @@ -0,0 +1,187 @@ +import React, { Component } from 'react' +import { withRouter, Link } from 'react-router' +import { Flex, Box } from '@rebass/grid' +import { translate } from 'react-i18next' +import FlipMove from 'react-flip-move' + +import { Clock } from 'styled-icons/fa-regular/Clock' +import { Check } from 'styled-icons/fa-solid/Check' +import { PrimitiveDot } from 'styled-icons/octicons/PrimitiveDot' + +import { optionsToQueryString } from '../../lib/url_utils' +import { LoadingFrame } from '../Utils/LoadingFrame' +import { ErrorView } from '../Utils/ErrorView' +import PaginationMenu from '../Utils/PaginationMenu' +import Message from '../Utils/Message' +import NotificationDetails from '../Notifications/NotificationDetails' +import { TimeSince } from '../Utils/TimeSince' +import Notifications from './Notifications' +import { Span } from '../StyledUtils/Text' +import StyledLink from '../StyledUtils/StyledLink' +import Container from '../StyledUtils/Container' +import Button from '../Utils/Button' +import { withLoggedInUser } from './UserProvider' + +const FILTERS = ['ALL', 'SEEN', 'UNSEEN'] + +@withRouter +@translate('notifications') +@withLoggedInUser +export default class NotificationsPage extends Component { + buildLink(page, filter) { + return `/u/${this.props.loggedInUser.username}/notifications${optionsToQueryString({ + page: page === 1 ? undefined : page, + filter: filter === 'ALL' ? undefined : filter + })}` + } + + getFilter(location) { + return FILTERS.includes(location.query.filter) ? location.query.filter : 'ALL' + } + + renderFilters(selected) { + return FILTERS.map(filter => ( + + {this.props.t(`filters.${filter}`)} + + )) + } + + renderNotifications(notifications, markAsSeen) { + return notifications.length === 0 ? ( + {this.props.t('empty')} + ) : ( + + {notifications.map(n => ( + + {({ message, seenAt, link, insertedAt }) => ( + + + markAsSeen(n.id, true)} + color="black.400" + mb={1} + > + {message} + + + +   + + + + + {seenAt ? ( + markAsSeen(n.id, false)} + /> + ) : ( + markAsSeen(n.id, true)} + /> + )} + + + )} + + ))} + + ) + } + + render() { + const { t, location } = this.props + const pageNumber = parseInt(location.query.page) || 1 + const filter = this.getFilter(location) + const pollInterval = filter === 'ALL' && pageNumber === 1 ? 15000 : 0 // Only poll on first page + + return ( + + {({ loading, error, notifications, pageNumber, totalPages, markAsSeen }) => { + if (error) { + return + } + + const hasSeen = notifications && notifications.find(n => n.seenAt) + const hasUnseen = notifications && notifications.find(n => !n.seenAt) + return ( + + + + + {this.renderFilters(filter)} + + + + + + + + + {loading ? ( + + ) : ( + this.renderNotifications(notifications, markAsSeen) + )} + + + {totalPages > 1 && ( + window.scrollTo({ top: 0 })} + pollInterval={pollInterval} + LinkBuilder={({ 'data-page': page, ...props }) => { + return ( + + ) + }} + /> + )} + + ) + }} + + ) + } +} diff --git a/app/components/LoggedInUser/SubscriptionsPage.jsx b/app/components/LoggedInUser/SubscriptionsPage.jsx new file mode 100644 index 000000000..60f324cf8 --- /dev/null +++ b/app/components/LoggedInUser/SubscriptionsPage.jsx @@ -0,0 +1,69 @@ +import React, { Component } from 'react' +import { Query } from 'react-apollo' +import { get } from 'lodash' +import { Flex, Box } from '@rebass/grid' +import { Link } from 'react-router' + +import { Videos } from 'styled-icons/boxicons-regular/Videos' + +import { translate } from 'react-i18next' +import { loggedInUserSubscriptionsQuery } from '../../API/graphql_queries' +import { videoURL } from '../../lib/cf_routes' +import { LoadingFrame } from '../Utils/LoadingFrame' +import SubscribeBtn from '../Notifications/SubscribeBtn' +import { ErrorView } from '../Utils/ErrorView' +import { StyledH2 } from '../StyledUtils/Title' +import Message from '../Utils/Message' + +@translate('main') +export default class NotificationsPage extends Component { + renderScopeIcon() { + return + } + + render() { + return ( + + {({ data, loading, error }) => { + if (loading) { + return + } else if (error) { + return + } + + const subscriptions = get(data, 'loggedInUser.subscriptions', []) + return ( + + + {this.props.t('entities.video_plural')} + + + {subscriptions.length === 0 ? ( + No subscriptions + ) : ( + subscriptions.map(subscription => ( + + + {this.renderScopeIcon(subscription.scope)} + + + {subscription.video.title} + + + + )) + )} + + + ) + }} + + ) + } +} diff --git a/app/components/Notifications/NotificationDetails.jsx b/app/components/Notifications/NotificationDetails.jsx new file mode 100644 index 000000000..cb779614c --- /dev/null +++ b/app/components/Notifications/NotificationDetails.jsx @@ -0,0 +1,117 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { withNamespaces, Trans } from 'react-i18next' +import { truncate } from 'lodash' + +import { userActionURL } from '../../lib/cf_routes' + +const getTruncatedChange = (changes, key, maxLength) => { + try { + const parsedChanges = JSON.parse(changes) + return truncate(parsedChanges[key], maxLength) || '' + } catch { + return '' + } +} + +const messageRenderers = { + new_comment: ({ action: { video, user, comment } }) => { + return user ? ( + + New comment from @{{ username: user.username }} on{' '} + {{ videoTitle: video.title }}:{' '} + {{ text: truncate(comment.text, 40) }} + + ) : ( + + New comment from deleted account on {{ videoTitle: video.title }} + : {{ text: truncate(comment.text, 40) }} + + ) + }, + reply_to_comment: ({ action: { user, video, comment } }) => ( + + @{{ username: user.username }} replied to your comment on{' '} + {{ videoTitle: video.title }}:{' '} + {{ text: truncate(comment.text, 40) }} + + ), + new_speaker: ({ action: { user, speaker, video } }) => ( + + @{{ username: user.username }} added{' '} + {{ speakerName: speaker.fullName }} to the speakers on{' '} + {{ videoTitle: video.title }} + + ), + new_statement: ({ action: { user, video, changes } }) => ( + + @{{ username: user.username }} added a statement on{' '} + {{ videoTitle: video.title }}: " + {{ text: getTruncatedChange(changes, 'text', 40) }}" + + ), + updated_statement: ({ action: { user, video, changes } }) => ( + + @{{ username: user.username }} updated a statement on{' '} + {{ videoTitle: video.title }}: " + {{ text: getTruncatedChange(changes, 'text', 40) }}" + + ), + updated_video: ({ action: { user, video } }) => ( + + @{{ username: user.username }} updated video's details:{' '} + {{ videoTitle: video.title }} + + ), + updated_speaker: ({ action: { user, speaker } }) => ( + + @{{ username: user.username }} updated{' '} + {{ speakerName: speaker.fullName }}'s details + + ), + removed_speaker: ({ action: { user, video, speaker } }) => ( + + @{{ username: user.username }} removed{' '} + {{ speakerName: speaker.fullName }} from{' '} + {{ videoTitle: video.title }} + + ), + removed_statement: ({ action: { user, video } }) => ( + + @{{ username: user.username }} removed a statement on{' '} + {{ videoTitle: video.title }} + + ), + email_confirmed: () => ( + + Yay! Your email is now confirmed 💪💪💪 (+15pts reputation) + + ) +} + +/** + * This component takes a notification and provide `children` all the data + * it needs to display it. + */ +const NotificationDetails = ({ notification, children }) => { + const renderer = messageRenderers[notification.type] + + if (!renderer) { + console.warn('Unknown renderer for notification', notification) + return null + } + + const link = userActionURL(notification.action) + return children({ ...notification, message: renderer(notification), link }) +} + +NotificationDetails.propTypes = { + /** The notification to display */ + notification: PropTypes.shape({ + type: PropTypes.string.isRequired + }).isRequired, + /** The children in charge of rendering the notification */ + children: PropTypes.func.isRequired +} + +export default withNamespaces('notifications')(NotificationDetails) diff --git a/app/components/Notifications/NotificationsPopupContent.jsx b/app/components/Notifications/NotificationsPopupContent.jsx new file mode 100644 index 000000000..9315247c8 --- /dev/null +++ b/app/components/Notifications/NotificationsPopupContent.jsx @@ -0,0 +1,107 @@ +import React from 'react' +import PropTypes from 'prop-types' +import styled, { css } from 'styled-components' +import { Link } from 'react-router' +import { themeGet } from 'styled-system' +import { Flex, Box } from '@rebass/grid' +import { translate } from 'react-i18next' +import { transparentize } from 'polished' + +import { Clock } from 'styled-icons/fa-regular/Clock' + +import StyledLink from '../StyledUtils/StyledLink' +import { TimeSince } from '../Utils/TimeSince' +import Container from '../StyledUtils/Container' +import { Span } from '../StyledUtils/Text' +import NotificationDetails from './NotificationDetails' +import { userNotificationsURL } from '../../lib/cf_routes' + +const NotificationContainer = styled(({ hasBeenSeen, ...props }) => )` + display: flex; + padding: ${themeGet('space.2')}; + font-size: ${themeGet('fontSizes.6')}; + + ${props => !props.hasBeenSeen + && css` + background: ${transparentize(0.95, themeGet('colors.primary')(props))}; + `} + + &:hover { + background: ${themeGet('colors.black.50')}; + } +` + +/** + * The content of the notification popup displayed when clicking on the top-right + * bell in navbar. + */ +const NotificationsPopupContent = ({ user, notifications, markAsSeen, t }) => { + const hasUnseen = notifications.find(n => !n.seenAt) + return ( + + + Notifications + markAsSeen(notifications.map(n => n.id), true)} + > + {t('markAllAsRead')} + + + {notifications.length === 0 ? ( + {t('empty')} + ) : ( + + + {notifications.map(n => ( + + {({ message, seenAt, insertedAt, link }) => ( + markAsSeen(n.id, true)} + hasBeenSeen={Boolean(seenAt)} + > + + + {message} + + + +   + + + + + )} + + ))} + + + {t('seeAll')} + + + )} + + ) +} + +NotificationsPopupContent.propTypes = { + notifications: PropTypes.arrayOf(PropTypes.object), + user: PropTypes.shape({ username: PropTypes.string.isRequired }).isRequired, + markAsSeen: PropTypes.func.isRequired +} + +export default translate('notifications')(NotificationsPopupContent) diff --git a/app/components/Notifications/SubscribeBtn.jsx b/app/components/Notifications/SubscribeBtn.jsx new file mode 100644 index 000000000..11aea21e5 --- /dev/null +++ b/app/components/Notifications/SubscribeBtn.jsx @@ -0,0 +1,112 @@ +import React from 'react' +import PropTypes from 'prop-types' +import styled, { css } from 'styled-components' +import { themeGet } from 'styled-system' +import { Box } from '@rebass/grid' + +import { BellSlash } from 'styled-icons/fa-solid/BellSlash' +import { Bell } from 'styled-icons/fa-solid/Bell' +import gql from 'graphql-tag' +import { Mutation } from 'react-apollo' + +const SubscribeIconContainer = styled(Box)` + width: 1em; + height: 1em; + transform: rotateY(${props => (props.isSubscribed ? 180 : 0)}deg); + transition: transform 0.3s; + transform-style: preserve-3d; + svg { + position: absolute; + width: 1em; + height: 1em; + border: 1px solid; + border-radius: 1em; + transition: opacity 0.3s, color 0.3s; + backface-visibility: hidden; + } + + ${props => props.onClick + && css` + cursor: pointer; + `} +` + +const IconSubscribed = styled(Bell)` + color: ${themeGet('colors.yellow')}; + transform: rotateY(180deg); + padding: 0.25em; + &:hover { + opacity: 0.7; + } +` + +const IconUnsubscribed = styled(BellSlash)` + color: ${themeGet('colors.black.300')}; + opacity: 0.7; + padding: 0.2em; + &:hover { + color: #e2b26f; + opacity: 0.7; + } +` + +const updateSubscriptionQuery = gql` + mutation UpdateSubscription($entityId: Int!, $scope: String!, $isSubscribed: Boolean!) { + updateSubscription(entityId: $entityId, scope: $scope, isSubscribed: $isSubscribed) { + id + isSubscribed + reason + } + } +` + +const SubscribeBtn = ({ + size, + isSubscribed, + onChange, + entityId, + scope, + onClick, + deprecatedOverrideClick, + ...props +}) => ( + + {updateSubscription => ( + + (deprecatedOverrideClick + ? deprecatedOverrideClick(!isSubscribed) + : updateSubscription({ + variables: { isSubscribed: !isSubscribed } + })) + } + > + + + + + )} + +) + +SubscribeBtn.propTypes = { + /** Entity ID */ + entityId: PropTypes.number.isRequired, + /** Entity type */ + scope: PropTypes.oneOf(['comment', 'statement', 'video']), + /** Current state (subscribed or unsubscribed) */ + isSubscribed: PropTypes.bool.isRequired, + /** DEPRECATED: Override the graphql mutation */ + deprecatedOverrideClick: PropTypes.func, + /** Icon size */ + size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), + /** Any props from `Box` */ + ...Box.propTypes +} + +SubscribeBtn.defaultProps = { + size: '1em' +} + +export default SubscribeBtn diff --git a/app/components/Statements/StatementsList.jsx b/app/components/Statements/StatementsList.jsx index a6ae7fecb..eae5fd236 100644 --- a/app/components/Statements/StatementsList.jsx +++ b/app/components/Statements/StatementsList.jsx @@ -16,6 +16,7 @@ import { FULLHD_WIDTH_THRESHOLD } from '../../constants' @connect( state => ({ + speakers: state.VideoDebate.video.data.speakers, statements: state.VideoDebate.statements.data, statementFormSpeakerId: statementFormValueSelector(state, 'speaker_id'), offset: state.VideoDebate.video.offset @@ -35,13 +36,17 @@ export default class StatementsList extends React.PureComponent { } render() { - const { statementFormSpeakerId, statements, offset } = this.props + const { speakers, statementFormSpeakerId, statements, offset } = this.props + const speakerId = + speakers.size === 1 && !statementFormSpeakerId + ? speakers.get(0).id + : statementFormSpeakerId return (
    {statementFormSpeakerId !== undefined && ( this.props.closeStatementForm()} diff --git a/app/components/StyledUtils/Container.jsx b/app/components/StyledUtils/Container.jsx new file mode 100644 index 000000000..d12926705 --- /dev/null +++ b/app/components/StyledUtils/Container.jsx @@ -0,0 +1,42 @@ +import styled from 'styled-components' +import tag from 'clean-tag' +import * as styledSystem from 'styled-system' + +const Container = styled(tag)` + ${styledSystem.alignItems} + ${styledSystem.alignSelf} + ${styledSystem.background} + ${styledSystem.backgroundImage} + ${styledSystem.backgroundPosition} + ${styledSystem.backgroundRepeat} + ${styledSystem.backgroundSize} + ${styledSystem.borders} + ${styledSystem.borderColor} + ${styledSystem.borderRadius} + ${styledSystem.bottom} + ${styledSystem.boxShadow} + ${styledSystem.color} + ${styledSystem.display} + ${styledSystem.flex} + ${styledSystem.flexDirection} + ${styledSystem.flexWrap} + ${styledSystem.fontSize} + ${styledSystem.height} + ${styledSystem.justifyContent} + ${styledSystem.left} + ${styledSystem.maxHeight} + ${styledSystem.maxWidth} + ${styledSystem.minHeight} + ${styledSystem.minWidth} + ${styledSystem.order} + ${styledSystem.position} + ${styledSystem.right} + ${styledSystem.size} + ${styledSystem.space} + ${styledSystem.top} + ${styledSystem.textAlign} + ${styledSystem.width} + ${styledSystem.zIndex} +` + +export default Container diff --git a/app/components/StyledUtils/Keyframes.jsx b/app/components/StyledUtils/Keyframes.jsx new file mode 100644 index 000000000..126651e2b --- /dev/null +++ b/app/components/StyledUtils/Keyframes.jsx @@ -0,0 +1,14 @@ +/** + * A set of styled-components keyframes animations + */ + +import { keyframes } from 'styled-components' + +export const fadeIn = keyframes` + from { + opacity: 0; + } + to { + opacity: 1; + } +` diff --git a/app/components/StyledUtils/StyledLink.jsx b/app/components/StyledUtils/StyledLink.jsx new file mode 100644 index 000000000..acc0f3f6a --- /dev/null +++ b/app/components/StyledUtils/StyledLink.jsx @@ -0,0 +1,14 @@ +import styled from 'styled-components' +import { Link } from 'react-router' +import { fontSize, fontWeight, space, color, borders, display } from 'styled-system' + +const StyledLink = styled(Link)` + ${color} + ${fontSize} + ${fontWeight} + ${space} + ${borders} + ${display} +` + +export default StyledLink diff --git a/app/components/StyledUtils/Text.jsx b/app/components/StyledUtils/Text.jsx new file mode 100644 index 000000000..df40755c6 --- /dev/null +++ b/app/components/StyledUtils/Text.jsx @@ -0,0 +1,17 @@ +import styled from 'styled-components' +import { fontSize, fontWeight, space, color, display } from 'styled-system' + +export const Span = styled.span` + ${color} + ${fontSize} + ${fontWeight} + ${space} +` + +export const Small = styled.small` + ${color} + ${fontSize} + ${fontWeight} + ${space} + ${display} +` diff --git a/app/components/StyledUtils/Title.jsx b/app/components/StyledUtils/Title.jsx index 1c33bb69c..4f4b0a79b 100644 --- a/app/components/StyledUtils/Title.jsx +++ b/app/components/StyledUtils/Title.jsx @@ -1,11 +1,16 @@ import styled from 'styled-components' -import { fontSize, space, themeGet } from 'styled-system' +import { fontSize, space, themeGet, style } from 'styled-system' + +export const textTransform = style({ + prop: 'textTransform' +}) export const StyledH1 = styled.h1` font-size: ${themeGet('fontSizes.0')}; margin-bottom: ${themeGet('space.4')}; ${fontSize} ${space} + ${textTransform} ` export const StyledH2 = styled.h2` @@ -13,6 +18,7 @@ export const StyledH2 = styled.h2` margin-bottom: ${themeGet('space.4')}; ${fontSize} ${space} + ${textTransform} ` export const StyledH3 = styled.h3` @@ -20,6 +26,7 @@ export const StyledH3 = styled.h3` margin-bottom: ${themeGet('space.3')}; ${fontSize} ${space} + ${textTransform} ` export const StyledH4 = styled.h4` @@ -27,6 +34,7 @@ export const StyledH4 = styled.h4` margin-bottom: ${themeGet('space.2')}; ${fontSize} ${space} + ${textTransform} ` export const StyledH5 = styled.h5` @@ -34,6 +42,7 @@ export const StyledH5 = styled.h5` margin-bottom: ${themeGet('space.2')}; ${fontSize} ${space} + ${textTransform} ` export const StyledH6 = styled.h6` @@ -41,4 +50,5 @@ export const StyledH6 = styled.h6` margin-bottom: ${themeGet('space.1')}; ${fontSize} ${space} + ${textTransform} ` diff --git a/app/components/StyledUtils/UnstyledButton.jsx b/app/components/StyledUtils/UnstyledButton.jsx new file mode 100644 index 000000000..d29326e43 --- /dev/null +++ b/app/components/StyledUtils/UnstyledButton.jsx @@ -0,0 +1,34 @@ +import styled from 'styled-components' +import { themeGet, fontSize, fontWeight, space, color } from 'styled-system' + +/** + * A button with all browser styles removed. + */ +const UnstyledButton = styled.button` + border: none; + margin: 0; + padding: 0; + width: auto; + overflow: visible; + cursor: pointer; + background: transparent; + color: inherit; + font: inherit; + line-height: normal; + outline-offset: 2px; + + &:hover { + color: ${themeGet('colors.black.300')}; + } + + &:focus { + outline: 1px dashed ${themeGet('colors.black.100')}; + } + + ${color} + ${fontSize} + ${fontWeight} + ${space} +` + +export default UnstyledButton diff --git a/app/components/Users/InvitationRequestForm.jsx b/app/components/Users/InvitationRequestForm.jsx index d31e9924b..67cefa0f2 100644 --- a/app/components/Users/InvitationRequestForm.jsx +++ b/app/components/Users/InvitationRequestForm.jsx @@ -7,7 +7,7 @@ import { withNamespaces } from 'react-i18next' import browserLocale from '../../i18n/browser_locale' import { requestInvitation } from '../../API/http_api/current_user' import { errorToFlash, addFlash } from '../../state/flashes/reducer' -import Notification from '../Utils/Notification' +import Alert from '../Utils/Alert' import { Icon } from '../Utils/Icon' import FieldWithButton from '../FormUtils/FieldWithButton' @@ -48,9 +48,9 @@ export default class InvitationRequestForm extends React.PureComponent { /> ) return ( - + {this.props.t('home:inviteSuccess')} - + ) } diff --git a/app/components/Users/LoginForm.jsx b/app/components/Users/LoginForm.jsx index a64ec68a6..251776f1c 100644 --- a/app/components/Users/LoginForm.jsx +++ b/app/components/Users/LoginForm.jsx @@ -2,10 +2,11 @@ import React from 'react' import { reduxForm, SubmissionError } from 'redux-form' import { Link, withRouter } from 'react-router' import { withNamespaces } from 'react-i18next' +import { get } from 'lodash' import ThirdPartyAuthList from './ThirdPartyAuthList' import { emailOrUsernameField, passwordField, submitButton } from './UserFormFields' -import Notification from '../Utils/Notification' +import Alert from '../Utils/Alert' import { tError } from '../../lib/errors' import { signIn } from '../../API/http_api/current_user' import { withLoggedInUser } from '../LoggedInUser/UserProvider' @@ -19,10 +20,21 @@ export default class LoginForm extends React.PureComponent { error: null } - componentWillReceiveProps(props) { - // Redirect when already logged in - if (props.isAuthenticated) { - props.router.goBack(); + redirect() { + const pathName = get(this.props.router, 'location.state.redirect', '/videos') + this.props.router.replace(pathName) + } + + componentDidMount() { + if (this.props.isAuthenticated) { + this.redirect() + } + } + + componentDidUpdate() { + // Redirect when logged in + if (this.props.isAuthenticated) { + this.redirect() } } @@ -46,7 +58,7 @@ export default class LoginForm extends React.PureComponent { }) })} > - {error && {tError(t, error)}} + {error && {tError(t, error)}}
    {t('needAnAccountQuestion')} {t('signup')}{' '} diff --git a/app/components/Users/NewsletterSubscription.jsx b/app/components/Users/NewsletterSubscription.jsx index d892478d9..3fbcd72bb 100644 --- a/app/components/Users/NewsletterSubscription.jsx +++ b/app/components/Users/NewsletterSubscription.jsx @@ -1,7 +1,7 @@ import React from 'react' import { withNamespaces } from 'react-i18next' -import Notification from '../Utils/Notification' +import Alert from '../Utils/Alert' import { HttpApi } from '../../API' import { LoadingFrame } from '../Utils/LoadingFrame' @@ -24,11 +24,11 @@ export default class NewsletterSubscription extends React.PureComponent { const cssType = this.state.status === 'success' ? this.state.status : 'danger' return (
    - + {this.props.t('newsletter.unsubscribe', { context: this.state.status })} - +
    ) } diff --git a/app/components/Users/ResetPasswordConfirmForm.jsx b/app/components/Users/ResetPasswordConfirmForm.jsx index d288d8727..65d56be7f 100644 --- a/app/components/Users/ResetPasswordConfirmForm.jsx +++ b/app/components/Users/ResetPasswordConfirmForm.jsx @@ -7,7 +7,7 @@ import { ErrorView } from '../Utils/ErrorView' import UserPicture from './UserPicture' import { USER_PICTURE_XLARGE } from '../../constants' import UserAppellation from './UserAppellation' -import Notification from '../Utils/Notification' +import Alert from '../Utils/Alert' import { withLoggedInUser } from '../LoggedInUser/UserProvider' import * as userAPI from '../../API/http_api/current_user' @@ -84,7 +84,7 @@ export default class ResetPasswordConfirmForm extends React.PureComponent { ) } if (this.state.status === 'confirm_success') { - return {this.props.t('resetPasswordSuccess')} + return {this.props.t('resetPasswordSuccess')} } } diff --git a/app/components/Users/ResetPasswordRequestForm.jsx b/app/components/Users/ResetPasswordRequestForm.jsx index a47c7191b..4621df7f6 100644 --- a/app/components/Users/ResetPasswordRequestForm.jsx +++ b/app/components/Users/ResetPasswordRequestForm.jsx @@ -3,7 +3,7 @@ import { reduxForm } from 'redux-form' import { withNamespaces } from 'react-i18next' import { emailField } from './UserFormFields' import { ErrorView } from '../Utils/ErrorView' -import Notification from '../Utils/Notification' +import Alert from '../Utils/Alert' import { resetPasswordRequest } from '../../API/http_api/current_user' // Fields are auto-validated, only validate password and repeat are the same @@ -49,7 +49,7 @@ export default class ResetPasswordRequestForm extends React.PureComponent {
    ) if (this.state.status === 'done') - return {this.props.t('resetPasswordRequestSuccess')} + return {this.props.t('resetPasswordRequestSuccess')} } render() { diff --git a/app/components/Users/SignupForm.jsx b/app/components/Users/SignupForm.jsx index e50106065..bda037f3e 100644 --- a/app/components/Users/SignupForm.jsx +++ b/app/components/Users/SignupForm.jsx @@ -10,7 +10,7 @@ import { validatePasswordRepeat } from './UserFormFields' import ThirdPartyAuthList from './ThirdPartyAuthList' -import Notification from '../Utils/Notification' +import Alert from '../Utils/Alert' import Message from '../Utils/Message' import InvitationRequestForm from './InvitationRequestForm' import { errorToFlash } from '../../state/flashes/reducer' @@ -81,7 +81,7 @@ class RealSignupForm extends React.PureComponent { className="form user-form" onSubmit={this.props.handleSubmit(this.submit.bind(this))} > - {error && {error}} + {error && {error}} {t('alreadyHaveAccountQuestion')} {t('login')} diff --git a/app/components/Users/User.jsx b/app/components/Users/User.jsx index b11e97d66..e2978de09 100644 --- a/app/components/Users/User.jsx +++ b/app/components/Users/User.jsx @@ -4,9 +4,18 @@ import { Link } from 'react-router' import { Trans, withNamespaces } from 'react-i18next' import { Helmet } from 'react-helmet' +import { UserCircle } from 'styled-icons/fa-regular/UserCircle' +import { Activity } from 'styled-icons/feather/Activity' +import { Settings } from 'styled-icons/feather/Settings' +import { Bell } from 'styled-icons/fa-solid/Bell' +import { Rss } from 'styled-icons/feather/Rss' +import { Clock } from 'styled-icons/fa-regular/Clock' +import { Videos } from 'styled-icons/boxicons-regular/Videos' + +import { Flex } from '@rebass/grid' import UserAppellation from './UserAppellation' import UserPicture from './UserPicture' -import { Icon, ErrorView } from '../Utils' +import { ErrorView } from '../Utils' import ScoreTag from './ScoreTag' import MediaLayout from '../Utils/MediaLayout' import { LoadingFrame } from '../Utils/LoadingFrame' @@ -14,7 +23,8 @@ import { TimeSince } from '../Utils/TimeSince' import { USER_PICTURE_XLARGE } from '../../constants' import { fetchUser } from '../../state/users/displayed_user/effects' import { resetUser } from '../../state/users/displayed_user/reducer' -import { withLoggedInUser } from '../LoggedInUser/UserProvider'; +import { withLoggedInUser } from '../LoggedInUser/UserProvider' +import UserMenu from './UserMenu' @connect( ({ DisplayedUser: { isLoading, errors, data } }) => ({ @@ -34,8 +44,8 @@ export default class User extends React.PureComponent { componentDidUpdate(oldProps) { // If user's username was updated if ( - this.props.user.id === oldProps.user.id && - this.props.user.username !== oldProps.user.username + this.props.user.id === oldProps.user.id + && this.props.user.username !== oldProps.user.username ) // TODO Remove old user profile from history // Redirect @@ -49,21 +59,6 @@ export default class User extends React.PureComponent { this.props.resetUser() } - getActiveTab(section, iconName, menuTKey, isDisabled = false) { - const linkTo = `/u/${this.props.user.username}${section ? `/${section}` : ''}` - const isActive = this.props.location.pathname === linkTo - if (this.props.isLoading) isDisabled = true - - return ( -
  • - - - {this.props.t(menuTKey)} - -
  • - ) - } - isSelf() { return this.props.isAuthenticated && this.props.loggedInUser.id === this.props.user.id } @@ -72,7 +67,7 @@ export default class User extends React.PureComponent { if (this.props.errors) return if (this.props.isLoading) return - const user = this.props.user + const user = this.props.user || {} const prettyUsername = `@${user.username}` return ( @@ -84,11 +79,11 @@ export default class User extends React.PureComponent { {user.id !== 0 && ( } - content={ + content={(
    - +   Registered for @@ -100,18 +95,25 @@ export default class User extends React.PureComponent {
    - } + )} right={} /> )}
    -
      - {this.getActiveTab('', 'user-circle', 'menu.profile')} - {this.getActiveTab('videos', 'television', 'menu.addedVideos')} - {this.getActiveTab('activity', 'tasks', 'menu.activity')} - {this.isSelf() && this.getActiveTab('settings', 'cog', 'menu.settings')} -
    + + + {({ Icon, key, route, title, isActive }) => ( +
  • + + +   + {title} + +
  • + )} +
    +
    {this.props.children} diff --git a/app/components/Users/UserMenu.jsx b/app/components/Users/UserMenu.jsx new file mode 100644 index 000000000..6c74c4030 --- /dev/null +++ b/app/components/Users/UserMenu.jsx @@ -0,0 +1,81 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { withNamespaces } from 'react-i18next' +import { withRouter } from 'react-router' + +import { UserCircle } from 'styled-icons/fa-regular/UserCircle' +import { Activity } from 'styled-icons/feather/Activity' +import { Settings } from 'styled-icons/feather/Settings' +import { Bell } from 'styled-icons/fa-solid/Bell' +import { Rss } from 'styled-icons/feather/Rss' +import { Videos } from 'styled-icons/boxicons-regular/Videos' +import { LogOut } from 'styled-icons/feather/LogOut' + +const BASE_LINKS = [ + { path: '', i18nKey: 'menu.profile', Icon: UserCircle }, + { path: '/videos', i18nKey: 'menu.addedVideos', Icon: Videos }, + { path: '/activity', i18nKey: 'menu.activity', Icon: Activity } +] + +const AUTHENTICATED_LINKS = [ + { path: '/subscriptions', i18nKey: 'menu.subscriptions', Icon: Rss }, + { path: '/notifications', i18nKey: 'menu.notifications', Icon: Bell }, + { path: '/settings', i18nKey: 'menu.settings', Icon: Settings } +] + +/** + * Menu entries for user profile sections. + */ +const UserMenu = ({ t, isSelf, user, children, location, hasLogout }) => { + const entries = !isSelf ? BASE_LINKS : [...BASE_LINKS, ...AUTHENTICATED_LINKS] + + if (hasLogout) { + entries.push({ + path: '/logout', + isRootPath: true, + i18nKey: 'menu.logout', + Icon: LogOut + }) + } + + return entries.map((entry, index) => { + const route = entry.isRootPath ? entry.path : `/u/${user.username}${entry.path}` + const isActive = location.pathname === route + return children({ + key: entry.path, + Icon: entry.Icon, + title: t(entry.i18nKey), + route, + isActive, + index + }) + }) +} + +UserMenu.propTypes = { + /** User */ + user: PropTypes.shape({ username: PropTypes.string.isRequired }).isRequired, + /** + * A render function used to render a single item. + * + * Gets passed an object like: + * + * - key: A unique key for this entry. You **must** set the `key` prop if + * rendering a React component. + * - Icon + * - title + * - link + * - isActive + */ + children: PropTypes.func.isRequired, + /** Wether we're displaying the menu for currently logged in user */ + isSelf: PropTypes.bool, + /** Logout */ + hasLogout: PropTypes.bool +} + +UserMenu.defaultProps = { + isSelf: false +} + +export default withNamespaces('main')(withRouter(UserMenu)) diff --git a/app/components/Utils/Notification.jsx b/app/components/Utils/Alert.jsx similarity index 53% rename from app/components/Utils/Notification.jsx rename to app/components/Utils/Alert.jsx index 8f1b34ad8..1e72d88d5 100644 --- a/app/components/Utils/Notification.jsx +++ b/app/components/Utils/Alert.jsx @@ -1,9 +1,9 @@ import React from 'react' -const Notification = ({ children, type = 'info', ...otherProps }) => ( +const Alert = ({ children, type = 'info', ...otherProps }) => (
    {children}
    ) -export default Notification +export default Alert diff --git a/app/components/Utils/LoadingFrame.jsx b/app/components/Utils/LoadingFrame.jsx index b2744979a..2753077e2 100644 --- a/app/components/Utils/LoadingFrame.jsx +++ b/app/components/Utils/LoadingFrame.jsx @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' import { withNamespaces } from 'react-i18next' import classNames from 'classnames' @@ -15,3 +16,8 @@ export class LoadingFrame extends React.PureComponent { ) } } + +LoadingFrame.propTypes = { + size: PropTypes.oneOf(['small', 'medium', 'large']), + title: PropTypes.string +} diff --git a/app/components/Utils/StyledCard.js b/app/components/Utils/StyledCard.js new file mode 100644 index 000000000..40bb422f2 --- /dev/null +++ b/app/components/Utils/StyledCard.js @@ -0,0 +1,84 @@ +import PropTypes from 'prop-types' +import styled from 'styled-components' +import { + background, + borderColor, + borders, + borderRadius, + boxShadow, + color, + display, + height, + maxHeight, + maxWidth, + minHeight, + minWidth +} from 'styled-system' +import { Box } from '@rebass/grid' + +/** + * A simple styled-component to contain content in a card UI using styled-system. + */ +const StyledCard = styled(Box)` + ${background} + ${borders} + ${borderColor} + ${borderRadius} + ${boxShadow} + ${color} + ${display} + ${height} + ${maxHeight} + ${maxWidth} + ${minHeight} + ${minWidth} +` + +StyledCard.propTypes = { + /** styled-system prop: accepts any css 'background' value or theme color */ + bg: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'border-color' value or theme color */ + borderColor: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'border' value */ + borders: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'border-radius' value */ + borderRadius: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.string, + PropTypes.array + ]), + /** styled-system prop: accepts any css 'box-shadow' value */ + boxShadow: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'color' value */ + color: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'display' value */ + display: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'height' value */ + height: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'max-height' value */ + maxHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'max-width' value */ + maxWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'min-height' value */ + minHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'min-width' value */ + minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** styled-system prop: accepts any css 'overflow' value */ + overflow: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]), + /** + * styled-system prop: adds margin & padding props + * see: https://github.com/jxnblk/styled-system/blob/master/docs/api.md#space + */ + space: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]) +} + +StyledCard.defaultProps = { + bg: 'white', + border: '1px solid', + borderColor: 'black.300', + borderRadius: '8px', + boxShadow: 'rgba(144, 144, 144, 0.25) 4px 4px 16px' +} + +/** @component */ +export default StyledCard diff --git a/app/components/Utils/__tests__/Alert.spec.jsx b/app/components/Utils/__tests__/Alert.spec.jsx new file mode 100644 index 000000000..5db90a952 --- /dev/null +++ b/app/components/Utils/__tests__/Alert.spec.jsx @@ -0,0 +1,17 @@ +import Alert from '../Alert' + +test('render message', () => { + snapshotComponent(Hello) +}) + +test('can set type', () => { + snapshotComponent(Alert !) +}) + +test('pass props', () => { + snapshotComponent(Hellooow) +}) + +test('without body', () => { + snapshotComponent() +}) diff --git a/app/components/Utils/__tests__/Notification.spec.jsx b/app/components/Utils/__tests__/Notification.spec.jsx deleted file mode 100644 index 75648ca91..000000000 --- a/app/components/Utils/__tests__/Notification.spec.jsx +++ /dev/null @@ -1,17 +0,0 @@ -import Notification from '../Notification' - -test('render message', () => { - snapshotComponent(Hello) -}) - -test('can set type', () => { - snapshotComponent(Alert !) -}) - -test('pass props', () => { - snapshotComponent(Hellooow) -}) - -test('without body', () => { - snapshotComponent() -}) diff --git a/app/components/Utils/__tests__/__snapshots__/Notification.spec.jsx.snap b/app/components/Utils/__tests__/__snapshots__/Alert.spec.jsx.snap similarity index 100% rename from app/components/Utils/__tests__/__snapshots__/Notification.spec.jsx.snap rename to app/components/Utils/__tests__/__snapshots__/Alert.spec.jsx.snap diff --git a/app/components/Utils/__tests__/__snapshots__/ReputationGuardTooltip.spec.jsx.snap b/app/components/Utils/__tests__/__snapshots__/ReputationGuardTooltip.spec.jsx.snap index 200e96920..558f6df86 100644 --- a/app/components/Utils/__tests__/__snapshots__/ReputationGuardTooltip.spec.jsx.snap +++ b/app/components/Utils/__tests__/__snapshots__/ReputationGuardTooltip.spec.jsx.snap @@ -31,6 +31,7 @@ exports[`user doesn't have required reputation 1`] = ` open={false} overlayStyle={Object {}} position="bottom center" + repositionOnResize={true} trigger={
    this.props.router.push('/login')} + label={t('main:menu.signup')} + onClick={() => this.props.router.push('/signup')} /> )} {this.props.isAuthenticated && ( diff --git a/app/components/VideoDebate/ColumnVideo.jsx b/app/components/VideoDebate/ColumnVideo.jsx index b2cba3f00..342214fb8 100644 --- a/app/components/VideoDebate/ColumnVideo.jsx +++ b/app/components/VideoDebate/ColumnVideo.jsx @@ -3,12 +3,14 @@ import { connect } from 'react-redux' import classNames from 'classnames' import { withNamespaces } from 'react-i18next' import { Link } from 'react-router' +import { Flex } from '@rebass/grid' import { MIN_REPUTATION_ADD_SPEAKER } from '../../constants' import { videoDebateOnlineUsersCount, videoDebateOnlineViewersCount } from '../../state/video_debate/presence/selectors' +import { changeSubscription } from '../../state/video_debate/effects' import AddSpeakerForm from '../Speakers/AddSpeakerForm' import { SpeakerPreview } from '../Speakers/SpeakerPreview' import { LoadingFrame, Icon } from '../Utils' @@ -17,18 +19,41 @@ import VideoDebatePlayer from './VideoDebatePlayer' import Presence from './Presence' import ExternalLinkNewTab from '../Utils/ExternalLinkNewTab' import { videoURL, videoHistoryURL } from '../../lib/cf_routes' +import { withLoggedInUser } from '../LoggedInUser/UserProvider' +import SubscribeBtn from '../Notifications/SubscribeBtn' -@connect(state => ({ - video: state.VideoDebate.video.data, - isLoading: state.VideoDebate.video.isLoading, - nbUsers: videoDebateOnlineUsersCount(state), - nbViewers: videoDebateOnlineViewersCount(state) -})) +@connect( + state => ({ + video: state.VideoDebate.video.data, + isLoading: state.VideoDebate.video.isLoading, + isSubscribed: state.VideoDebate.video.isSubscribed, + nbUsers: videoDebateOnlineUsersCount(state), + nbViewers: videoDebateOnlineViewersCount(state) + }), + { changeSubscription } +) @withNamespaces('videoDebate') +@withLoggedInUser export class ColumnVideo extends React.PureComponent { + renderNotificationBell() { + return !this.props.isAuthenticated ? null : ( + + ) + } + render() { - if (this.props.isLoading) + const { isLoading } = this.props + + if (isLoading) { return + } const { video, view, t } = this.props const { url, title, speakers } = video @@ -37,10 +62,11 @@ export class ColumnVideo extends React.PureComponent { return (
    -
    + + {this.renderNotificationBell()}

    {title}

    -
    +
    • diff --git a/app/i18n/en/index.js b/app/i18n/en/index.js index b3835be6d..91946c9e4 100644 --- a/app/i18n/en/index.js +++ b/app/i18n/en/index.js @@ -5,6 +5,7 @@ import help from './help' import history from './history' import home from './home' import main from './main' +import notifications from './notifications' import user from './user' import videoDebate from './videoDebate' import moderation from './moderation' @@ -17,6 +18,7 @@ export default { history, home, main, + notifications, user, videoDebate, moderation diff --git a/app/i18n/en/main.js b/app/i18n/en/main.js index a0959bb0a..c586ba360 100644 --- a/app/i18n/en/main.js +++ b/app/i18n/en/main.js @@ -8,7 +8,8 @@ export default { statement_plural: 'statements' }, menu: { - loginSignup: 'Login / Sign up', + login: 'Login', + signup: 'Sign up', logout: 'Logout', settings: 'Settings', profile: 'Profile', @@ -18,11 +19,12 @@ export default { language: 'Language', other: 'Other', donation: 'Support us', - extension: 'Browser extension', + extension: 'Download extension', help: 'Learn more', moderation: 'Moderation', - edit: 'Edit', - addedVideos: 'Added videos' + addedVideos: 'Added videos', + notifications: 'Notifications', + subscriptions: 'Subscriptions' }, actions: { save: 'Save', diff --git a/app/i18n/en/notifications.js b/app/i18n/en/notifications.js new file mode 100644 index 000000000..ad50acf52 --- /dev/null +++ b/app/i18n/en/notifications.js @@ -0,0 +1,11 @@ +export default { + empty: 'Your notifications box is empty', + seeAll: 'See all', + markAllAsRead: 'Mark all as seen', + markAllAsUnseen: 'Mark all as unseen', + filters: { + ALL: 'All', + SEEN: 'Seen', + UNSEEN: 'Unseen' + } +} diff --git a/app/i18n/fr/index.js b/app/i18n/fr/index.js index b3835be6d..91946c9e4 100644 --- a/app/i18n/fr/index.js +++ b/app/i18n/fr/index.js @@ -5,6 +5,7 @@ import help from './help' import history from './history' import home from './home' import main from './main' +import notifications from './notifications' import user from './user' import videoDebate from './videoDebate' import moderation from './moderation' @@ -17,6 +18,7 @@ export default { history, home, main, + notifications, user, videoDebate, moderation diff --git a/app/i18n/fr/main.js b/app/i18n/fr/main.js index a99db0c72..e33273e3a 100644 --- a/app/i18n/fr/main.js +++ b/app/i18n/fr/main.js @@ -8,7 +8,8 @@ export default { statement_plural: 'déclarations' }, menu: { - loginSignup: 'Connexion', + login: 'Se connecter', + signup: "S'inscrire", logout: 'Se déconnecter', settings: 'Paramètres', profile: 'Profil', @@ -18,10 +19,12 @@ export default { language: 'Langue', other: 'Autre', donation: 'Nous soutenir', - extension: 'Extension pour navigateur', + extension: "Télécharger l'extension", + help: 'Aide', moderation: 'Modération', - help: 'En apprendre +', - addedVideos: 'Vidéos ajoutées' + addedVideos: 'Vidéos ajoutées', + notifications: 'Notifications', + subscriptions: 'Abonnements' }, actions: { save: 'Sauvegarder', diff --git a/app/i18n/fr/notifications.js b/app/i18n/fr/notifications.js new file mode 100644 index 000000000..3a24f0ff8 --- /dev/null +++ b/app/i18n/fr/notifications.js @@ -0,0 +1,27 @@ +export default { + empty: "Vous n'avez aucune notification", + seeAll: 'Voir tout', + markAllAsRead: 'Tout marquer comme lu', + markAllAsUnseen: 'Tout marquer comme non lu', + filters: { + ALL: 'Toutes', + SEEN: 'Vues', + UNSEEN: 'Non vues' + }, + message: { + newComment: + 'Nouveau commentaire de <1>@{{username}} sur <4>{{videoTitle}} : « {{text}} »', + newSpeaker: + '<0>@{{username}} a ajouté « {{speakerName}} » sur <6>{{videoTitle}}', + removedStatement: + '<0>@{{username}} a supprimé une citation sur <3>{{videoTitle}}', + replyToComment: + '<0>@{{username}} a répondu à votre commentaire sur <3>{{videoTitle}} : « {{text}} »', + updatedVideo: + '<0>@{{username}} a mis à jour les informations de la vidéo sur <3>{{videoTitle}}', + updatedStatement: + '<0>@{{username}} a mis à jour une citation sur <3>{{videoTitle}} : "{{text}}"', + newStatement: + '<0>@{{username}} a mis à jour une citation sur <3>{{videoTitle}} : "{{text}}"' + } +} diff --git a/app/lib/cf_routes.js b/app/lib/cf_routes.js index fc720d18f..9ffba544b 100644 --- a/app/lib/cf_routes.js +++ b/app/lib/cf_routes.js @@ -1,3 +1,15 @@ +import { get } from 'lodash' + +import { + ENTITY_COMMENT, + ENTITY_STATEMENT, + ACTION_REMOVE, + ENTITY_VIDEO, + ACTION_UPDATE, + ENTITY_SPEAKER, + ACTION_ADD +} from '../constants' + export const videoURL = videoHashID => { return `/videos/${videoHashID}` } @@ -15,3 +27,27 @@ export const commentURL = (videoHashID, statementID, commentID) => { } export const speakerURL = speakerIDOrSlug => `/s/${speakerIDOrSlug}` + +/** Returns a frontend URL linking to the entity for a UserAction */ +export const userActionURL = action => { + const videoHashId = action.videoHashId || action.video.hashId + if (action.type === ACTION_REMOVE) { + return videoHistoryURL(videoHashId) + } else if (action.entity === ENTITY_COMMENT) { + return commentURL(videoHashId, action.statementId, action.commentId) + } else if (action.entity === ENTITY_STATEMENT) { + return statementURL(videoHashId, action.statementId) + } else if (action.entity === ENTITY_VIDEO && action.type === ACTION_UPDATE) { + return videoHistoryURL(videoHashId) + } else if (action.entity === ENTITY_SPEAKER && action.type === ACTION_ADD) { + return videoHashId + ? videoURL(videoHashId) + : speakerURL(get(action, 'speaker.slug') || action.speakerId) + } else { + console.log("Don't know how to generate URL for action", action) + } +} + +export const userProfileURL = user => `/u/${user.username}` + +export const userNotificationsURL = user => `${userProfileURL(user)}/notifications` diff --git a/app/lib/errors.js b/app/lib/errors.js index 3fcb4e9ea..ad2b58357 100644 --- a/app/lib/errors.js +++ b/app/lib/errors.js @@ -1,7 +1,7 @@ const errorsInfos = { not_enough_reputation: { url: '/help/privileges' }, limit_reached: { url: '/help/privileges' }, - unauthenticated: { url: '/login', i18nKey: 'menu.loginSignup' }, + unauthenticated: { url: '/signup', i18nKey: 'menu.signup' }, invalid_invitation_token: { url: '/signup', i18nKey: 'user:invitationOnlyTitle' diff --git a/app/lib/url_utils.js b/app/lib/url_utils.js index 288bb9026..2a3acdc48 100644 --- a/app/lib/url_utils.js +++ b/app/lib/url_utils.js @@ -1,17 +1,35 @@ -import 'core-js/es7/object' +import { toPairs, pickBy, isEmpty } from 'lodash' +/** + * Transorm an object into a query string. Strips undefined values. + * + * ## Example + * + * > objectToQueryString({a: 42, b: "hello", c: undefined}) + * "?a=42&b=hello" + */ export const optionsToQueryString = options => { - if (!options || Object.keys(options).length === 0) return '' - return `?${Object.entries(options) - .map(([key, value]) => `${key}=${encodeURIComponent(value)}`) + const definedOptions = pickBy(options, value => value !== undefined) + if (isEmpty(definedOptions)) { + return '' + } + + const encodeValue = value => { + if (Array.isArray(value)) { + return value.concat.map(encodeURIComponent).join(',') + } + return encodeURIComponent(value) + } + + return `?${toPairs(definedOptions) + .map(([key, value]) => `${key}=${encodeValue(value)}`) .join('&')}` } export const youtubeRegex = /(?:youtube\.com\/(?:[^/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?/ ]{11})/i -export const isExternal = (currentHref, url) => - (url.indexOf(':') > -1 || url.indexOf('//') > -1) && - checkDomain(currentHref) !== checkDomain(url) +export const isExternal = (currentHref, url) => (url.indexOf(':') > -1 || url.indexOf('//') > -1) + && checkDomain(currentHref) !== checkDomain(url) /** * Define is URL points to a downloadable file. We only support downloading diff --git a/app/router.jsx b/app/router.jsx index 0e47025bc..21d87c846 100644 --- a/app/router.jsx +++ b/app/router.jsx @@ -3,7 +3,7 @@ import React from 'react' import { Router, Route, IndexRoute, browserHistory } from 'react-router' // Import Views -import App from './components/App' +import Layout from './components/App/Layout' import Home from './components/Home/Home' import { NotFound, BrowserExtensionsPage } from './components/Pages' import { AddVideoForm } from './components/Videos' @@ -24,14 +24,18 @@ import { SpeakerPage } from './components/Speakers/SpeakerPage' import NewsletterSubscription from './components/Users/NewsletterSubscription' import ActivityLog from './components/Users/ActivityLog' import UserAddedVideos from './components/Videos/UserAddedVideos' +import NotificationsPage from './components/LoggedInUser/NotificationsPage' +import SubscriptionsPage from './components/LoggedInUser/SubscriptionsPage' +import LogoutPage from './components/LoggedInUser/LogoutPage' const CFRouter = () => ( - - + + + @@ -42,6 +46,8 @@ const CFRouter = () => ( + + diff --git a/app/state/flashes/reducer.js b/app/state/flashes/reducer.js index 3ad6fe53e..7a00f5447 100644 --- a/app/state/flashes/reducer.js +++ b/app/state/flashes/reducer.js @@ -25,8 +25,8 @@ export const flashErrorMsg = message => flashError({ message }) export const flashErrorUnauthenticated = () => { return flashError({ message: 'errors:server.unauthenticated', - infoText: 'main:menu.loginSignup', - infoUrl: '/login' + infoText: 'main:menu.signup', + infoUrl: '/signup' }) } diff --git a/app/state/video_debate/effects.js b/app/state/video_debate/effects.js index 731c6775a..837261cd8 100644 --- a/app/state/video_debate/effects.js +++ b/app/state/video_debate/effects.js @@ -57,3 +57,16 @@ export const shiftStatements = offsets => { catch: errorToFlash }) } + +/** Subscribe or unsubscribe a user from given video */ +export const changeSubscription = newValue => { + return SocketApi.push(VIDEO_DEBATE_CHANNEL, 'change_subscription', { + subscribed: newValue + }) + .then(() => { + return videoReducer.setSubscription(newValue) + }) + .catch(e => { + console.log(e) + }) +} diff --git a/app/state/video_debate/video/__tests__/__snapshots__/reducer.spec.js.snap b/app/state/video_debate/video/__tests__/__snapshots__/reducer.spec.js.snap index c7c6b417f..0c3894c8a 100644 --- a/app/state/video_debate/video/__tests__/__snapshots__/reducer.spec.js.snap +++ b/app/state/video_debate/video/__tests__/__snapshots__/reducer.spec.js.snap @@ -17,6 +17,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -57,6 +58,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -87,6 +89,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -136,6 +139,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -166,6 +170,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -196,6 +201,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -238,6 +244,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -268,6 +275,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -298,6 +306,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -328,6 +337,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -358,6 +368,7 @@ Immutable.Record { }, "errors": null, "isLoading": true, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -388,6 +399,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -418,6 +430,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -448,6 +461,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -478,6 +492,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { @@ -508,6 +523,7 @@ Immutable.Record { }, "errors": null, "isLoading": false, + "isSubscribed": false, "player": "youtube", "offset": 0, "playback": Immutable.Record { diff --git a/app/state/video_debate/video/reducer.js b/app/state/video_debate/video/reducer.js index 49af86747..7223b759e 100644 --- a/app/state/video_debate/video/reducer.js +++ b/app/state/video_debate/video/reducer.js @@ -16,6 +16,7 @@ export const addSpeaker = createAction('VIDEO/ADD_SPEAKER') export const removeSpeaker = createAction('VIDEO/REMOVE_SPEAKER') export const updateSpeaker = createAction('VIDEO/UPDATE_SPEAKER') export const updateVideo = createAction('VIDEO/UPDATE_VIDEO') +export const setSubscription = createAction('VIDEO/SET_SUBSCRIPTION') export const setPosition = createAction('PLAYBACK/SET_POSITION') export const forcePosition = createAction('PLAYBACK/FORCE_POSITION') @@ -29,6 +30,8 @@ const INITIAL_STATE = new Record({ data: new Video(), errors: null, isLoading: false, + /** Wether the currently logged in user is subscribed to this video's changes */ + isSubscribed: false, /** The player type currently displayed */ player: VIDEO_PLAYER_YOUTUBE, /** An offset used to shift all video's timecodes */ @@ -58,10 +61,11 @@ const VideoReducer = handleActions( }) }, [fetchAll]: { - next: (state, { payload: { speakers, ...data } }) => { + next: (state, { payload: { speakers, is_subscribed, ...data } }) => { speakers = sortSpeakers(new List(speakers.map(s => new Speaker(s)))) return state.mergeDeep({ isLoading: false, + isSubscribed: is_subscribed, errors: null, data: new Video(data).set('speakers', speakers), offset: getTimecodesOffset(data, state.player) @@ -105,6 +109,9 @@ const VideoReducer = handleActions( [setPlaying]: (state, { payload }) => { return state.setIn(['playback', 'isPlaying'], payload) }, + [setSubscription]: (state, { payload }) => { + return state.set('isSubscribed', payload) + }, [resetVideoDebate]: () => INITIAL_STATE() }, INITIAL_STATE() diff --git a/app/styles/_components/App/app.sass b/app/styles/_components/App/app.sass index d8999cbbd..b5460d51c 100644 --- a/app/styles/_components/App/app.sass +++ b/app/styles/_components/App/app.sass @@ -1,15 +1,12 @@ #main-container - width: calc(100% - #{$sidebar_width}) - margin-left: $sidebar_width - margin-top: $sidebar_full_collapse_banner_height - +tablet - transition: width $sidebar_collapse_transition_duration, margin $sidebar_collapse_transition_duration - +mobile - width: 100% - margin-left: 0 + flex-grow: 1 + padding-left: $sidebar_width + height: calc(100vh - 60px) + + &.expended + padding-left: $sidebar_collapsed_width - +from($sidebar_full_collapse_under + 1) - margin-top: 0 - &.expended - width: calc(100% - #{$sidebar_collapsed_width}) - margin-left: $sidebar_collapsed_width + +mobile + &, &.expended + width: 100% + padding-left: 0 \ No newline at end of file diff --git a/app/styles/_components/App/logo.sass b/app/styles/_components/App/logo.sass index cefbec6bc..04fed404c 100644 --- a/app/styles/_components/App/logo.sass +++ b/app/styles/_components/App/logo.sass @@ -1,7 +1,6 @@ $logo-inside-color: #d8d7d7 .site-logo.title - font-size: 24px &> * position: relative vertical-align: middle diff --git a/app/styles/_components/App/sidebar.sass b/app/styles/_components/App/sidebar.sass index ac6267cef..bdaf18bba 100644 --- a/app/styles/_components/App/sidebar.sass +++ b/app/styles/_components/App/sidebar.sass @@ -3,14 +3,13 @@ $border-color: lightgrey #sidebar position: fixed height: 100% - top: 0 left: 0 - width: $sidebar_width + min-width: $sidebar_width background: $white-bis overflow-y: auto overflow-x: hidden - z-index: 999 - box-shadow: -15px 0px 40px -14px rgba(173, 173, 173, .3) inset + z-index: 9999 + box-shadow: -15px 0px 40px -14px rgba(173, 173, 173, .2) inset border-right: 1px solid #e8e8e8 +tablet transition: width $sidebar_collapse_transition_duration @@ -20,30 +19,6 @@ $border-color: lightgrey .user-links display: none - .logo-banner - line-height: 0 - padding: 1rem - width: $sidebar_width - text-align: left - .site-logo - font-size: 22px - &> * - display: inline-block - vertical-align: middle - - .menu-collapse-button - cursor: pointer - height: 40px - width: 1em - margin-right: 6px - font-size: 38px - user-select: none - &:not(:hover) - color: grey - - @media screen and (max-width: $sidebar_full_collapse_under) - width: 100% - .connect-register-buttons .button @extend .is-fullwidth @@ -68,7 +43,6 @@ $border-color: lightgrey .menu-content padding: 9px - border-top: 1px solid $border-color .language-selector padding-left: 10px @@ -77,11 +51,9 @@ $border-color: lightgrey .link-with-icon > i width: 20px - +desktop - transition: font-size $sidebar_collapse_transition_duration #sidebar:not(.expended) - width: $sidebar_collapsed_width + min-width: $sidebar_collapsed_width text-align: center @media screen and (max-width: $sidebar_full_collapse_under) @@ -90,16 +62,16 @@ $border-color: lightgrey z-index: 9999 height: inherit background: transparentize($white, 0.1) - border-bottom: 1px solid $border-color - .logo-banner - height: $sidebar_full_collapse_banner_height .menu-content display: none .link-with-icon i - font-size: 30px + font-size: 25px margin: 0 + .logo + display: none + .user-quicklinks a padding: 4px @@ -112,11 +84,6 @@ $border-color: lightgrey .link-with-icon padding: 5px - +from($sidebar_full_collapse_under + 1) - .logo-banner - .title, .logo - display: none - .username display: none diff --git a/app/styles/_components/Pages/browser_extensions.sass b/app/styles/_components/Pages/browser_extensions.sass index 90c827dbd..b7a04bbd0 100644 --- a/app/styles/_components/Pages/browser_extensions.sass +++ b/app/styles/_components/Pages/browser_extensions.sass @@ -1,6 +1,6 @@ .browser-extension-page background: whitesmoke - min-height: 100vh + height: 100% .hero .title, .subtitle color: $white-bis diff --git a/app/styles/_components/Pages/home_page.sass b/app/styles/_components/Pages/home_page.sass index be8bad798..e3d7505ec 100644 --- a/app/styles/_components/Pages/home_page.sass +++ b/app/styles/_components/Pages/home_page.sass @@ -1,6 +1,5 @@ .home-page $maxHomeSectionWidth: 1160px - min-height: 100vh display: flex flex-direction: column background-attachment: fixed diff --git a/app/styles/_components/User/activity_log.sass b/app/styles/_components/User/activity_log.sass index d7ca2a645..460a35b76 100644 --- a/app/styles/_components/User/activity_log.sass +++ b/app/styles/_components/User/activity_log.sass @@ -1,3 +1,4 @@ .activity-log + max-width: 1000px +desktop padding-top: 2em diff --git a/app/styles/_components/User/user_page.sass b/app/styles/_components/User/user_page.sass index 39c6f8942..e8903d1d3 100644 --- a/app/styles/_components/User/user_page.sass +++ b/app/styles/_components/User/user_page.sass @@ -43,6 +43,8 @@ box-shadow: 3px 3px 5px 0 rgba(212, 212, 212, 0.35) .tabs margin-bottom: 0 + ul + max-width: 100% +mobile li > a padding-right: 2vw diff --git a/app/styles/_components/VideoDebate/history.sass b/app/styles/_components/VideoDebate/history.sass index 2708a1ffe..f309540e8 100644 --- a/app/styles/_components/VideoDebate/history.sass +++ b/app/styles/_components/VideoDebate/history.sass @@ -1,5 +1,4 @@ .videodebate-actions-history - height: 100vh overflow-y: auto background: white diff --git a/app/styles/_components/VideoDebate/video_debate.sass b/app/styles/_components/VideoDebate/video_debate.sass index e0960a246..83928b0dc 100644 --- a/app/styles/_components/VideoDebate/video_debate.sass +++ b/app/styles/_components/VideoDebate/video_debate.sass @@ -9,9 +9,6 @@ margin: 0 .videoInfo - display: flex - padding: 1em - align-items: center .title flex-grow: 10 flex-shrink: 1 @@ -47,6 +44,7 @@ display: block #video-show + height: 100% @media screen and (max-width: $widescreen) display: block &> .column @@ -58,8 +56,8 @@ height: auto +widescreen &> .column - max-height: 100vh - height: 100vh + max-height: 100% + height: 100% overflow-y: auto #col-video resize: horizontal diff --git a/app/styles/_components/statements.sass b/app/styles/_components/statements.sass index 16adb1353..d58866a14 100644 --- a/app/styles/_components/statements.sass +++ b/app/styles/_components/statements.sass @@ -5,9 +5,6 @@ $statement-focus-size-mobile: 5px $statement-text-background: #31455d $statement-text-color: #e0e7f1 -.statements-list-container - height: 100vh - .statements-list overflow-y: auto height: 100% diff --git a/app/styles/_global/variables.sass b/app/styles/_global/variables.sass index 4049080fe..18532b1d8 100644 --- a/app/styles/_global/variables.sass +++ b/app/styles/_global/variables.sass @@ -64,8 +64,8 @@ $size-7: 0.75rem $sizes: $size-1 $size-2 $size-3 $size-4 $size-5 $size-6 $size-7 // ----Custom---- -$sidebar_width: 270px -$sidebar_collapsed_width: 60px +$sidebar_width: 250px +$sidebar_collapsed_width: 54px $sidebar_collapse_transition_duration: 0.10s $sidebar_full_collapse_under: $tablet - 1 $sidebar_full_collapse_banner_height: 70px diff --git a/app/styles/_libraries_overrides/react-popup.sass b/app/styles/_libraries_overrides/react-popup.sass index 7de277e6d..422f97c53 100644 --- a/app/styles/_libraries_overrides/react-popup.sass +++ b/app/styles/_libraries_overrides/react-popup.sass @@ -2,3 +2,5 @@ border-radius: 5px filter: drop-shadow(rgba(0, 0, 0, 0.3) 0 0 3px) padding: 0 !important + border: 1px solid lightgrey !important + overflow: auto \ No newline at end of file diff --git a/app/styles/theme.js b/app/styles/theme.js index e9ca7751a..56b67db29 100644 --- a/app/styles/theme.js +++ b/app/styles/theme.js @@ -1,19 +1,26 @@ const theme = { breakpoints: ['768px', '1024px', '1216px', '1408px'], space: ['0px', '4px', '8px', '16px', '32px', '64px', '128px', '256px', '512px'], - fontSizes: ['3rem', '2.5rem', '1.8rem', '1.5rem', '1.25rem', '1rem', '0.75rem'], + fontSizes: ['3rem', '2.5rem', '1.8rem', '1.5rem', '1.25rem', '1rem', '0.9rem'], + navbarHeight: 60, + fontFamily: { + serif: 'Merriweather,serif' + }, colors: { green: '#39b714', red: '#e0454e', blue: '#75caff', + yellow: '#ffb03f', primary: '#6ba3a7', info: '#75caff', + white: '#ffffff', black: { 50: '#f5f7fa', 100: '#e7e7e7', 200: '#dadada', 300: '#cecece', - 400: '#4a4a4a' + 400: '#4a4a4a', + 500: '#252525' } } } diff --git a/package-lock.json b/package-lock.json index 6ce429d8a..8c9270ca3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "captain-fact-frontend", - "version": "0.9.4", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1410,6 +1410,30 @@ } } }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "dependencies": { + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + } + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, "@rebass/grid": { "version": "6.0.0-5", "resolved": "https://registry.npmjs.org/@rebass/grid/-/grid-6.0.0-5.tgz", @@ -1444,6 +1468,15 @@ "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.0.tgz", "integrity": "sha1-i2OrfxqlMhJIqtWsiQpIVlbc6k0=" }, + "@vxna/mini-html-webpack-template": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@vxna/mini-html-webpack-template/-/mini-html-webpack-template-0.1.7.tgz", + "integrity": "sha512-qV2VslV48ECPwyuG7c4O6JpYgjnvdm88YYkMncIXzakXXwVUxhcg6YipXxWK7U+pixHkWWSnDX/8DIOmWeh+PQ==", + "dev": true, + "requires": { + "common-tags": "^1.7.2" + } + }, "@webassemblyjs/ast": { "version": "1.7.11", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", @@ -1698,6 +1731,12 @@ "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==", "dev": true }, + "address": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==", + "dev": true + }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -2245,6 +2284,12 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -2267,6 +2312,18 @@ "es-abstract": "^1.7.0" } }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -2368,6 +2425,12 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "ast-types": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.7.tgz", + "integrity": "sha512-2mP3TwtkY/aTv5X3ZsMpNAbOnyoC/aMJwJSoaELPkHId0nSQgFcnU4dRW3isxiz7+zBexk0ym3WNVjMiQBnJSw==", + "dev": true + }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -2626,6 +2689,12 @@ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", "dev": true }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, "babel-plugin-webpack-alias": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/babel-plugin-webpack-alias/-/babel-plugin-webpack-alias-2.1.2.tgz", @@ -3148,6 +3217,60 @@ "node-int64": "^0.4.0" } }, + "buble": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/buble/-/buble-0.19.4.tgz", + "integrity": "sha512-xaTfnWdx80TiajGDZoSYB17nEDqjGnVxeug5W7tvXIAMn61yMa5AfTuWu3F4nLL2Fv/hK8T6GktZvQ6yvPZMpA==", + "dev": true, + "requires": { + "acorn": "^5.4.1", + "acorn-dynamic-import": "^3.0.0", + "acorn-jsx": "^4.1.1", + "chalk": "^2.3.1", + "magic-string": "^0.22.4", + "minimist": "^1.2.0", + "os-homedir": "^1.0.1", + "regexpu-core": "^4.1.3", + "vlq": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", @@ -3246,6 +3369,12 @@ } } }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -3328,6 +3457,12 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "ccount": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", + "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==", + "dev": true + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -3346,6 +3481,12 @@ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==" }, + "character-entities-html4": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", + "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==", + "dev": true + }, "character-entities-legacy": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", @@ -3594,6 +3735,16 @@ } } }, + "clean-tag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clean-tag/-/clean-tag-2.0.2.tgz", + "integrity": "sha512-VjfaE59B7Iq9CWQYeVahPRFks0rkHAmXb8n6HKDBMVtR3bYTuNnYZNFtlR4wg8HiAv0OGFoljIytcRxfqrzRew==", + "requires": { + "html-tags": "^2.0.0", + "react": ">=16.0.0", + "styled-system": ">=2.0.0 || >=3.0.0" + } + }, "clean-webpack-plugin": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-1.0.0.tgz", @@ -3612,6 +3763,12 @@ "restore-cursor": "^2.0.0" } }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, "cli-truncate": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", @@ -3656,6 +3813,12 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, + "clipboard-copy": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/clipboard-copy/-/clipboard-copy-2.0.1.tgz", + "integrity": "sha512-/JBr7ryeWwl2w33SRMYGfOZU5SWPVNtpB9oTxUzFp7olKKd2HM+cnhSMeETblJMnjgqtL581ncI/pcZX7o7Big==", + "dev": true + }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", @@ -3684,6 +3847,12 @@ } } }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, "clone-deep": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", @@ -3734,6 +3903,12 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "codemirror": { + "version": "5.42.2", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.42.2.tgz", + "integrity": "sha512-Tkv6im39VuhduFMsDA3MlXcC/kKas3Z0PI1/8N88QvFQbtOeiiwnfFJE4juGyC8/a4sb1BSxQlzsil8XLQdxRw==", + "dev": true + }, "collapse-white-space": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", @@ -3805,6 +3980,27 @@ "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", "dev": true }, + "common-dir": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/common-dir/-/common-dir-2.0.2.tgz", + "integrity": "sha512-AiVcdIuevkFWyqrcHhpOWJbaFBLm+OLPiaRy3QikrMypalgA4ehU1SugZO2rPawgdzkTAycXGs3F65PGPA2DWg==", + "dev": true, + "requires": { + "common-sequence": "^1.0.2" + } + }, + "common-sequence": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-1.0.2.tgz", + "integrity": "sha1-MOB/P49vf5s97oVPILLTnu4Ibeg=", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -4127,21 +4323,77 @@ "dev": true }, "copy-webpack-plugin": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.3.tgz", - "integrity": "sha512-VKCiNXQcc8zyznaepXfKpCH2cZD+/j3T3B+gsFY97P7qMlEsj34wr/sI9OCG7QPUUh7gAHVx3q8Q1rdQIDM4bA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.0.tgz", + "integrity": "sha512-iiDj+8nnZeW/i8vYJ3+ABSZkOefJnDYIGLojiZKKFDvf1wcEInABXH1+hN7axQMn04qvJxKjgVOee0e14XPtCg==", "dev": true, "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", + "cacache": "^11.3.1", + "find-cache-dir": "^2.0.0", "globby": "^7.1.1", "is-glob": "^4.0.0", "loader-utils": "^1.1.0", "minimatch": "^3.0.4", - "p-limit": "^1.0.0", - "serialize-javascript": "^1.4.0" + "normalize-path": "^3.0.0", + "p-limit": "^2.1.0", + "serialize-javascript": "^1.4.0", + "webpack-log": "^2.0.0" }, "dependencies": { + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", + "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4156,6 +4408,107 @@ "requires": { "is-extglob": "^2.1.1" } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true } } }, @@ -4371,6 +4724,12 @@ } } }, + "css-initials": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/css-initials/-/css-initials-0.2.0.tgz", + "integrity": "sha512-t80yjg0pi4VAIc5itIqLh6M+ZlA+cB+gUXEQkDR09+ExTDwLMGfJ8YviBsGW+DklIrb2k9fwB75Io8ooWXDxxw==", + "dev": true + }, "css-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.0.0.tgz", @@ -4953,6 +5312,15 @@ "strip-bom": "^2.0.0" } }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -5101,6 +5469,16 @@ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + } + }, "diff": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", @@ -5315,7 +5693,13 @@ "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", "dev": true }, - "elegant-spinner": { + "electron-to-chromium": { + "version": "1.3.103", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.103.tgz", + "integrity": "sha512-tObPqGmY9X8MUM8i3MEimYmbnLLf05/QV5gPlkR8MQ3Uj8G8B2govE1U4cQcBYtv3ymck9Y8cIOu4waoiykMZQ==", + "dev": true + }, + "elegant-spinner": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", @@ -5532,6 +5916,18 @@ "event-emitter": "~0.3.5" } }, + "es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", + "dev": true + }, + "es6-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "dev": true + }, "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", @@ -6185,6 +6581,15 @@ "fill-range": "^2.1.0" } }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "expect": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", @@ -6349,224 +6754,550 @@ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true, - "requires": { - "bser": "^2.0.0" - } - }, - "fbjs": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", - "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "http://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - } - } - }, - "fbjs-css-vars": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.1.tgz", - "integrity": "sha512-IM+v/C40MNZWqsLErc32e0TyIk/NhkkQZL0QmjBh6zi1eXv0/GeVKmKmueQX7nn9SXQBQbTUcB8zuexIF3/88w==" - }, - "fclone": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", - "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" - }, - "fetch-mock": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-6.5.2.tgz", - "integrity": "sha512-EIvbpCLBTYyDLu4HJiqD7wC8psDwTUaPaWXNKZbhNO/peUYKiNp5PkZGKRJtnTxaPQu71ivqafvjpM7aL+MofQ==", - "dev": true, - "requires": { - "babel-polyfill": "^6.26.0", - "glob-to-regexp": "^0.4.0", - "path-to-regexp": "^2.2.1" - } - }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - } - }, - "file-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", - "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "fast-glob": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", + "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", "dev": true, "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" }, "dependencies": { - "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } - } - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", - "dev": true - }, - "find-up": { - "version": "2.1.0", + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "^2.0.0" + } + }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "http://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + } + } + }, + "fbjs-css-vars": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.1.tgz", + "integrity": "sha512-IM+v/C40MNZWqsLErc32e0TyIk/NhkkQZL0QmjBh6zi1eXv0/GeVKmKmueQX7nn9SXQBQbTUcB8zuexIF3/88w==" + }, + "fclone": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", + "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" + }, + "fetch-mock": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-6.5.2.tgz", + "integrity": "sha512-EIvbpCLBTYyDLu4HJiqD7wC8psDwTUaPaWXNKZbhNO/peUYKiNp5PkZGKRJtnTxaPQu71ivqafvjpM7aL+MofQ==", + "dev": true, + "requires": { + "babel-polyfill": "^6.26.0", + "glob-to-regexp": "^0.4.0", + "path-to-regexp": "^2.2.1" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", + "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, + "find-up": { + "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, @@ -6574,6 +7305,30 @@ "locate-path": "^2.0.0" } }, + "findup": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz", + "integrity": "sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=", + "dev": true, + "requires": { + "colors": "~0.6.0-1", + "commander": "~2.1.0" + }, + "dependencies": { + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + }, + "commander": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", + "dev": true + } + } + }, "flat-cache": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", @@ -6766,9 +7521,9 @@ "dev": true }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", "dev": true, "optional": true, "requires": { @@ -6794,7 +7549,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "optional": true, @@ -6818,7 +7573,7 @@ } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true @@ -6854,7 +7609,7 @@ } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true, "optional": true @@ -6903,7 +7658,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "dev": true, "optional": true, @@ -6923,12 +7678,12 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { @@ -6989,16 +7744,16 @@ "dev": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.5", "bundled": true, "dev": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "dev": true, "optional": true, @@ -7021,7 +7776,7 @@ "optional": true }, "needle": { - "version": "2.2.0", + "version": "2.2.4", "bundled": true, "dev": true, "optional": true, @@ -7032,18 +7787,18 @@ } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.10.3", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -7060,13 +7815,13 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.0.5", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true, @@ -7141,12 +7896,12 @@ "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -7176,16 +7931,16 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, "dev": true }, @@ -7202,7 +7957,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.6.0", "bundled": true, "dev": true, "optional": true @@ -7253,17 +8008,17 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.8", "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, @@ -7274,12 +8029,12 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { @@ -7288,7 +8043,7 @@ "dev": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true, "dev": true } @@ -7312,6 +8067,12 @@ "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", "dev": true }, + "function.name-polyfill": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/function.name-polyfill/-/function.name-polyfill-1.0.6.tgz", + "integrity": "sha512-ejQivNFbBPTY5O/waFta6D5AzV8GJiM/fMDaT6LrsYax1cb4eipxuQqKNlugF2jlcXIjifsqvju3wsgV35TELg==", + "dev": true + }, "function.prototype.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz", @@ -7438,6 +8199,23 @@ "assert-plus": "^1.0.0" } }, + "github-slugger": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.1.tgz", + "integrity": "sha512-SsZUjg/P03KPzQBt7OxJPasGw6NRO5uOgiZ5RGXVud5iSIZ0eNZeNp5rTwCxtavrRUa/A77j8mePVc5lEvk0KQ==", + "dev": true, + "requires": { + "emoji-regex": ">=6.0.0 <=6.1.1" + }, + "dependencies": { + "emoji-regex": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", + "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=", + "dev": true + } + } + }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -7487,12 +8265,36 @@ "process": "~0.5.1" } }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, "global-modules-path": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", "integrity": "sha1-sOK6xr6sOXRffbXFnSajaguU99w=", "dev": true }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -7532,6 +8334,15 @@ "minimatch": "~3.0.2" } }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, "gonzales-pe-sl": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz", @@ -7780,6 +8591,12 @@ "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=", "dev": true }, + "highlight.js": { + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", + "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==", + "dev": true + }, "history": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/history/-/history-3.3.0.tgz", @@ -7816,6 +8633,15 @@ "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", "dev": true }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -7904,6 +8730,11 @@ "void-elements": "^2.0.1" } }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=" + }, "html-to-react": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/html-to-react/-/html-to-react-1.3.3.tgz", @@ -8418,6 +9249,12 @@ } } }, + "hyphenate-style-name": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz", + "integrity": "sha1-MRYKNpMK2vH8BMYHT360FGXU7Es=", + "dev": true + }, "i18next": { "version": "13.1.0", "resolved": "https://registry.npmjs.org/i18next/-/i18next-13.1.0.tgz", @@ -8464,6 +9301,12 @@ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, + "immer": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.7.2.tgz", + "integrity": "sha512-4Urocwu9+XLDJw4Tc6ZCg7APVjjLInCFvO4TwGsAYV5zT6YYSor14dsZR0+0tHlDIN92cFUOq+i7fC00G5vTxA==", + "dev": true + }, "immutable": { "version": "4.0.0-rc.10", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.10.tgz", @@ -8542,6 +9385,12 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "inquirer": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", @@ -8677,6 +9526,12 @@ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==" }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, "is-alphanumerical": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", @@ -8857,6 +9712,12 @@ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==" }, + "is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=", + "dev": true + }, "is-my-ip-valid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", @@ -8996,6 +9857,12 @@ "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=", "dev": true }, + "is-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.0.0.tgz", + "integrity": "sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg==", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -9222,6 +10089,12 @@ "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", "integrity": "sha1-ktcN64Ao4MOf8xZP2/TYsIgTDNc=" }, + "javascript-stringify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", + "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=", + "dev": true + }, "jest": { "version": "23.6.0", "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", @@ -10269,6 +11142,65 @@ "verror": "1.10.0" } }, + "jss": { + "version": "9.8.7", + "resolved": "https://registry.npmjs.org/jss/-/jss-9.8.7.tgz", + "integrity": "sha512-awj3XRZYxbrmmrx9LUSj5pXSUfm12m8xzi/VKeqI1ZwWBtQ0kVPTs3vYs32t4rFw83CgFDukA8wKzOE9sMQnoQ==", + "dev": true, + "requires": { + "is-in-browser": "^1.1.3", + "symbol-observable": "^1.1.0", + "warning": "^3.0.0" + } + }, + "jss-camel-case": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jss-camel-case/-/jss-camel-case-6.1.0.tgz", + "integrity": "sha512-HPF2Q7wmNW1t79mCqSeU2vdd/vFFGpkazwvfHMOhPlMgXrJDzdj9viA2SaHk9ZbD5pfL63a8ylp4++irYbbzMQ==", + "dev": true, + "requires": { + "hyphenate-style-name": "^1.0.2" + } + }, + "jss-compose": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jss-compose/-/jss-compose-5.0.0.tgz", + "integrity": "sha512-YofRYuiA0+VbeOw0VjgkyO380sA4+TWDrW52nSluD9n+1FWOlDzNbgpZ/Sb3Y46+DcAbOS21W5jo6SAqUEiuwA==", + "dev": true, + "requires": { + "warning": "^3.0.0" + } + }, + "jss-default-unit": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/jss-default-unit/-/jss-default-unit-8.0.2.tgz", + "integrity": "sha512-WxNHrF/18CdoAGw2H0FqOEvJdREXVXLazn7PQYU7V6/BWkCV0GkmWsppNiExdw8dP4TU1ma1dT9zBNJ95feLmg==", + "dev": true + }, + "jss-global": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jss-global/-/jss-global-3.0.0.tgz", + "integrity": "sha512-wxYn7vL+TImyQYGAfdplg7yaxnPQ9RaXY/cIA8hawaVnmmWxDHzBK32u1y+RAvWboa3lW83ya3nVZ/C+jyjZ5Q==", + "dev": true + }, + "jss-isolate": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/jss-isolate/-/jss-isolate-5.1.0.tgz", + "integrity": "sha512-8OVa/SObXRMaKvFeCqzpDOZY8So4fAcTH0K6LsITiYpEQNABICSx1NCmubnt/JbPQaqnnQsF5F47uG86uQ9ZRA==", + "dev": true, + "requires": { + "css-initials": "^0.2.0" + } + }, + "jss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jss-nested/-/jss-nested-6.0.1.tgz", + "integrity": "sha512-rn964TralHOZxoyEgeq3hXY8hyuCElnvQoVrQwKHVmu55VRDd6IqExAx9be5HgK0yN/+hQdgAXQl/GUrBbbSTA==", + "dev": true, + "requires": { + "warning": "^3.0.0" + } + }, "jsx-ast-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", @@ -10815,6 +11747,12 @@ } } }, + "listify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/listify/-/listify-1.0.0.tgz", + "integrity": "sha1-A8p7otFQ1CZ3c/dOV1WNEFPSvuM=", + "dev": true + }, "listr": { "version": "0.14.3", "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", @@ -11184,6 +12122,12 @@ "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", "dev": true }, + "longest-streak": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", + "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==", + "dev": true + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -11208,6 +12152,12 @@ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", "dev": true }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, "lru-cache": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", @@ -11218,6 +12168,23 @@ "yallist": "^2.1.2" } }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "^0.2.2" + }, + "dependencies": { + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + } + } + }, "make-dir": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", @@ -11279,6 +12246,22 @@ "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==" }, + "markdown-table": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz", + "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==", + "dev": true + }, + "markdown-to-jsx": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.9.0.tgz", + "integrity": "sha512-Uj5La0fKQM1d4MD8zY40+E62JNT0OoMuRO4gHECxnLRJt4AOuZ/pqPLFuje4BbamABXwJK0JQbjoUEDQ5l+u9w==", + "dev": true, + "requires": { + "prop-types": "^15.6.2", + "unquote": "^1.1.0" + } + }, "matcher": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", @@ -11313,6 +12296,15 @@ "unist-util-visit-parents": "1.1.2" } }, + "mdast-util-compact": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz", + "integrity": "sha512-d2WS98JSDVbpSsBfVvD9TaDMlqPRz7ohM/11G0rp5jOBb5q96RJ6YLszQ/09AAixyzh23FeIpCGqfaamEADtWg==", + "dev": true, + "requires": { + "unist-util-visit": "^1.1.0" + } + }, "mdn-data": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", @@ -11396,6 +12388,12 @@ "readable-stream": "^2.0.1" } }, + "merge2": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", + "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -11517,6 +12515,15 @@ } } }, + "mini-html-webpack-plugin": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mini-html-webpack-plugin/-/mini-html-webpack-plugin-0.2.3.tgz", + "integrity": "sha512-wfkLf+CmyDg++K1S0QdAvUvS29DfVHe9SQ63syX8aX375mInzC5uwHxb/1+3exiiv84xnPrf6zsOnReRe15rjg==", + "dev": true, + "requires": { + "webpack-sources": "^1.1.0" + } + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -11755,6 +12762,15 @@ "lower-case": "^1.1.1" } }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "dev": true, + "requires": { + "minimatch": "^3.0.2" + } + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", @@ -12014,7 +13030,8 @@ "dependencies": { "ansi-align": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { "string-width": "^2.0.0" @@ -12022,12 +13039,14 @@ }, "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "ansi-styles": { "version": "3.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -12035,12 +13054,14 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "boxen": { "version": "1.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { "ansi-align": "^2.0.0", @@ -12054,7 +13075,8 @@ }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": false, + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -12063,22 +13085,26 @@ }, "builtins": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true }, "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "capture-stack-trace": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", "dev": true }, "chalk": { "version": "2.3.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -12088,17 +13114,20 @@ }, "ci-info": { "version": "1.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", "dev": true }, "cli-boxes": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, "cliui": { "version": "4.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { "string-width": "^2.1.1", @@ -12108,12 +13137,14 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "color-convert": { "version": "1.9.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "^1.1.1" @@ -12121,17 +13152,20 @@ }, "color-name": { "version": "1.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "configstore": { "version": "3.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { "dot-prop": "^4.1.0", @@ -12144,7 +13178,8 @@ }, "create-error-class": { "version": "3.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { "capture-stack-trace": "^1.0.0" @@ -12152,7 +13187,8 @@ }, "cross-spawn": { "version": "5.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -12162,22 +13198,26 @@ }, "crypto-random-string": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true }, "decamelize": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "deep-extend": { "version": "0.4.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true }, "dot-prop": { "version": "4.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { "is-obj": "^1.0.0" @@ -12185,22 +13225,26 @@ }, "dotenv": { "version": "5.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", "dev": true }, "duplexer3": { "version": "0.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "execa": { "version": "0.7.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { "cross-spawn": "^5.0.1", @@ -12214,7 +13258,8 @@ }, "find-up": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -12222,22 +13267,26 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "get-caller-file": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -12250,7 +13299,8 @@ }, "global-dirs": { "version": "0.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { "ini": "^1.3.4" @@ -12258,7 +13308,8 @@ }, "got": { "version": "6.7.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { "create-error-class": "^3.0.0", @@ -12276,32 +13327,38 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": false, + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "has-flag": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "hosted-git-info": { "version": "2.6.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "import-lazy": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -12310,22 +13367,26 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, "invert-kv": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, "is-ci": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { "ci-info": "^1.0.0" @@ -12333,12 +13394,14 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-installed-globally": { "version": "0.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { "global-dirs": "^0.1.0", @@ -12347,17 +13410,20 @@ }, "is-npm": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", "dev": true }, "is-obj": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, "is-path-inside": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { "path-is-inside": "^1.0.1" @@ -12365,27 +13431,32 @@ }, "is-redirect": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, "is-retry-allowed": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "latest-version": { "version": "3.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { "package-json": "^4.0.0" @@ -12393,7 +13464,8 @@ }, "lcid": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { "invert-kv": "^1.0.0" @@ -12401,7 +13473,8 @@ }, "libnpx": { "version": "10.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-X28coei8/XRCt15cYStbLBph+KGhFra4VQhRBPuH/HHMkC5dxM8v24RVgUsvODKCrUZ0eTgiTqJp6zbl0sskQQ==", "dev": true, "requires": { "dotenv": "^5.0.1", @@ -12416,7 +13489,8 @@ }, "locate-path": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -12425,12 +13499,14 @@ }, "lowercase-keys": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, "lru-cache": { "version": "4.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -12439,7 +13515,8 @@ }, "make-dir": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "dev": true, "requires": { "pify": "^3.0.0" @@ -12447,7 +13524,8 @@ }, "mem": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { "mimic-fn": "^1.0.0" @@ -12455,12 +13533,14 @@ }, "mimic-fn": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -12468,12 +13548,14 @@ }, "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "npm": { "version": "5.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-pt5ClxEmY/dLpb60SmGQQBKi3nB6Ljx1FXmpoCUdAULlGqGVn2uCyXxPCWFbcuHGthT7qGiaGa1wOfs/UjGYMw==", "dev": true, "requires": { "JSONStream": "~1.3.1", @@ -12576,7 +13658,8 @@ "dependencies": { "JSONStream": { "version": "1.3.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", "dev": true, "requires": { "jsonparse": "^1.2.0", @@ -12585,54 +13668,64 @@ "dependencies": { "jsonparse": { "version": "1.3.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, "through": { "version": "2.3.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true } } }, "abbrev": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", "dev": true }, "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "ansicolors": { "version": "0.3.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", "dev": true }, "ansistyles": { "version": "0.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk=", "dev": true }, "aproba": { "version": "1.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", "dev": true }, "archy": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, "bluebird": { "version": "3.5.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", "dev": true }, "cacache": { "version": "9.2.9", - "bundled": true, + "resolved": false, + "integrity": "sha512-ghg1j5OyTJ6qsrqU++dN23QiTDxb5AZCFGsF3oB+v9v/gY+F4X8L/0gdQMEjd+8Ot3D29M2etX5PKozHRn2JQw==", "dev": true, "requires": { "bluebird": "^3.5.0", @@ -12652,7 +13745,8 @@ "dependencies": { "lru-cache": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -12661,36 +13755,42 @@ "dependencies": { "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true } } }, "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true } } }, "call-limit": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-b9YbA/PaQqLNDsK2DwK9DnGZH+o=", "dev": true }, "chownr": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", "dev": true }, "cmd-shim": { "version": "2.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-b8vamUg6j9FdfTChlspp1oii79s=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -12699,7 +13799,8 @@ }, "columnify": { "version": "1.5.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", "dev": true, "requires": { "strip-ansi": "^3.0.0", @@ -12708,7 +13809,8 @@ "dependencies": { "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -12716,14 +13818,16 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true } } }, "wcwidth": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "dev": true, "requires": { "defaults": "^1.0.3" @@ -12731,7 +13835,8 @@ "dependencies": { "defaults": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "requires": { "clone": "^1.0.2" @@ -12739,7 +13844,8 @@ "dependencies": { "clone": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", "dev": true } } @@ -12750,7 +13856,8 @@ }, "config-chain": { "version": "1.1.11", - "bundled": true, + "resolved": false, + "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", "dev": true, "requires": { "ini": "^1.3.4", @@ -12759,24 +13866,28 @@ "dependencies": { "proto-list": { "version": "1.2.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", "dev": true } } }, "debuglog": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", "dev": true }, "detect-indent": { "version": "5.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", "dev": true }, "dezalgo": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", "dev": true, "requires": { "asap": "^2.0.0", @@ -12785,19 +13896,22 @@ "dependencies": { "asap": { "version": "2.0.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8=", "dev": true } } }, "editor": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-YMf4e9YrzGqJT6jM1q+3gjok90I=", "dev": true }, "fs-vacuum": { "version": "1.2.10", - "bundled": true, + "resolved": false, + "integrity": "sha1-t2Kb7AekAxolSP35n17PHMizHjY=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -12807,7 +13921,8 @@ }, "fs-write-stream-atomic": { "version": "1.0.10", - "bundled": true, + "resolved": false, + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -12818,7 +13933,8 @@ }, "fstream": { "version": "1.0.11", - "bundled": true, + "resolved": false, + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -12829,7 +13945,8 @@ }, "fstream-npm": { "version": "1.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-iBHpm/LmD1qw0TlHMAqVd9rwdU6M+EHRUnPkXpRi5G/Hf0FIFH+oZFryodAU2MFNfGRh/CzhUFlMKV3pdeOTDw==", "dev": true, "requires": { "fstream-ignore": "^1.0.0", @@ -12838,7 +13955,8 @@ "dependencies": { "fstream-ignore": { "version": "1.0.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "dev": true, "requires": { "fstream": "^1.0.0", @@ -12848,7 +13966,8 @@ "dependencies": { "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -12856,7 +13975,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -12865,12 +13985,14 @@ "dependencies": { "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true } } @@ -12883,7 +14005,8 @@ }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -12896,12 +14019,14 @@ "dependencies": { "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -12909,7 +14034,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -12918,12 +14044,14 @@ "dependencies": { "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true } } @@ -12932,39 +14060,46 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true } } }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": false, + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, "hosted-git-info": { "version": "2.5.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "iferr": { "version": "0.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true }, "imurmurhash": { "version": "0.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -12973,17 +14108,20 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "dev": true }, "init-package-json": { "version": "1.10.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-zYc6FneWvvuZYSsodioLY5P9j2o=", "dev": true, "requires": { "glob": "^7.1.1", @@ -12998,7 +14136,8 @@ "dependencies": { "promzard": { "version": "0.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", "dev": true, "requires": { "read": "1" @@ -13008,22 +14147,26 @@ }, "lazy-property": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc=", "dev": true }, "lockfile": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-Jjj8OaAzHpysGgS3F5mTHJxQ33k=", "dev": true }, "lodash._baseindexof": { "version": "3.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw=", "dev": true }, "lodash._baseuniq": { "version": "4.6.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg=", "dev": true, "requires": { "lodash._createset": "~4.0.0", @@ -13032,29 +14175,34 @@ "dependencies": { "lodash._createset": { "version": "4.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=", "dev": true }, "lodash._root": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", "dev": true } } }, "lodash._bindcallback": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", "dev": true }, "lodash._cacheindexof": { "version": "3.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI=", "dev": true }, "lodash._createcache": { "version": "3.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-VtagZAF2JeeevKa4AY4XRAvc8JM=", "dev": true, "requires": { "lodash._getnative": "^3.0.0" @@ -13062,37 +14210,44 @@ }, "lodash._getnative": { "version": "3.9.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", "dev": true }, "lodash.clonedeep": { "version": "4.5.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, "lodash.restparam": { "version": "3.6.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", "dev": true }, "lodash.union": { "version": "4.6.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", "dev": true }, "lodash.uniq": { "version": "4.5.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, "lodash.without": { "version": "4.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=", "dev": true }, "lru-cache": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -13101,19 +14256,22 @@ "dependencies": { "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true } } }, "mississippi": { "version": "1.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=", "dev": true, "requires": { "concat-stream": "^1.5.0", @@ -13130,7 +14288,8 @@ "dependencies": { "concat-stream": { "version": "1.6.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { "inherits": "^2.0.3", @@ -13140,14 +14299,16 @@ "dependencies": { "typedarray": { "version": "0.0.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true } } }, "duplexify": { "version": "3.5.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", "dev": true, "requires": { "end-of-stream": "1.0.0", @@ -13158,7 +14319,8 @@ "dependencies": { "end-of-stream": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", "dev": true, "requires": { "once": "~1.3.0" @@ -13166,7 +14328,8 @@ "dependencies": { "once": { "version": "1.3.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", "dev": true, "requires": { "wrappy": "1" @@ -13176,14 +14339,16 @@ }, "stream-shift": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true } } }, "end-of-stream": { "version": "1.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", "dev": true, "requires": { "once": "^1.4.0" @@ -13191,7 +14356,8 @@ }, "flush-write-stream": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", "dev": true, "requires": { "inherits": "^2.0.1", @@ -13200,7 +14366,8 @@ }, "from2": { "version": "2.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { "inherits": "^2.0.1", @@ -13209,7 +14376,8 @@ }, "parallel-transform": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "dev": true, "requires": { "cyclist": "~0.2.2", @@ -13219,14 +14387,16 @@ "dependencies": { "cyclist": { "version": "0.2.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", "dev": true } } }, "pump": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -13235,7 +14405,8 @@ }, "pumpify": { "version": "1.3.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=", "dev": true, "requires": { "duplexify": "^3.1.2", @@ -13245,7 +14416,8 @@ }, "stream-each": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-HpXUdXP1gNgU3A/4zQ9m8c5TyZE=", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -13254,14 +14426,16 @@ "dependencies": { "stream-shift": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true } } }, "through2": { "version": "2.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { "readable-stream": "^2.1.5", @@ -13270,7 +14444,8 @@ "dependencies": { "xtend": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true } } @@ -13279,7 +14454,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -13287,14 +14463,16 @@ "dependencies": { "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } } }, "move-concurrently": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { "aproba": "^1.1.1", @@ -13307,7 +14485,8 @@ "dependencies": { "copy-concurrently": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-Rft4ZiSaHKiJqlcI5svSc+dbslA=", "dev": true, "requires": { "aproba": "^1.1.1", @@ -13320,7 +14499,8 @@ }, "run-queue": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { "aproba": "^1.1.1" @@ -13330,7 +14510,8 @@ }, "node-gyp": { "version": "3.6.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", "dev": true, "requires": { "fstream": "^1.0.0", @@ -13350,7 +14531,8 @@ "dependencies": { "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -13358,7 +14540,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -13367,12 +14550,14 @@ "dependencies": { "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true } } @@ -13381,7 +14566,8 @@ }, "nopt": { "version": "3.0.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { "abbrev": "1" @@ -13391,7 +14577,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "requires": { "abbrev": "1", @@ -13400,7 +14587,8 @@ }, "normalize-package-data": { "version": "2.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -13411,7 +14599,8 @@ "dependencies": { "is-builtin-module": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { "builtin-modules": "^1.0.0" @@ -13419,7 +14608,8 @@ "dependencies": { "builtin-modules": { "version": "1.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true } } @@ -13428,12 +14618,14 @@ }, "npm-cache-filename": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE=", "dev": true }, "npm-install-checks": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-1K7N/VGlPjcjt7L5Oy7ijjB7wNc=", "dev": true, "requires": { "semver": "^2.3.0 || 3.x || 4 || 5" @@ -13441,7 +14633,8 @@ }, "npm-package-arg": { "version": "5.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-wJBsrf0qpypPT7A0LART18hCdyhpCMxeTtcb0X4IZO2jsP6Om7EHN1d9KSKiqD+KVH030RVNpWS9thk+pb7wzA==", "dev": true, "requires": { "hosted-git-info": "^2.4.2", @@ -13452,7 +14645,8 @@ }, "npm-registry-client": { "version": "8.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-PVNfqq0lyRdFnE//nDmn3CC9uqTsr8Bya9KPLIevlXMfkP0m4RpCVyFFk0W1Gfx436kKwyhLA6J+lV+rgR81gQ==", "dev": true, "requires": { "concat-stream": "^1.5.2", @@ -13470,7 +14664,8 @@ "dependencies": { "concat-stream": { "version": "1.6.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { "inherits": "^2.0.3", @@ -13480,7 +14675,8 @@ "dependencies": { "typedarray": { "version": "0.0.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true } } @@ -13489,12 +14685,14 @@ }, "npm-user-validate": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE=", "dev": true }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { "are-we-there-yet": "~1.1.2", @@ -13505,7 +14703,8 @@ "dependencies": { "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "requires": { "delegates": "^1.0.0", @@ -13514,19 +14713,22 @@ "dependencies": { "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true } } }, "console-control-strings": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { "aproba": "^1.0.3", @@ -13541,17 +14743,20 @@ "dependencies": { "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -13561,12 +14766,14 @@ "dependencies": { "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -13574,7 +14781,8 @@ "dependencies": { "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true } } @@ -13583,7 +14791,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -13591,14 +14800,16 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true } } }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "requires": { "string-width": "^1.0.2" @@ -13608,14 +14819,16 @@ }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true } } }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -13623,12 +14836,14 @@ }, "opener": { "version": "1.4.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", "dev": true }, "osenv": { "version": "0.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", "dev": true, "requires": { "os-homedir": "^1.0.0", @@ -13637,19 +14852,22 @@ "dependencies": { "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true } } }, "pacote": { "version": "2.7.38", - "bundled": true, + "resolved": false, + "integrity": "sha512-XxHUyHQB7QCVBxoXeVu0yKxT+2PvJucsc0+1E+6f95lMUxEAYERgSAc71ckYXrYr35Ew3xFU/LrhdIK21GQFFA==", "dev": true, "requires": { "bluebird": "^3.5.0", @@ -13677,7 +14895,8 @@ "dependencies": { "make-fetch-happen": { "version": "2.4.13", - "bundled": true, + "resolved": false, + "integrity": "sha512-73CsTlMRSLdGr7VvOE8iYl/ejOSIxyfRYg7jZhepGGEqIlgdq6FLe2DEAI5bo813Jdg5fS/Ku62SRQ/UpT6NJA==", "dev": true, "requires": { "agentkeepalive": "^3.3.0", @@ -13695,7 +14914,8 @@ "dependencies": { "agentkeepalive": { "version": "3.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-9yhcpXti2ZQE7bxuCsjjWNIZoQOd9sZ1ZBovHG0YeCRohFv73SLvcm73PC9T3olM4GyozaQb+4MGdQpcD8m7NQ==", "dev": true, "requires": { "humanize-ms": "^1.2.1" @@ -13703,7 +14923,8 @@ "dependencies": { "humanize-ms": { "version": "1.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", "dev": true, "requires": { "ms": "^2.0.0" @@ -13711,7 +14932,8 @@ "dependencies": { "ms": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } @@ -13720,12 +14942,14 @@ }, "http-cache-semantics": { "version": "3.7.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-LzXFMuzSnx5UE7mvgztySjxvf3I=", "dev": true }, "http-proxy-agent": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-RkgqLwUjpNYIJVFwn0acs+SoX/Q=", "dev": true, "requires": { "agent-base": "4", @@ -13734,7 +14958,8 @@ "dependencies": { "agent-base": { "version": "4.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-IOF0Ac1Js8B2v1akvGxbQ2/6jVU=", "dev": true, "requires": { "es6-promisify": "^5.0.0" @@ -13742,7 +14967,8 @@ "dependencies": { "es6-promisify": { "version": "5.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { "es6-promise": "^4.0.3" @@ -13750,7 +14976,8 @@ "dependencies": { "es6-promise": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==", "dev": true } } @@ -13759,7 +14986,8 @@ }, "debug": { "version": "2.6.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, "requires": { "ms": "2.0.0" @@ -13767,7 +14995,8 @@ "dependencies": { "ms": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } @@ -13776,7 +15005,8 @@ }, "https-proxy-agent": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-/6pLb69YasNAwYoUBDHna31/KUQ=", "dev": true, "requires": { "agent-base": "^4.1.0", @@ -13785,7 +15015,8 @@ "dependencies": { "agent-base": { "version": "4.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-IOF0Ac1Js8B2v1akvGxbQ2/6jVU=", "dev": true, "requires": { "es6-promisify": "^5.0.0" @@ -13793,7 +15024,8 @@ "dependencies": { "es6-promisify": { "version": "5.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { "es6-promise": "^4.0.3" @@ -13801,7 +15033,8 @@ "dependencies": { "es6-promise": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==", "dev": true } } @@ -13810,7 +15043,8 @@ }, "debug": { "version": "2.6.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, "requires": { "ms": "2.0.0" @@ -13818,7 +15052,8 @@ "dependencies": { "ms": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } @@ -13827,7 +15062,8 @@ }, "node-fetch-npm": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-W3onhopST5tqpX0/MGSL47pDQLLKobNR83AvkiOWQKaw54h+uYUfzeLAxCiyhWlUOiuI+GIb4O9ojLaAFlhCCA==", "dev": true, "requires": { "encoding": "^0.1.11", @@ -13837,7 +15073,8 @@ "dependencies": { "encoding": { "version": "0.1.12", - "bundled": true, + "resolved": false, + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, "requires": { "iconv-lite": "~0.4.13" @@ -13845,14 +15082,16 @@ "dependencies": { "iconv-lite": { "version": "0.4.18", - "bundled": true, + "resolved": false, + "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", "dev": true } } }, "json-parse-helpfulerror": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", "dev": true, "requires": { "jju": "^1.1.0" @@ -13860,7 +15099,8 @@ "dependencies": { "jju": { "version": "1.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-2t2e8BkkvHKLA/L3l5vb1i96Kqo=", "dev": true } } @@ -13869,7 +15109,8 @@ }, "socks-proxy-agent": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-YJcT+SNNBgFoK/NpO20PChz0VnBOhkjG3X10BwlrYujd0NZlSsH1jbxSQ1S0njt3sOvzwQ2PvGqqUIvP4rNk/w==", "dev": true, "requires": { "agent-base": "^4.0.1", @@ -13878,7 +15119,8 @@ "dependencies": { "agent-base": { "version": "4.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-IOF0Ac1Js8B2v1akvGxbQ2/6jVU=", "dev": true, "requires": { "es6-promisify": "^5.0.0" @@ -13886,7 +15128,8 @@ "dependencies": { "es6-promisify": { "version": "5.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { "es6-promise": "^4.0.3" @@ -13894,7 +15137,8 @@ "dependencies": { "es6-promise": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==", "dev": true } } @@ -13903,7 +15147,8 @@ }, "socks": { "version": "1.1.10", - "bundled": true, + "resolved": false, + "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", "dev": true, "requires": { "ip": "^1.1.4", @@ -13912,12 +15157,14 @@ "dependencies": { "ip": { "version": "1.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, "smart-buffer": { "version": "1.1.15", - "bundled": true, + "resolved": false, + "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", "dev": true } } @@ -13928,7 +15175,8 @@ }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -13936,7 +15184,8 @@ "dependencies": { "brace-expansion": { "version": "1.1.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -13945,12 +15194,14 @@ "dependencies": { "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true } } @@ -13959,7 +15210,8 @@ }, "npm-pick-manifest": { "version": "1.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-MKxNdeyOZysPRTTbHtW0M5Fw38Jo/3ARsoGw5qjCfS+XGjvNB/Gb4qtAZUFmKPM2mVum+eX559eHvKywU856BQ==", "dev": true, "requires": { "npm-package-arg": "^5.1.2", @@ -13968,7 +15220,8 @@ }, "promise-retry": { "version": "1.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", "dev": true, "requires": { "err-code": "^1.0.0", @@ -13977,14 +15230,16 @@ "dependencies": { "err-code": { "version": "1.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", "dev": true } } }, "protoduck": { "version": "4.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-/kh02MeRM2bP2erRJFOiLNNlf44=", "dev": true, "requires": { "genfun": "^4.0.1" @@ -13992,14 +15247,16 @@ "dependencies": { "genfun": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-7RAEHy5KfxsKOEZtF6XD4n3x38E=", "dev": true } } }, "tar-fs": { "version": "1.15.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-7M+TXpQUk9gVECjmNuUc5MPKfyA=", "dev": true, "requires": { "chownr": "^1.0.1", @@ -14010,7 +15267,8 @@ "dependencies": { "pump": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -14019,7 +15277,8 @@ "dependencies": { "end-of-stream": { "version": "1.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", "dev": true, "requires": { "once": "^1.4.0" @@ -14031,7 +15290,8 @@ }, "tar-stream": { "version": "1.5.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", "dev": true, "requires": { "bl": "^1.0.0", @@ -14042,7 +15302,8 @@ "dependencies": { "bl": { "version": "1.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "dev": true, "requires": { "readable-stream": "^2.0.5" @@ -14050,7 +15311,8 @@ }, "end-of-stream": { "version": "1.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", "dev": true, "requires": { "once": "^1.4.0" @@ -14058,7 +15320,8 @@ }, "xtend": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true } } @@ -14067,17 +15330,20 @@ }, "path-is-inside": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, "promise-inflight": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, "read": { "version": "1.0.7", - "bundled": true, + "resolved": false, + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", "dev": true, "requires": { "mute-stream": "~0.0.4" @@ -14085,14 +15351,16 @@ "dependencies": { "mute-stream": { "version": "0.0.7", - "bundled": true, + "resolved": false, + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true } } }, "read-cmd-shim": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs=", "dev": true, "requires": { "graceful-fs": "^4.1.2" @@ -14100,7 +15368,8 @@ }, "read-installed": { "version": "4.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=", "dev": true, "requires": { "debuglog": "^1.0.1", @@ -14114,14 +15383,16 @@ "dependencies": { "util-extend": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=", "dev": true } } }, "read-package-json": { "version": "2.0.9", - "bundled": true, + "resolved": false, + "integrity": "sha512-vuV8p921IgyelL4UOKv3FsRuRZSaRn30HanLAOKargsr8TbBEq+I3MgloSRXYuKhNdYP1wlEGilMWAIayA2RFg==", "dev": true, "requires": { "glob": "^7.1.1", @@ -14132,7 +15403,8 @@ "dependencies": { "json-parse-helpfulerror": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", "dev": true, "requires": { "jju": "^1.1.0" @@ -14140,7 +15412,8 @@ "dependencies": { "jju": { "version": "1.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-2t2e8BkkvHKLA/L3l5vb1i96Kqo=", "dev": true } } @@ -14149,7 +15422,8 @@ }, "read-package-tree": { "version": "5.1.6", - "bundled": true, + "resolved": false, + "integrity": "sha512-FCX1aT3GWyY658wzDICef4p+n0dB+ENRct8E/Qyvppj6xVpOYerBHfUu7OP5Rt1/393Tdglguf5ju5DEX4wZNg==", "dev": true, "requires": { "debuglog": "^1.0.1", @@ -14161,7 +15435,8 @@ }, "readable-stream": { "version": "2.3.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -14175,22 +15450,26 @@ "dependencies": { "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "process-nextick-args": { "version": "1.0.7", - "bundled": true, + "resolved": false, + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, "string_decoder": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -14198,14 +15477,16 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true } } }, "readdir-scoped-modules": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-n6+jfShr5dksuuve4DDcm19AZ0c=", "dev": true, "requires": { "debuglog": "^1.0.1", @@ -14216,7 +15497,8 @@ }, "request": { "version": "2.81.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "dev": true, "requires": { "aws-sign2": "~0.6.0", @@ -14245,22 +15527,26 @@ "dependencies": { "aws-sign2": { "version": "0.6.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true }, "aws4": { "version": "1.6.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, "caseless": { "version": "0.12.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, "combined-stream": { "version": "1.0.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -14268,24 +15554,28 @@ "dependencies": { "delayed-stream": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true } } }, "extend": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, "forever-agent": { "version": "0.6.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, "form-data": { "version": "2.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "requires": { "asynckit": "^0.4.0", @@ -14295,14 +15585,16 @@ "dependencies": { "asynckit": { "version": "0.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true } } }, "har-validator": { "version": "4.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, "requires": { "ajv": "^4.9.1", @@ -14311,7 +15603,8 @@ "dependencies": { "ajv": { "version": "4.11.8", - "bundled": true, + "resolved": false, + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { "co": "^4.6.0", @@ -14320,12 +15613,14 @@ "dependencies": { "co": { "version": "4.6.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, "json-stable-stringify": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { "jsonify": "~0.0.0" @@ -14333,7 +15628,8 @@ "dependencies": { "jsonify": { "version": "0.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true } } @@ -14342,14 +15638,16 @@ }, "har-schema": { "version": "1.0.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", "dev": true } } }, "hawk": { "version": "3.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { "boom": "2.x.x", @@ -14360,7 +15658,8 @@ "dependencies": { "boom": { "version": "2.10.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { "hoek": "2.x.x" @@ -14368,7 +15667,8 @@ }, "cryptiles": { "version": "2.0.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { "boom": "2.x.x" @@ -14376,12 +15676,14 @@ }, "hoek": { "version": "2.16.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "sntp": { "version": "1.0.9", - "bundled": true, + "resolved": false, + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { "hoek": "2.x.x" @@ -14391,7 +15693,8 @@ }, "http-signature": { "version": "1.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "requires": { "assert-plus": "^0.2.0", @@ -14401,12 +15704,14 @@ "dependencies": { "assert-plus": { "version": "0.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, "jsprim": { "version": "1.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "dev": true, "requires": { "assert-plus": "1.0.0", @@ -14417,22 +15722,26 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, "extsprintf": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", "dev": true }, "json-schema": { "version": "0.2.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, "verror": { "version": "1.3.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "dev": true, "requires": { "extsprintf": "1.0.2" @@ -14442,7 +15751,8 @@ }, "sshpk": { "version": "1.13.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "dev": true, "requires": { "asn1": "~0.2.3", @@ -14457,17 +15767,20 @@ "dependencies": { "asn1": { "version": "0.2.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "optional": true, "requires": { @@ -14476,7 +15789,8 @@ }, "dashdash": { "version": "1.14.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -14484,7 +15798,8 @@ }, "ecc-jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, "optional": true, "requires": { @@ -14493,7 +15808,8 @@ }, "getpass": { "version": "0.1.7", - "bundled": true, + "resolved": false, + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -14501,13 +15817,15 @@ }, "jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, "optional": true }, "tweetnacl": { "version": "0.14.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true, "optional": true } @@ -14517,22 +15835,26 @@ }, "is-typedarray": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "isstream": { "version": "0.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, "json-stringify-safe": { "version": "5.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, "mime-types": { "version": "2.1.15", - "bundled": true, + "resolved": false, + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", "dev": true, "requires": { "mime-db": "~1.27.0" @@ -14540,34 +15862,40 @@ "dependencies": { "mime-db": { "version": "1.27.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", "dev": true } } }, "oauth-sign": { "version": "0.8.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true }, "performance-now": { "version": "0.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", "dev": true }, "qs": { "version": "6.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", "dev": true }, "stringstream": { "version": "0.0.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true }, "tough-cookie": { "version": "2.3.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "dev": true, "requires": { "punycode": "^1.4.1" @@ -14575,14 +15903,16 @@ "dependencies": { "punycode": { "version": "1.4.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true } } }, "tunnel-agent": { "version": "0.6.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -14592,12 +15922,14 @@ }, "retry": { "version": "0.10.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", "dev": true }, "rimraf": { "version": "2.6.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "dev": true, "requires": { "glob": "^7.0.5" @@ -14605,17 +15937,20 @@ }, "safe-buffer": { "version": "5.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "semver": { "version": "5.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true }, "sha": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-YDCCL70smCOUn49y7WQR7lzyWq4=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -14624,17 +15959,20 @@ }, "slide": { "version": "1.1.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, "sorted-object": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-fWMfS9OnmKJK8d/8+/6DM3pd9fw=", "dev": true }, "sorted-union-stream": { "version": "2.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-x3lMfgd4gAUv9xqNSi27Sppjisc=", "dev": true, "requires": { "from2": "^1.3.0", @@ -14643,7 +15981,8 @@ "dependencies": { "from2": { "version": "1.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-iEE7qqX5pZfP3pIh2GmGzTwGHf0=", "dev": true, "requires": { "inherits": "~2.0.1", @@ -14652,7 +15991,8 @@ "dependencies": { "readable-stream": { "version": "1.1.14", - "bundled": true, + "resolved": false, + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -14663,17 +16003,20 @@ "dependencies": { "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "isarray": { "version": "0.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, "string_decoder": { "version": "0.10.31", - "bundled": true, + "resolved": false, + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true } } @@ -14682,7 +16025,8 @@ }, "stream-iterate": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-K9fHcpbBcCpGSIuK1B95hl7s1OE=", "dev": true, "requires": { "readable-stream": "^2.1.5", @@ -14691,7 +16035,8 @@ "dependencies": { "stream-shift": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true } } @@ -14700,7 +16045,8 @@ }, "ssri": { "version": "4.1.6", - "bundled": true, + "resolved": false, + "integrity": "sha512-WUbCdgSAMQjTFZRWvSPpauryvREEA+Krn19rx67UlJEJx/M192ZHxMmJXjZ4tkdFm+Sb0SXGlENeQVlA5wY7kA==", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -14708,7 +16054,8 @@ }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -14716,14 +16063,16 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true } } }, "tar": { "version": "2.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { "block-stream": "*", @@ -14733,7 +16082,8 @@ "dependencies": { "block-stream": { "version": "0.0.9", - "bundled": true, + "resolved": false, + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { "inherits": "~2.0.0" @@ -14743,22 +16093,26 @@ }, "text-table": { "version": "0.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, "uid-number": { "version": "0.0.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", "dev": true }, "umask": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=", "dev": true }, "unique-filename": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", "dev": true, "requires": { "unique-slug": "^2.0.0" @@ -14766,7 +16120,8 @@ "dependencies": { "unique-slug": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -14776,12 +16131,14 @@ }, "unpipe": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, "update-notifier": { "version": "2.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", "dev": true, "requires": { "boxen": "^1.0.0", @@ -14796,7 +16153,8 @@ "dependencies": { "boxen": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-sbad1SIwXoB6md7ud329blFnsQI=", "dev": true, "requires": { "ansi-align": "^2.0.0", @@ -14810,7 +16168,8 @@ "dependencies": { "ansi-align": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { "string-width": "^2.0.0" @@ -14818,17 +16177,20 @@ }, "camelcase": { "version": "4.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "cli-boxes": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, "string-width": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -14837,12 +16199,14 @@ "dependencies": { "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -14852,7 +16216,8 @@ }, "term-size": { "version": "0.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-hzYLljlsq1dgljcUzaDQy+7K2co=", "dev": true, "requires": { "execa": "^0.4.0" @@ -14860,7 +16225,8 @@ "dependencies": { "execa": { "version": "0.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-TrZGejaglfq7KXD/nV4/t7zm68M=", "dev": true, "requires": { "cross-spawn-async": "^2.1.1", @@ -14873,7 +16239,8 @@ "dependencies": { "cross-spawn-async": { "version": "2.2.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", "dev": true, "requires": { "lru-cache": "^4.0.0", @@ -14882,12 +16249,14 @@ }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "npm-run-path": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=", "dev": true, "requires": { "path-key": "^1.0.0" @@ -14895,17 +16264,20 @@ }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "path-key": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=", "dev": true }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true } } @@ -14914,7 +16286,8 @@ }, "widest-line": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", "dev": true, "requires": { "string-width": "^1.0.1" @@ -14922,7 +16295,8 @@ "dependencies": { "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -14932,12 +16306,14 @@ "dependencies": { "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -14945,14 +16321,16 @@ "dependencies": { "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true } } }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -14960,7 +16338,8 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true } } @@ -14973,7 +16352,8 @@ }, "chalk": { "version": "1.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -14985,17 +16365,20 @@ "dependencies": { "ansi-styles": { "version": "2.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "escape-string-regexp": { "version": "1.0.5", - "bundled": true, + "resolved": false, + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "has-ansi": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -15003,14 +16386,16 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true } } }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -15018,21 +16403,24 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true } } }, "supports-color": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true } } }, "configstore": { "version": "3.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-Rd+QcHPibfoc9LLVL1tgVF6qEdE=", "dev": true, "requires": { "dot-prop": "^4.1.0", @@ -15045,7 +16433,8 @@ "dependencies": { "dot-prop": { "version": "4.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-qEk/C3te7sglJbXHWH+n3nyoWcE=", "dev": true, "requires": { "is-obj": "^1.0.0" @@ -15053,14 +16442,16 @@ "dependencies": { "is-obj": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true } } }, "make-dir": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", "dev": true, "requires": { "pify": "^2.3.0" @@ -15068,14 +16459,16 @@ "dependencies": { "pify": { "version": "2.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } } }, "unique-string": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "dev": true, "requires": { "crypto-random-string": "^1.0.0" @@ -15083,7 +16476,8 @@ "dependencies": { "crypto-random-string": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true } } @@ -15092,17 +16486,20 @@ }, "import-lazy": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true }, "is-npm": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", "dev": true }, "latest-version": { "version": "3.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { "package-json": "^4.0.0" @@ -15110,7 +16507,8 @@ "dependencies": { "package-json": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { "got": "^6.7.1", @@ -15121,7 +16519,8 @@ "dependencies": { "got": { "version": "6.7.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { "create-error-class": "^3.0.0", @@ -15139,7 +16538,8 @@ "dependencies": { "create-error-class": { "version": "3.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { "capture-stack-trace": "^1.0.0" @@ -15147,54 +16547,64 @@ "dependencies": { "capture-stack-trace": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", "dev": true } } }, "duplexer3": { "version": "0.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, "get-stream": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "is-redirect": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, "is-retry-allowed": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", "dev": true }, "is-stream": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "lowercase-keys": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", "dev": true }, "timed-out": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, "unzip-response": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", "dev": true }, "url-parse-lax": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { "prepend-http": "^1.0.1" @@ -15202,7 +16612,8 @@ "dependencies": { "prepend-http": { "version": "1.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true } } @@ -15211,7 +16622,8 @@ }, "registry-auth-token": { "version": "3.3.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", "dev": true, "requires": { "rc": "^1.1.6", @@ -15220,7 +16632,8 @@ "dependencies": { "rc": { "version": "1.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, "requires": { "deep-extend": "~0.4.0", @@ -15231,17 +16644,20 @@ "dependencies": { "deep-extend": { "version": "0.4.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true }, "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true } } @@ -15250,7 +16666,8 @@ }, "registry-url": { "version": "3.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { "rc": "^1.0.1" @@ -15258,7 +16675,8 @@ "dependencies": { "rc": { "version": "1.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, "requires": { "deep-extend": "~0.4.0", @@ -15269,17 +16687,20 @@ "dependencies": { "deep-extend": { "version": "0.4.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true }, "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true } } @@ -15292,7 +16713,8 @@ }, "semver-diff": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { "semver": "^5.0.3" @@ -15300,19 +16722,22 @@ }, "xdg-basedir": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", "dev": true } } }, "uuid": { "version": "3.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", "dev": true }, "validate-npm-package-license": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { "spdx-correct": "~1.0.0", @@ -15321,7 +16746,8 @@ "dependencies": { "spdx-correct": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { "spdx-license-ids": "^1.0.2" @@ -15329,21 +16755,24 @@ "dependencies": { "spdx-license-ids": { "version": "1.2.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true } } }, "spdx-expression-parse": { "version": "1.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", "dev": true } } }, "validate-npm-package-name": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", "dev": true, "requires": { "builtins": "^1.0.3" @@ -15351,14 +16780,16 @@ "dependencies": { "builtins": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true } } }, "which": { "version": "1.2.14", - "bundled": true, + "resolved": false, + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "requires": { "isexe": "^2.0.0" @@ -15366,14 +16797,16 @@ "dependencies": { "isexe": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true } } }, "worker-farm": { "version": "1.3.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-QzMRK7SbF6oFC4eJXKayys9A5f8=", "dev": true, "requires": { "errno": ">=0.1.1 <0.2.0-0", @@ -15382,7 +16815,8 @@ "dependencies": { "errno": { "version": "0.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", "dev": true, "requires": { "prr": "~0.0.0" @@ -15390,26 +16824,30 @@ "dependencies": { "prr": { "version": "0.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", "dev": true } } }, "xtend": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true } } }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -15421,7 +16859,8 @@ }, "npm-package-arg": { "version": "6.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", "dev": true, "requires": { "hosted-git-info": "^2.6.0", @@ -15432,7 +16871,8 @@ }, "npm-run-path": { "version": "2.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "^2.0.0" @@ -15440,12 +16880,14 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -15453,12 +16895,14 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, "os-locale": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { "execa": "^0.7.0", @@ -15468,12 +16912,14 @@ }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { "os-homedir": "^1.0.0", @@ -15482,12 +16928,14 @@ }, "p-finally": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -15495,7 +16943,8 @@ }, "p-locate": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -15503,12 +16952,14 @@ }, "p-try": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "package-json": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { "got": "^6.7.1", @@ -15519,42 +16970,50 @@ }, "path-exists": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-is-inside": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, "path-key": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "pify": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "prepend-http": { "version": "1.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, "pseudomap": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "rc": { "version": "1.2.6", - "bundled": true, + "resolved": false, + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { "deep-extend": "~0.4.0", @@ -15565,7 +17024,8 @@ }, "registry-auth-token": { "version": "3.3.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { "rc": "^1.1.6", @@ -15574,7 +17034,8 @@ }, "registry-url": { "version": "3.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { "rc": "^1.0.1" @@ -15582,17 +17043,20 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "^7.0.5" @@ -15600,17 +17064,20 @@ }, "safe-buffer": { "version": "5.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "semver-diff": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { "semver": "^5.0.3" @@ -15618,12 +17085,14 @@ }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "shebang-command": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -15631,17 +17100,20 @@ }, "shebang-regex": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "string-width": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -15650,7 +17122,8 @@ }, "strip-ansi": { "version": "4.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -15658,17 +17131,20 @@ }, "strip-eof": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, "supports-color": { "version": "5.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -15676,7 +17152,8 @@ }, "term-size": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { "execa": "^0.7.0" @@ -15684,12 +17161,14 @@ }, "timed-out": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, "unique-string": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "dev": true, "requires": { "crypto-random-string": "^1.0.0" @@ -15697,12 +17176,14 @@ }, "unzip-response": { "version": "2.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", "dev": true }, "update-notifier": { "version": "2.4.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-+bTHAPv9TsEsgRWHJYd31WPYyGY=", "dev": true, "requires": { "boxen": "^1.2.1", @@ -15719,7 +17200,8 @@ }, "url-parse-lax": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { "prepend-http": "^1.0.1" @@ -15727,7 +17209,8 @@ }, "validate-npm-package-name": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", "dev": true, "requires": { "builtins": "^1.0.3" @@ -15735,7 +17218,8 @@ }, "which": { "version": "1.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -15743,12 +17227,14 @@ }, "which-module": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "widest-line": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { "string-width": "^2.1.1" @@ -15756,7 +17242,8 @@ }, "wrap-ansi": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", @@ -15765,12 +17252,14 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -15778,7 +17267,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -15788,7 +17278,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -15798,12 +17289,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "2.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -15813,22 +17306,26 @@ }, "xdg-basedir": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", "dev": true }, "y18n": { "version": "4.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { "version": "2.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { "version": "11.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { "cliui": "^4.0.0", @@ -15847,14 +17344,16 @@ "dependencies": { "y18n": { "version": "3.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true } } }, "yargs-parser": { "version": "9.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -16120,6 +17619,66 @@ "wordwrap": "~1.0.0" } }, + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -16317,6 +17876,12 @@ "error-ex": "^1.2.0" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, "parse5": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", @@ -16417,9 +17982,9 @@ "dev": true }, "phoenix": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/phoenix/-/phoenix-1.3.4.tgz", - "integrity": "sha1-Qx9HP32x2JULAXIZ+dxHAxnCFqw=" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/phoenix/-/phoenix-1.4.1.tgz", + "integrity": "sha512-p4ZpepyuLAs3fdRxRMKMn5Im/rpNRwB3HtUjbTJBPRdT26uedjE0BTiCR8x7R6cMY/Pvb5AphN+qOLK3kfjR3g==" }, "pify": { "version": "2.3.0", @@ -16460,6 +18025,15 @@ "find-up": "^2.1.0" } }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, "please-upgrade-node": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", @@ -17696,13 +19270,190 @@ } } }, - "postcss-normalize-timing-functions": { + "postcss-normalize-timing-functions": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz", + "integrity": "sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "postcss": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", + "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "postcss": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", + "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "postcss": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", + "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.5.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-whitespace": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz", - "integrity": "sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz", + "integrity": "sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" }, @@ -17755,13 +19506,13 @@ } } }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "postcss-ordered-values": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz", + "integrity": "sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==", "dev": true, "requires": { - "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" }, @@ -17814,16 +19565,16 @@ } } }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "postcss-reduce-initial": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz", + "integrity": "sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==", "dev": true, "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" }, "dependencies": { "ansi-styles": { @@ -17874,12 +19625,14 @@ } } }, - "postcss-normalize-whitespace": { + "postcss-reduce-transforms": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz", - "integrity": "sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz", + "integrity": "sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==", "dev": true, "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" }, @@ -17932,15 +19685,27 @@ } } }, - "postcss-ordered-values": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz", - "integrity": "sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==", + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.1.tgz", + "integrity": "sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" }, "dependencies": { "ansi-styles": { @@ -17991,16 +19756,15 @@ } } }, - "postcss-reduce-initial": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz", - "integrity": "sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==", + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", "dev": true, "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -18051,16 +19815,208 @@ } } }, - "postcss-reduce-transforms": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz", - "integrity": "sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==", + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", + "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=" + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prompts": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", + "integrity": "sha1-qOFcYSxcnsj4ERhH3zM3ycvUQ7I=", + "dev": true, + "requires": { + "kleur": "^2.0.1", + "sisteransi": "^0.1.1" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + }, + "dependencies": { + "react-is": { + "version": "16.8.4", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.4.tgz", + "integrity": "sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==" + } + } + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha1-YPWA02AXC7cip5fMcEQR5tqFDGc=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "q-i": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/q-i/-/q-i-2.0.1.tgz", + "integrity": "sha512-tr7CzPNxkBDBuPzqi/HDUS4uBOppb91akNTeh56TYio8TiIeXp2Yp8ea9NmDu2DmGH35ZjJDq6C3E4SepVZ4bQ==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "ansi-styles": "^3.2.0", + "is-plain-object": "^2.0.4", + "stringify-object": "^3.2.0" }, "dependencies": { "ansi-styles": { @@ -18071,69 +20027,276 @@ "requires": { "color-convert": "^1.9.0" } + } + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha1-+j7W5o6xUVlFfImze8ZHKDMZV1U=", + "dev": true + }, + "raf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha1-ooh2iBtLwsqRF9QTgWPduA94FXU=", + "dev": true, + "requires": { + "performance-now": "^2.1.0" + } + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", + "dev": true + }, + "ramda": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", + "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==" + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha1-6YatXl4x2uE93W97MBmqfIf2DKM=", + "dev": true, + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, + "randomatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha1-NvLKcI6eVn9e0uwBlJAm1QqhARY=", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=", + "dev": true }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha1-0wLFIpSFiISKjTAMkytEwkIx2oA=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true }, - "postcss": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", - "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", "dev": true, "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.5.0" + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true } } }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, + "re-reselect": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/re-reselect/-/re-reselect-2.1.0.tgz", + "integrity": "sha512-ywjM6H2b0Gx0Six15y26cGZSAgHZyuxk34mbNMrEYCqwNeYyEyI+r7YIbchUK9XgHVUDHocWffNRq5er9YW9kw==" + }, + "react": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.7.0.tgz", + "integrity": "sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A==", "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.12.0" } }, - "postcss-svgo": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.1.tgz", - "integrity": "sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==", - "dev": true, + "react-apollo": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-2.3.3.tgz", + "integrity": "sha512-y4CwwmJjp0De/An7vrvEWOJ27lxmS/SXT8z22I8aOEBC2wzdcavDPjKzeLYJKs+hv1MGS3h84PSwFtlU4Em/bA==", "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" + "fbjs": "^1.0.0", + "hoist-non-react-statics": "^3.0.0", + "invariant": "^2.2.2", + "lodash.flowright": "^3.5.0", + "lodash.isequal": "^4.5.0", + "prop-types": "^15.6.0" + }, + "dependencies": { + "fbjs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", + "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", + "requires": { + "core-js": "^2.4.1", + "fbjs-css-vars": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + } + } + }, + "react-codemirror2": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-codemirror2/-/react-codemirror2-5.1.0.tgz", + "integrity": "sha512-Cksbgbviuf2mJfMyrKmcu7ycK6zX/ukuQO8dvRZdFWqATf5joalhjFc6etnBdGCcPA2LbhIwz+OPnQxLN/j1Fw==", + "dev": true + }, + "react-dev-utils": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-6.1.1.tgz", + "integrity": "sha512-ThbJ86coVd6wV/QiTo8klDTvdAJ1WsFCGQN07+UkN+QN9CtCSsl/+YuDJToKGeG8X4j9HMGXNKbk2QhPAZr43w==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0", + "address": "1.0.3", + "browserslist": "4.1.1", + "chalk": "2.4.1", + "cross-spawn": "6.0.5", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "1.0.5", + "filesize": "3.6.1", + "find-up": "3.0.0", + "global-modules": "1.0.0", + "globby": "8.0.1", + "gzip-size": "5.0.0", + "immer": "1.7.2", + "inquirer": "6.2.0", + "is-root": "2.0.0", + "loader-utils": "1.1.0", + "opn": "5.4.0", + "pkg-up": "2.0.0", + "react-error-overlay": "^5.1.0", + "recursive-readdir": "2.2.2", + "shell-quote": "1.6.1", + "sockjs-client": "1.1.5", + "strip-ansi": "4.0.0", + "text-table": "0.2.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -18143,6 +20306,17 @@ "color-convert": "^1.9.0" } }, + "browserslist": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.1.tgz", + "integrity": "sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000884", + "electron-to-chromium": "^1.3.62", + "node-releases": "^1.0.0-alpha.11" + } + }, "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", @@ -18154,82 +20328,79 @@ "supports-color": "^5.3.0" } }, - "postcss": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", - "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.5.0" + "locate-path": "^3.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" } - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "p-try": "^2.0.0" } }, - "postcss": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", - "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.5.0" + "p-limit": "^2.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -18241,561 +20412,905 @@ } } }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", - "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "react-docgen": { + "version": "3.0.0-rc.2", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-3.0.0-rc.2.tgz", + "integrity": "sha512-tXbIvq7Hxdc92jW570rztqsz0adtWEM5FX8bShJYozT2Y6L/LeHvBMQcED6mSqJ72niiNMPV8fi3S37OHrGMEw==", "dev": true, "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" + "@babel/parser": "^7.1.3", + "@babel/runtime": "^7.0.0", + "async": "^2.1.4", + "commander": "^2.19.0", + "doctrine": "^2.0.0", + "node-dir": "^0.1.10", + "recast": "^0.16.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "recast": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.16.2.tgz", + "integrity": "sha512-O/7qXi51DPjRVdbrpNzoBQH5dnAPQNbfoOFyRiUwreTMJfIHYOEBzwuH+c0+/BTSJ3CQyKs6ILSWXhESH6Op3A==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "ast-types": "0.11.7", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=" - }, - "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", - "requires": { - "asap": "~2.0.3" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "react-docgen-annotation-resolver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/react-docgen-annotation-resolver/-/react-docgen-annotation-resolver-1.1.0.tgz", + "integrity": "sha512-wTUI7IqWkV+BNRmEh1eHkU+Ijwh0XcFUdbgktynWVqe++MgtovdlbfMehFAw5b49mv8NN2DK0NF/G8x+UdIyNw==", "dev": true }, - "prompts": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", - "integrity": "sha1-qOFcYSxcnsj4ERhH3zM3ycvUQ7I=", + "react-docgen-displayname-handler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-docgen-displayname-handler/-/react-docgen-displayname-handler-2.1.1.tgz", + "integrity": "sha512-Dmu+WnQt5TRDokaQ6uGvgcxrIh92c6uhuljsuueEphTcy/1nKh8/Ep6RUmpd77G1iN2rqg5+4ztGAT7LJjVdpg==", "dev": true, "requires": { - "kleur": "^2.0.1", - "sisteransi": "^0.1.1" - } - }, - "prop-types": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", - "integrity": "sha1-BdXKd7RFPphdYPx/+MhZCUpJcQI=", - "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "ast-types": "0.11.5" + }, + "dependencies": { + "ast-types": { + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.5.tgz", + "integrity": "sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw==", + "dev": true + } } }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", - "dev": true, + "react-dom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.7.0.tgz", + "integrity": "sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg==", "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.12.0" } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "react-error-overlay": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.1.2.tgz", + "integrity": "sha512-7kEBKwU9R8fKnZJBRa5RSIfay4KJwnYvKB6gODGicUmDSAhQJ7Tdnll5S0RLtYrzRfMVXlqYw61rzrSpP4ThLQ==", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" }, - "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha1-YPWA02AXC7cip5fMcEQR5tqFDGc=", - "dev": true + "react-flip-move": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/react-flip-move/-/react-flip-move-3.0.2.tgz", + "integrity": "sha1-L28WymywqEkPuhWpizRAp2En6CU=" }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "react-group": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/react-group/-/react-group-1.0.6.tgz", + "integrity": "sha1-jdfADDs10FzhZAIUWLsH1YDjABo=", "dev": true, "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" + "prop-types": "^15.6.0" } }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", - "dev": true, + "react-helmet": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.0.tgz", + "integrity": "sha1-qBgR3yExOm1VxfBYxK66XW89l6c=", "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "deep-equal": "^1.0.1", + "object-assign": "^4.1.1", + "prop-types": "^15.5.4", + "react-side-effect": "^1.1.0" } }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "react-hot-loader": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.3.11.tgz", + "integrity": "sha512-T0G5jURyTsFLoiW6MTr5Q35UHC/B2pmYJ7+VBjk8yMDCEABRmCGy4g6QwxoB4pWg4/xYvVTa/Pbqnsgx/+NLuA==", "dev": true, "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "fast-levenshtein": "^2.0.6", + "global": "^4.3.0", + "hoist-non-react-statics": "^2.5.0", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.0.2" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==", + "dev": true + } } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true + "react-i18next": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-9.0.1.tgz", + "integrity": "sha512-QmfUMMb8hOCQzTtQRRobhUhb6+GLlIVMfnTYnvgkFvXZ9M5WLb845XxfLSfVvaZ/uTISp3QLakL+fU7WWbVOgA==", + "requires": { + "@babel/runtime": "^7.1.2", + "hoist-non-react-statics": "3.0.1", + "html-parse-stringify2": "2.0.1" + } }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "react-icon-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-icon-base/-/react-icon-base-2.1.0.tgz", + "integrity": "sha1-oZbjP98eeqof2jrvu2i9rZ6Cp50=", "dev": true }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "react-icons": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-2.2.7.tgz", + "integrity": "sha512-0n4lcGqzJFcIQLoQytLdJCE0DKSA9dkwEZRYoGrIDJZFvIT6Hbajx5mv9geqhqFiNjUgtxg8kPyDfjlhymbGFg==", + "dev": true, "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "react-icon-base": "2.1.0" } }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true + "react-input-autosize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.1.tgz", + "integrity": "sha512-3+K4CD13iE4lQQ2WlF8PuV5htfmTRLH6MDnfndHM6LuBRszuXnuyIfE7nhSKt8AzRBZ50bu0sAhkNMeS5pxQQA==", + "requires": { + "prop-types": "^15.5.8" + } }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true + "react-is": { + "version": "16.5.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.5.2.tgz", + "integrity": "sha512-hSl7E6l25GTjNEZATqZIuWOgSnpXb3kD0DVCujmg46K5zLxsbiKaaT6VO9slkSBDPZfYs30lwfJwbOFOnoEnKQ==" }, - "querystringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", - "integrity": "sha1-+j7W5o6xUVlFfImze8ZHKDMZV1U=", + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha1-TxonOv38jzSIqMUWv9p4+HI1I2I=", "dev": true }, - "raf": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", - "integrity": "sha1-ooh2iBtLwsqRF9QTgWPduA94FXU=", - "dev": true, + "react-markdown": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-4.0.3.tgz", + "integrity": "sha512-CIc3eLVpW5XocM1MCid2rS0vs9skhvdL/slAkY/a3Cr9y72b0J/25GiD70fGmStjuxsd5ROdm4ZYfiYYxPPyGA==", "requires": { - "performance-now": "^2.1.0" + "html-to-react": "^1.3.3", + "mdast-add-list-metadata": "1.0.1", + "prop-types": "^15.6.1", + "remark-parse": "^5.0.0", + "unified": "^6.1.5", + "unist-util-visit": "^1.3.0", + "xtend": "^4.0.1" } }, - "railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", - "dev": true - }, - "ramda": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", - "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==" + "react-player": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/react-player/-/react-player-1.8.0.tgz", + "integrity": "sha512-DqIJvkL7itGLgs/8u+sgeD3DXq5kc/O6FsB6J9KEuoaiYiSKhluBRymZWIwfCuPNTdpPsA2roZ+NSCyLrHAA9g==", + "requires": { + "deepmerge": "^2.0.1", + "load-script": "^1.0.0", + "prop-types": "^15.5.6" + } }, - "randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha1-6YatXl4x2uE93W97MBmqfIf2DKM=", - "dev": true, + "react-redux": { + "version": "5.0.7", + "resolved": "http://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz", + "integrity": "sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg==", "requires": { - "discontinuous-range": "1.0.0", - "ret": "~0.1.10" + "hoist-non-react-statics": "^2.5.0", + "invariant": "^2.0.0", + "lodash": "^4.17.5", + "lodash-es": "^4.17.5", + "loose-envify": "^1.1.0", + "prop-types": "^15.6.0" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + } } }, - "randomatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", - "integrity": "sha1-NvLKcI6eVn9e0uwBlJAm1QqhARY=", - "dev": true, + "react-router": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-3.0.5.tgz", + "integrity": "sha1-w7eHN1gEWou8lWKu9P9LyMznwTY=", "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" + "create-react-class": "^15.5.1", + "history": "^3.0.0", + "hoist-non-react-statics": "^1.2.0", + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "prop-types": "^15.5.6", + "warning": "^3.0.0" }, "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "hoist-non-react-statics": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", + "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=" } } }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha1-0wLFIpSFiISKjTAMkytEwkIx2oA=", - "dev": true, + "react-select": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.2.1.tgz", + "integrity": "sha512-vaCgT2bEl+uTyE/uKOEgzE5Dc/wLtzhnBvoHCeuLoJWc4WuadN6WQDhoL42DW+TziniZK2Gaqe/wUXydI3NSaQ==", "requires": { - "safe-buffer": "^5.1.0" + "classnames": "^2.2.4", + "prop-types": "^15.5.8", + "react-input-autosize": "^2.1.2" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", - "dev": true, + "react-side-effect": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.5.tgz", + "integrity": "sha1-8mBZ5Q7ZxibZHWYbnzyLs4zQ/y0=", "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "exenv": "^1.2.1", + "shallowequal": "^1.0.1" } }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "react-styleguidist": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/react-styleguidist/-/react-styleguidist-8.0.6.tgz", + "integrity": "sha512-hhbU0dP14boD7j09p9d1pjhB/KWptX8WmsYHFwEhuLVUj10Frkd8FeClS+4JmCiPWe6DoFKxK/iJSzel7pOWUw==", "dev": true, "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" + "@vxna/mini-html-webpack-template": "^0.1.7", + "acorn": "^5.7.1", + "ast-types": "^0.11.6", + "buble": "0.19.4", + "classnames": "^2.2.6", + "clean-webpack-plugin": "^0.1.19", + "clipboard-copy": "^2.0.0", + "codemirror": "^5.39.0", + "common-dir": "^2.0.2", + "copy-webpack-plugin": "^4.5.4", + "css-loader": "^1.0.0", + "doctrine": "^2.1.0", + "es6-object-assign": "~1.1.0", + "es6-promise": "^4.2.4", + "escodegen": "^1.10.0", + "findup": "^0.1.5", + "function.name-polyfill": "^1.0.6", + "github-slugger": "^1.2.0", + "glob": "^7.1.2", + "glogg": "^1.0.1", + "highlight.js": "^9.12.0", + "is-directory": "^0.3.1", + "javascript-stringify": "^1.6.0", + "jss": "^9.8.7", + "jss-camel-case": "^6.1.0", + "jss-compose": "^5.0.0", + "jss-default-unit": "^8.0.2", + "jss-global": "^3.0.0", + "jss-isolate": "^5.1.0", + "jss-nested": "^6.0.1", + "kleur": "^2.0.1", + "leven": "^2.1.0", + "listify": "^1.0.0", + "loader-utils": "^1.1.0", + "lodash": "^4.17.10", + "lowercase-keys": "^1.0.1", + "markdown-to-jsx": "^6.8.3", + "mini-html-webpack-plugin": "^0.2.3", + "minimist": "^1.2.0", + "ora": "^2.1.0", + "prop-types": "^15.6.2", + "q-i": "^2.0.1", + "react-codemirror2": "^5.1.0", + "react-dev-utils": "^6.0.5", + "react-docgen": "3.0.0-rc.2", + "react-docgen-annotation-resolver": "^1.0.0", + "react-docgen-displayname-handler": "^2.1.0", + "react-group": "^1.0.6", + "react-icons": "^2.2.7", + "react-lifecycles-compat": "^3.0.4", + "recast": "^0.13.0", + "remark": "^9.0.0", + "style-loader": "^0.23.1", + "terser-webpack-plugin": "^1.1.0", + "to-ast": "^1.0.0", + "type-detect": "^4.0.8", + "unist-util-visit": "^1.4.0", + "walkes": "^0.2.1", + "webpack-dev-server": "^3.1.10", + "webpack-merge": "^4.1.4" }, "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "ajv": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", + "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "clean-webpack-plugin": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-0.1.19.tgz", + "integrity": "sha512-M1Li5yLHECcN2MahoreuODul5LkjohJGFxLPTjl3j1ttKrF5rgjZET1SJduuqxLAuT1gAPOdkhg03qcaaU1KeA==", + "dev": true, + "requires": { + "rimraf": "^2.6.1" + } + }, + "copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + } + }, + "css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", + "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "p-limit": "^2.0.0" + }, + "dependencies": { + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } } }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=", + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", "dev": true }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true - } - } - }, - "re-reselect": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/re-reselect/-/re-reselect-2.1.0.tgz", - "integrity": "sha512-ywjM6H2b0Gx0Six15y26cGZSAgHZyuxk34mbNMrEYCqwNeYyEyI+r7YIbchUK9XgHVUDHocWffNRq5er9YW9kw==" - }, - "react": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.7.0.tgz", - "integrity": "sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.12.0" - } - }, - "react-apollo": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-2.3.3.tgz", - "integrity": "sha512-y4CwwmJjp0De/An7vrvEWOJ27lxmS/SXT8z22I8aOEBC2wzdcavDPjKzeLYJKs+hv1MGS3h84PSwFtlU4Em/bA==", - "requires": { - "fbjs": "^1.0.0", - "hoist-non-react-statics": "^3.0.0", - "invariant": "^2.2.2", - "lodash.flowright": "^3.5.0", - "lodash.isequal": "^4.5.0", - "prop-types": "^15.6.0" - }, - "dependencies": { - "fbjs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", - "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, "requires": { - "core-js": "^2.4.1", - "fbjs-css-vars": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" + "find-up": "^3.0.0" } - } - } - }, - "react-dom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.7.0.tgz", - "integrity": "sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.12.0" - } - }, - "react-fast-compare": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", - "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" - }, - "react-flip-move": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/react-flip-move/-/react-flip-move-3.0.2.tgz", - "integrity": "sha1-L28WymywqEkPuhWpizRAp2En6CU=" - }, - "react-helmet": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.0.tgz", - "integrity": "sha1-qBgR3yExOm1VxfBYxK66XW89l6c=", - "requires": { - "deep-equal": "^1.0.1", - "object-assign": "^4.1.1", - "prop-types": "^15.5.4", - "react-side-effect": "^1.1.0" - } - }, - "react-hot-loader": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.3.11.tgz", - "integrity": "sha512-T0G5jURyTsFLoiW6MTr5Q35UHC/B2pmYJ7+VBjk8yMDCEABRmCGy4g6QwxoB4pWg4/xYvVTa/Pbqnsgx/+NLuA==", - "dev": true, - "requires": { - "fast-levenshtein": "^2.0.6", - "global": "^4.3.0", - "hoist-non-react-statics": "^2.5.0", - "prop-types": "^15.6.1", - "react-lifecycles-compat": "^3.0.4", - "shallowequal": "^1.0.2" - }, - "dependencies": { - "hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==", - "dev": true - } - } - }, - "react-i18next": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-9.0.1.tgz", - "integrity": "sha512-QmfUMMb8hOCQzTtQRRobhUhb6+GLlIVMfnTYnvgkFvXZ9M5WLb845XxfLSfVvaZ/uTISp3QLakL+fU7WWbVOgA==", - "requires": { - "@babel/runtime": "^7.1.2", - "hoist-non-react-statics": "3.0.1", - "html-parse-stringify2": "2.0.1" - } - }, - "react-input-autosize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.1.tgz", - "integrity": "sha512-3+K4CD13iE4lQQ2WlF8PuV5htfmTRLH6MDnfndHM6LuBRszuXnuyIfE7nhSKt8AzRBZ50bu0sAhkNMeS5pxQQA==", - "requires": { - "prop-types": "^15.5.8" - } - }, - "react-is": { - "version": "16.5.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.5.2.tgz", - "integrity": "sha512-hSl7E6l25GTjNEZATqZIuWOgSnpXb3kD0DVCujmg46K5zLxsbiKaaT6VO9slkSBDPZfYs30lwfJwbOFOnoEnKQ==" - }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha1-TxonOv38jzSIqMUWv9p4+HI1I2I=", - "dev": true - }, - "react-markdown": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-4.0.3.tgz", - "integrity": "sha512-CIc3eLVpW5XocM1MCid2rS0vs9skhvdL/slAkY/a3Cr9y72b0J/25GiD70fGmStjuxsd5ROdm4ZYfiYYxPPyGA==", - "requires": { - "html-to-react": "^1.3.3", - "mdast-add-list-metadata": "1.0.1", - "prop-types": "^15.6.1", - "remark-parse": "^5.0.0", - "unified": "^6.1.5", - "unist-util-visit": "^1.3.0", - "xtend": "^4.0.1" - } - }, - "react-player": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/react-player/-/react-player-1.8.0.tgz", - "integrity": "sha512-DqIJvkL7itGLgs/8u+sgeD3DXq5kc/O6FsB6J9KEuoaiYiSKhluBRymZWIwfCuPNTdpPsA2roZ+NSCyLrHAA9g==", - "requires": { - "deepmerge": "^2.0.1", - "load-script": "^1.0.0", - "prop-types": "^15.5.6" - } - }, - "react-redux": { - "version": "5.0.7", - "resolved": "http://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz", - "integrity": "sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg==", - "requires": { - "hoist-non-react-statics": "^2.5.0", - "invariant": "^2.0.0", - "lodash": "^4.17.5", - "lodash-es": "^4.17.5", - "loose-envify": "^1.1.0", - "prop-types": "^15.6.0" - }, - "dependencies": { - "hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" - } - } - }, - "react-router": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-3.0.5.tgz", - "integrity": "sha1-w7eHN1gEWou8lWKu9P9LyMznwTY=", - "requires": { - "create-react-class": "^15.5.1", - "history": "^3.0.0", - "hoist-non-react-statics": "^1.2.0", - "invariant": "^2.2.1", - "loose-envify": "^1.2.0", - "prop-types": "^15.5.6", - "warning": "^3.0.0" - }, - "dependencies": { - "hoist-non-react-statics": { + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "postcss-modules-local-by-default": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", - "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=" + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "readable-stream": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "spdy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", + "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "webpack-dev-server": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", + "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.18.0", + "import-local": "^2.0.0", + "internal-ip": "^3.0.1", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "schema-utils": "^1.0.0", + "selfsigned": "^1.9.1", + "semver": "^5.6.0", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "3.4.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.2" + } + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } } } }, - "react-select": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.2.1.tgz", - "integrity": "sha512-vaCgT2bEl+uTyE/uKOEgzE5Dc/wLtzhnBvoHCeuLoJWc4WuadN6WQDhoL42DW+TziniZK2Gaqe/wUXydI3NSaQ==", - "requires": { - "classnames": "^2.2.4", - "prop-types": "^15.5.8", - "react-input-autosize": "^2.1.2" - } - }, - "react-side-effect": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.5.tgz", - "integrity": "sha1-8mBZ5Q7ZxibZHWYbnzyLs4zQ/y0=", - "requires": { - "exenv": "^1.2.1", - "shallowequal": "^1.0.1" - } - }, "react-test-renderer": { "version": "16.5.2", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.5.2.tgz", @@ -18814,9 +21329,9 @@ "integrity": "sha512-3am1uA5ZzDwUkReEuUkK+fJ0DAYcGiLraWEPqXfL1kKD/NHbbB7fB/t+5FflMGd+FA6n9hih1es4pui1yzKi0w==" }, "reactjs-popup": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-1.3.1.tgz", - "integrity": "sha512-0rI/JyYnSBFh0NlsRhv7hiPpdLo3SauI4E9Nd65/xpcoFeFv8NComRkEeOx0aj377kVdrwzwvMgoHz5P286gJQ==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-1.3.2.tgz", + "integrity": "sha512-BwfaOkKpLHNHxSmiMcX/yc61twJvjGbJ/SBE+fYovJudFlaZDYXGPSp+3dTCE0UoNsEqF8oc/pNkYlGgmrnsrw==" }, "read-pkg": { "version": "1.1.0", @@ -19198,6 +21713,41 @@ "util.promisify": "^1.0.0" } }, + "recast": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.13.2.tgz", + "integrity": "sha512-Xqo0mKljGUWGUhnkdbODk7oJGFrMcpgKQ9cCyZ4y+G9VfoTKdum8nHbf/SxIdKx5aBSZ29VpVy20bTyt7jyC8w==", + "dev": true, + "requires": { + "ast-types": "0.10.2", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + }, + "dependencies": { + "ast-types": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.2.tgz", + "integrity": "sha512-ufWX953VU1eIuWqxS0nRDMYlGyFH+yxln5CsmIHlpzEt3fdYqUnRtsFt0XAsQot8OaVCwFqxT1RiwvtzYjeYeg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "requires": { + "minimatch": "3.0.4" + } + }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -19336,6 +21886,43 @@ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, + "regexpu-core": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", + "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^7.0.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.0.2" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", @@ -19365,6 +21952,17 @@ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", "dev": true }, + "remark": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-9.0.0.tgz", + "integrity": "sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A==", + "dev": true, + "requires": { + "remark-parse": "^5.0.0", + "remark-stringify": "^5.0.0", + "unified": "^6.0.0" + } + }, "remark-parse": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz", @@ -19387,6 +21985,28 @@ "xtend": "^4.0.1" } }, + "remark-stringify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-5.0.0.tgz", + "integrity": "sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -19594,6 +22214,16 @@ } } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", @@ -20704,6 +23334,18 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, "shelljs": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", @@ -20983,6 +23625,12 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, "spdx-correct": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", @@ -21273,6 +23921,18 @@ "safe-buffer": "~5.1.0" } }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "dev": true, + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -21940,6 +24600,30 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, + "to-ast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-ast/-/to-ast-1.0.0.tgz", + "integrity": "sha1-DEoxyMmO396arwGSx5S0yLEe4oc=", + "dev": true, + "requires": { + "ast-types": "^0.7.2", + "esprima": "^2.1.0" + }, + "dependencies": { + "ast-types": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz", + "integrity": "sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk=", + "dev": true + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + } + } + }, "to-camel-case": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz", @@ -22120,6 +24804,12 @@ "prelude-ls": "~1.1.2" } }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-is": { "version": "1.6.16", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", @@ -22823,6 +25513,12 @@ "unist-util-stringify-position": "^1.1.1" } }, + "vlq": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.0.tgz", + "integrity": "sha512-o3WmXySo+oI5thgqr7Qy8uBkT/v9Zr+sRyrh1lr8aWPUkgDWdWt4Nae2WKBrLsocgE8BuWWD0jLc+VW8LeU+2g==", + "dev": true + }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -22860,6 +25556,12 @@ "makeerror": "1.0.x" } }, + "walkes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/walkes/-/walkes-0.2.1.tgz", + "integrity": "sha1-fsoUT+Z+0yeC//5ujpX7RIGGR5Y=", + "dev": true + }, "warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", @@ -22906,6 +25608,15 @@ "minimalistic-assert": "^1.0.0" } }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -23827,6 +26538,15 @@ "uuid": "^3.3.2" } }, + "webpack-merge": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, "webpack-sources": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", diff --git a/package.json b/package.json index 6255fc89d..0f58861ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "captain-fact-frontend", - "version": "0.9.4", + "version": "1.0.0", "private": true, "scripts": { "build": "npx webpack-cli --config webpack.production.config.js", @@ -20,7 +20,9 @@ "lint_all": "npx eslint app/**/*.jsx", "lint_fix": "npx eslint app --fix", "precommit": "npx lint-staged", - "prettify": "npx prettier --write app/**/*.{js,jsx} && npx prettier --write cypress/**/*.js" + "prettify": "npx prettier --write app/**/*.{js,jsx} && npx prettier --write cypress/**/*.js", + "styleguide:dev": "npx styleguidist server", + "styleguide:build": "npx styleguidist build" }, "jest": { "setupFiles": [ @@ -36,7 +38,8 @@ }, "testPathIgnorePatterns": [ "/node_modules/", - "/__fixtures__/" + "/__fixtures__/", + ".history" ] }, "lint-staged": { @@ -61,6 +64,7 @@ "apollo-boost": "~0.1.12", "bulma": "~0.7.2", "classnames": "~2.2.6", + "clean-tag": "^2.0.2", "core-js": "~2.6.1", "date-fns": "~1.28.5", "debounce": "~1.0.2", @@ -76,9 +80,9 @@ "is-promise": "~2.1.0", "isomorphic-fetch": "~2.2.1", "lodash": "^4.17.11", - "phoenix": "~1.3.4", + "phoenix": "~1.4.1", "polished": "^2.3.1", - "prop-types": "~15.6.2", + "prop-types": "~15.7.2", "re-reselect": "~2.1.0", "react": "~16.7.0", "react-apollo": "~2.3.3", @@ -92,7 +96,7 @@ "react-router": "~3.0.1", "react-select": "~1.2.1", "react-toggled": "^1.2.7", - "reactjs-popup": "~1.3.1", + "reactjs-popup": "~1.3.2", "redux": "~4.0.1", "redux-actions": "~2.6.4", "redux-form": "6.8.0", @@ -123,11 +127,12 @@ "babel-jest": "^23.4.2", "babel-loader": "^8.0.0", "babel-plugin-styled-components": "^1.9.2", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "babel-plugin-webpack-alias": "^2.1.2", "browserslist": "^4.2.1", "clean-webpack-plugin": "^1.0.0", "compression-webpack-plugin": "^2.0.0", - "copy-webpack-plugin": "^4.5.3", + "copy-webpack-plugin": "^5.0.0", "coveralls": "^3.0.2", "css-loader": "^2.0.0", "enzyme": "^3.4.1", @@ -155,6 +160,7 @@ "npx": "^10.2.0", "optimize-css-assets-webpack-plugin": "^5.0.0", "react-hot-loader": "^4.3.4", + "react-styleguidist": "^8.0.6", "sass-lint": "^1.12.1", "sass-loader": "^7.1.0", "style-loader": "^0.23.1", diff --git a/styleguide.config.js b/styleguide.config.js new file mode 100644 index 000000000..bca004f45 --- /dev/null +++ b/styleguide.config.js @@ -0,0 +1,21 @@ +const path = require('path') +const fileExistsCaseInsensitive = require('react-styleguidist/scripts/utils/findFileCaseInsensitive') + +module.exports = { + title: 'CaptainFact - Style Guide', + components: 'app/components/**/*.jsx', + skipComponentsWithoutExample: true, + usageMode: 'expand', + getExampleFilename(componentPath) { + const examplePath = path.join( + __dirname, + 'styleguide/examples', + `${path.parse(componentPath).name}.md` + ) + return fileExistsCaseInsensitive(examplePath) || false + }, + styleguideComponents: { + Wrapper: path.join(__dirname, 'styleguide/Wrapper') + }, + require: [path.join(__dirname, 'app/styles/application.sass')] +} diff --git a/styleguide/Wrapper.jsx b/styleguide/Wrapper.jsx new file mode 100644 index 000000000..72e7555fb --- /dev/null +++ b/styleguide/Wrapper.jsx @@ -0,0 +1,25 @@ +import React, { Component } from 'react' +import { Provider as ReduxProvider } from 'react-redux' +import { ThemeProvider } from 'styled-components' +import { Router, Route, browserHistory } from 'react-router' +import { I18nextProvider } from 'react-i18next' + +import theme from '../app/styles/theme' +import i18n from '../app/i18n/i18n' +import store from '../app/state' + +export default class ThemeWrapper extends Component { + render() { + return ( + + + + + this.props.children} /> + + + + + ) + } +} diff --git a/styleguide/examples/Logo.md b/styleguide/examples/Logo.md new file mode 100644 index 000000000..5b8478bf4 --- /dev/null +++ b/styleguide/examples/Logo.md @@ -0,0 +1,11 @@ +### Default logo + +```js + +``` + +### With custom height + +```js + +``` diff --git a/styleguide/examples/NotificationsPopupContent.md b/styleguide/examples/NotificationsPopupContent.md new file mode 100644 index 000000000..091ffcd3b --- /dev/null +++ b/styleguide/examples/NotificationsPopupContent.md @@ -0,0 +1,39 @@ +### Empty state + +```js +
      + +
      +``` + +### With different notifications types + +```js +
      + +
      +``` diff --git a/webpack.loaders.js b/webpack.loaders.js index 9986b71c9..cb63f4616 100644 --- a/webpack.loaders.js +++ b/webpack.loaders.js @@ -10,7 +10,7 @@ module.exports = isProd => [ // 'import' instead of 'require' and es6 syntax { test: /\.jsx?$/, - include: path.resolve(__dirname, 'app'), + include: [path.resolve(__dirname, 'app'), path.resolve(__dirname, 'styleguide')], loader: 'babel-loader', options: { // This is a feature of `babel-loader` for Webpack (not Babel itself).