diff --git a/jest.config.js b/jest.config.js index 021ea29e..03474dd3 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,22 +1,22 @@ module.exports = { verbose: true, collectCoverage: true, - setupTestFrameworkScriptFile: "/src/tests/setupTests.js", - coverageReporters: ["text", "lcov"], + setupTestFrameworkScriptFile: '/src/tests/setupTests.js', + coverageReporters: ['text', 'lcov'], collectCoverageFrom: [ - "**/*.{js,jsx}", - "!**/*.{config}.{js}", - "!**/node_modules/**", - "!**/dist/**", - "!**/vendor/**", - "!**/coverage/**", - "!**/src/assets/**", - "!**/semantic/**", - "!**/src/index.js" + '**/*.{js,jsx}', + '!**/*.{config}.{js}', + '!**/node_modules/**', + '!**/dist/**', + '!**/vendor/**', + '!**/coverage/**', + '!**/src/assets/**', + '!**/semantic/**', + '!**/src/index.js' ], - "transform": { - "^.+\\.js$": "babel-jest", - ".+\\.(css|styl|less|sass|scss)$": "jest-transform-css", - "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/jest.fileTransformer.config.js" + 'transform': { + '^.+\\.js$': 'babel-jest', + '.+\\.(css|styl|less|sass|scss)$': 'jest-transform-css', + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/jest.fileTransformer.config.js' } -}; +} diff --git a/jest.fileTransformer.config.js b/jest.fileTransformer.config.js index 290f7801..0389e004 100644 --- a/jest.fileTransformer.config.js +++ b/jest.fileTransformer.config.js @@ -1,7 +1,7 @@ -const path = require('path'); +const path = require('path') module.exports = { - process(src, filename, config, options) { - return 'module.exports = ' + JSON.stringify(path.basename(filename)) + ';'; - }, -}; \ No newline at end of file + process (src, filename, config, options) { + return 'module.exports = ' + JSON.stringify(path.basename(filename)) + ';' + } +} diff --git a/package.json b/package.json index 69aa1532..10f7fcb4 100644 --- a/package.json +++ b/package.json @@ -9,11 +9,12 @@ "scripts": { "start": "webpack-dev-server --mode development --open", "build": "webpack --mode production", - "test": "jest", + "test": "standard && jest", "coveralls": "cat ./coverage/lcov.info | coveralls" }, "dependencies": { "axios": "^0.18.0", + "global": "^4.3.2", "react": "^16.7.0", "react-dom": "^16.7.0", "react-redux": "^6.0.0", @@ -25,6 +26,7 @@ }, "devDependencies": { "babel-core": "^6.26.3", + "babel-eslint": "^10.0.1", "babel-jest": "^23.6.0", "babel-loader": "7", "babel-plugin-transform-class-properties": "^6.24.1", @@ -45,10 +47,20 @@ "redux-mock-store": "^1.5.3", "regenerator-runtime": "^0.13.1", "sass-loader": "^7.1.0", + "standard": "^12.0.1", "style-loader": "^0.23.1", "url-loader": "^1.1.2", "webpack": "^4.27.1", "webpack-cli": "^3.1.2", "webpack-dev-server": "^3.1.10" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "src/assets/*" + ], + "env": [ + "jest" + ] } } diff --git a/src/actions/getUsersAction.js b/src/actions/getUsersAction.js index b62c7ee7..4bf841a1 100644 --- a/src/actions/getUsersAction.js +++ b/src/actions/getUsersAction.js @@ -1,18 +1,19 @@ -import axios from "axios"; -import { GET_USERS } from "../types"; +import axios from 'axios' +import { GET_USERS } from '../types' -export let getUsers = users => ({ type: GET_USERS, payload: users }); +export let getUsers = users => ({ type: GET_USERS, payload: users }) export let fetchUsers = () => dispatch => { return axios - .get("/api/v1/users") + .get('/api/v1/users') .then(response => { - let { users, gravatar_url, karma_total } = response.data; + /* eslint-disable-next-line */ + let { users, gravatar_url, karma_total } = response.data users = users.map(user => { - user.gravatar_url = gravatar_url[user.id]; - user.karma_total = karma_total[user.id]; - return user; - }); - dispatch(getUsers(users)); - }); -}; + user.gravatar_url = gravatar_url[user.id] + user.karma_total = karma_total[user.id] + return user + }) + dispatch(getUsers(users)) + }) +} diff --git a/src/components/Paginate.js b/src/components/Paginate.js index 4563fda7..3e61d834 100644 --- a/src/components/Paginate.js +++ b/src/components/Paginate.js @@ -1,22 +1,22 @@ -import React from "react"; -import { RingLoader } from "react-spinners"; +import React from 'react' +import { RingLoader } from 'react-spinners' const Paginate = ({ items, Component }) => { - let itemsArray; + let itemsArray if (items.length) { itemsArray = items.map(item => ( - )); + )) } return ( itemsArray || ( ) - ); -}; + ) +} -export default Paginate; +export default Paginate diff --git a/src/components/PaginationLinks.js b/src/components/PaginationLinks.js index 4dc912d7..1578534f 100644 --- a/src/components/PaginationLinks.js +++ b/src/components/PaginationLinks.js @@ -1,5 +1,5 @@ -import React from "react"; -import "../assets/PaginationLinks.css"; +import React from 'react' +import '../assets/PaginationLinks.css' const PaginationLinks = ({ pageCount, @@ -8,28 +8,28 @@ const PaginationLinks = ({ firstPage, lastPage }) => { - const pageItems = []; + const pageItems = [] for (let i = 1; i <= pageCount; i++) { pageItems.push( {i} - ); + ) } return ( -
-
- previous +
+
+ previous {pageItems} - next + next
- ); -}; + ) +} -export default PaginationLinks; +export default PaginationLinks diff --git a/src/components/User.js b/src/components/User.js index 27e60b05..f8c23159 100644 --- a/src/components/User.js +++ b/src/components/User.js @@ -1,44 +1,44 @@ -import React from "react"; -import { Card, Image, Icon } from "semantic-ui-react"; -import { Link } from "react-router-dom"; -import "../assets/User.css"; +import React from 'react' +import { Card, Image, Icon } from 'semantic-ui-react' +import { Link } from 'react-router-dom' +import '../assets/User.css' const User = ({ item: user }) => { return ( - + - + {user.first_name ? fullName(user).length >= 12 - ? fullName(user).substring(0, 10) + "..." + ? fullName(user).substring(0, 10) + '...' : fullName(user) : user.slug.substring(0, 15)} -

+ {user.title_list.length - ? user.title_list.map(title => title + " ") + ? user.title_list.map(title => title + ' ') : null} -

-

- {} + +

+ {} {user.karma_total}

- ); -}; + ) +} const fullName = user => { - return user.first_name + " " + user.last_name; -}; -export default User; + return user.first_name + ' ' + user.last_name +} +export default User diff --git a/src/components/homepage/Homepage.js b/src/components/homepage/Homepage.js index 4db81aa0..d69d3ff2 100644 --- a/src/components/homepage/Homepage.js +++ b/src/components/homepage/Homepage.js @@ -1,23 +1,22 @@ -import React, { Component, Fragment } from "react"; -import { Grid } from "semantic-ui-react"; +import React, { Component, Fragment } from 'react' +import { Grid } from 'semantic-ui-react' import HomepageModal from './HomepageModal' -import "./Homepage.css"; -import modals from "./modals"; +import './Homepage.css' +import modals from './modals' export class Homepage extends Component { - - renderModals() { + renderModals () { return modals.map((modal, id) => { return ( - ); - }); + ) + }) }; - render() { + render () { return ( - + {this.renderModals()} @@ -25,8 +24,8 @@ export class Homepage extends Component { - ); + ) } } -export default Homepage; \ No newline at end of file +export default Homepage diff --git a/src/components/homepage/HomepageModal.js b/src/components/homepage/HomepageModal.js index 20ca8522..8a3890e5 100644 --- a/src/components/homepage/HomepageModal.js +++ b/src/components/homepage/HomepageModal.js @@ -1,49 +1,49 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types" -import { Modal, Grid, Button, Image, Icon } from "semantic-ui-react"; +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import { Modal, Grid, Button, Image, Icon } from 'semantic-ui-react' export class HomepageModal extends Component { - render() { - const { modal, id } = this.props - return ( - - {modal.text} - - - - - - {modal.buttonText} - - } closeIcon> - - {modal.imageAltText} - - {modal.modalText} - - - - - - ) - } + render () { + const { modal, id } = this.props + return ( + + {modal.text} + + + + + + {modal.buttonText} + + } closeIcon> + + {modal.imageAltText} + + {modal.modalText} + + + + + + ) + } } export default HomepageModal HomepageModal.propTypes = { - modal: PropTypes.shape({ - buttonText: PropTypes.string.isRequired, - xsOffset: PropTypes.number.isRequired, - height: PropTypes.string.isRequired, - reactId: PropTypes.string.isRequired, - image: PropTypes.string.isRequired, - imageAltText: PropTypes.string.isRequired, - imageWidth: PropTypes.string.isRequired, - modalText: PropTypes.string.isRequired, - }) -} \ No newline at end of file + modal: PropTypes.shape({ + buttonText: PropTypes.string.isRequired, + xsOffset: PropTypes.number.isRequired, + height: PropTypes.string.isRequired, + reactId: PropTypes.string.isRequired, + image: PropTypes.string.isRequired, + imageAltText: PropTypes.string.isRequired, + imageWidth: PropTypes.string.isRequired, + modalText: PropTypes.string.isRequired + }) +} diff --git a/src/components/homepage/modals.js b/src/components/homepage/modals.js index c7227674..643b8003 100644 --- a/src/components/homepage/modals.js +++ b/src/components/homepage/modals.js @@ -1,61 +1,61 @@ -import codingWithCat from "../../images/coding-with-cat.svg"; -import realprojects from "../../images/real-projects.svg"; -import runners from "../../images/runners.svg"; -import jobs from "../../images/jobs.svg"; -import scrum from "../../images/scrum.svg"; +import codingWithCat from '../../images/coding-with-cat.svg' +import realprojects from '../../images/real-projects.svg' +import runners from '../../images/runners.svg' +import jobs from '../../images/jobs.svg' +import scrum from '../../images/scrum.svg' const modals = [ { - buttonText: "You are here!", + buttonText: 'You are here!', xsOffset: 1, - height: "150px", - reactId: "here", + height: '150px', + reactId: 'here', image: codingWithCat, - imageAltText: "working on a computer at home with cat", - imageWidth: "250px", - modalText: "Tired of toy projects, tutorials and online courses?" + imageAltText: 'working on a computer at home with cat', + imageWidth: '250px', + modalText: 'Tired of toy projects, tutorials and online courses?' }, { - buttonText: "Scrums", + buttonText: 'Scrums', xsOffset: 10, - height: "250px", - reactId: "scrums", + height: '250px', + reactId: 'scrums', image: scrum, imageAltText: - "team sitting round a table with kanban board in background", - imageWidth: "350px", - modalText: "Meet others and plan your work in online hangouts." + 'team sitting round a table with kanban board in background', + imageWidth: '350px', + modalText: 'Meet others and plan your work in online hangouts.' }, { - buttonText: "Real Projects", + buttonText: 'Real Projects', xsOffset: 4, - height: "250px", - reactId: "projects", + height: '250px', + reactId: 'projects', image: realprojects, - imageAltText: "shaking hands with business client across desk", - imageWidth: "320px", - modalText: "Satisfy real charity clients around the world." + imageAltText: 'shaking hands with business client across desk', + imageWidth: '320px', + modalText: 'Satisfy real charity clients around the world.' }, { - buttonText: "Sprints", + buttonText: 'Sprints', xsOffset: 6, - height: "600px", - reactId: "sprints", + height: '600px', + reactId: 'sprints', image: runners, - imageAltText: "two people running", - imageWidth: "320px", - modalText: "Commit to a week long sprint to accelerate your learning." + imageAltText: 'two people running', + imageWidth: '320px', + modalText: 'Commit to a week long sprint to accelerate your learning.' }, { - buttonText: "Jobs", + buttonText: 'Jobs', xsOffset: 8, - height: "920px", - reactId: "jobs", + height: '920px', + reactId: 'jobs', image: jobs, - imageAltText: "person holding briefcase looking towards city", - imageWidth: "300px", + imageAltText: 'person holding briefcase looking towards city', + imageWidth: '300px', modalText: - "Get paid for in-house projects or go on to great things in the wider world." + 'Get paid for in-house projects or go on to great things in the wider world.' } -]; -export default modals; +] +export default modals diff --git a/src/containers/UsersList.js b/src/containers/UsersList.js index 4bd27bde..ad80b639 100644 --- a/src/containers/UsersList.js +++ b/src/containers/UsersList.js @@ -1,47 +1,50 @@ -import React, { Component, Fragment } from "react"; -import { Header, Card, Grid } from "semantic-ui-react"; -import Paginate from "../components/Paginate"; -import PaginationLinks from "../components/PaginationLinks"; -import { connect } from "react-redux"; -import { fetchUsers } from "../actions/getUsersAction"; -import User from "../components/User"; -import "../assets/UsersList.css"; +import React, { Component, Fragment } from 'react' +import { Header, Card, Grid } from 'semantic-ui-react' +import Paginate from '../components/Paginate' +import PaginationLinks from '../components/PaginationLinks' +import { connect } from 'react-redux' +import { fetchUsers } from '../actions/getUsersAction' +import User from '../components/User' +import '../assets/UsersList.css' export class UsersList extends Component { - state = { - firstPage: true, - lastPage: true, - pageCount: null, - usersList: [], - users: {}, - selectedPage: 1 - }; + constructor (props) { + super(props) + this.state = { + firstPage: true, + lastPage: true, + pageCount: null, + usersList: [], + users: {}, + selectedPage: 1 + } + } - componentDidMount() { + componentDidMount () { if (!this.props.users.length) { - this.props.fetchUsers(); + this.props.fetchUsers() } else { - this.normalizeUsers(this.props.users); + this.normalizeUsers(this.props.users) } } - componentWillReceiveProps(nextProps) { + componentWillReceiveProps (nextProps) { if (this.props.users.length !== nextProps.users.length) { - this.normalizeUsers(nextProps.users); + this.normalizeUsers(nextProps.users) } } - normalizeUsers(users) { - let pageCount = Math.ceil(users.length / 12); - let normalizedUsers = {}; - let lastIndex = 0; + normalizeUsers (users) { + let pageCount = Math.ceil(users.length / 12) + let normalizedUsers = {} + let lastIndex = 0 for (let i = 1; i <= pageCount; i++) { if (i === 1) { - normalizedUsers[i] = users.slice(i - 1, i + 11); - lastIndex = i + 11; + normalizedUsers[i] = users.slice(i - 1, i + 11) + lastIndex = i + 11 } else { - normalizedUsers[i] = users.slice(lastIndex, lastIndex + 12); - lastIndex += 12; + normalizedUsers[i] = users.slice(lastIndex, lastIndex + 12) + lastIndex += 12 } } this.setState({ @@ -49,33 +52,34 @@ export class UsersList extends Component { pageCount, usersList: normalizedUsers[1], lastPage: false - }); + }) } + /* eslint-disable-next-line */ handlePageSelect = selectedPage => e => { - e.preventDefault(); + e.preventDefault() this.setState({ usersList: this.state.users[selectedPage], selectedPage, - firstPage: selectedPage - 1 < 1 ? true : false, - lastPage: selectedPage + 1 > this.state.pageCount ? true : false - }); + firstPage: selectedPage - 1 < 1, + lastPage: selectedPage + 1 > this.state.pageCount + }) }; - render() { + render () { let { firstPage, lastPage, pageCount, usersList, selectedPage - } = this.state; + } = this.state return ( -
Volunteers Directory
+
Volunteers Directory
- ); + ) } } -const mapStateToProps = store => ({ users: store.users }); +const mapStateToProps = store => ({ users: store.users }) export default connect( mapStateToProps, { fetchUsers } -)(UsersList); +)(UsersList) diff --git a/src/fixtures/homepageModals.js b/src/fixtures/homepageModals.js index ffdfcb23..378959a6 100644 --- a/src/fixtures/homepageModals.js +++ b/src/fixtures/homepageModals.js @@ -1,10 +1,10 @@ export default [{ - buttonText: "You are here!", - xsOffset: 1, - height: "150px", - reactId: "here", - image: 'codingWithCat', - imageAltText: "working on a computer at home with cat", - imageWidth: "250px", - modalText: "Tired of toy projects, tutorials and online courses?" - }] \ No newline at end of file + buttonText: 'You are here!', + xsOffset: 1, + height: '150px', + reactId: 'here', + image: 'codingWithCat', + imageAltText: 'working on a computer at home with cat', + imageWidth: '250px', + modalText: 'Tired of toy projects, tutorials and online courses?' +}] diff --git a/src/fixtures/users.js b/src/fixtures/users.js index 57e57d1b..c78eb431 100644 --- a/src/fixtures/users.js +++ b/src/fixtures/users.js @@ -1,57 +1,57 @@ export default [ { id: 1, - email: "mattwr18@gmail.com", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'mattwr18@gmail.com', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, can_see_dashboard: false, skill_list: [], - title_list: ["Mentor"] + title_list: ['Mentor'] }, { id: 2, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', first_name: null, last_name: null, display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -61,27 +61,27 @@ export default [ }, { id: 3, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Some really long', + last_name: 'name', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -91,27 +91,27 @@ export default [ }, { id: 4, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -121,27 +121,27 @@ export default [ }, { id: 5, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -151,27 +151,27 @@ export default [ }, { id: 6, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -181,27 +181,27 @@ export default [ }, { id: 7, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -211,27 +211,27 @@ export default [ }, { id: 8, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -241,27 +241,27 @@ export default [ }, { id: 9, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -271,27 +271,27 @@ export default [ }, { id: 10, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -301,27 +301,27 @@ export default [ }, { id: 11, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -331,27 +331,27 @@ export default [ }, { id: 12, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -361,27 +361,27 @@ export default [ }, { id: 13, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -391,27 +391,27 @@ export default [ }, { id: 14, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -421,27 +421,27 @@ export default [ }, { id: 15, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -451,27 +451,27 @@ export default [ }, { id: 16, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -481,27 +481,27 @@ export default [ }, { id: 17, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -511,27 +511,27 @@ export default [ }, { id: 18, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -541,27 +541,27 @@ export default [ }, { id: 19, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -571,27 +571,27 @@ export default [ }, { id: 20, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -601,27 +601,27 @@ export default [ }, { id: 22, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -631,27 +631,27 @@ export default [ }, { id: 23, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -661,27 +661,27 @@ export default [ }, { id: 24, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -691,27 +691,27 @@ export default [ }, { id: 25, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -721,27 +721,27 @@ export default [ }, { id: 26, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -751,27 +751,27 @@ export default [ }, { id: 27, - email: "test@test.com.br", - created_at: "2015-01-26T23:19:00.575Z", - updated_at: "2016-08-22T09:23:23.947Z", - first_name: "Matt", - last_name: "Tester", + email: 'test@test.com.br', + created_at: '2015-01-26T23:19:00.575Z', + updated_at: '2016-08-22T09:23:23.947Z', + first_name: 'Matt', + last_name: 'Tester', display_email: null, - slug: "matt-tester", + slug: 'matt-tester', youtube_id: null, display_profile: true, latitude: 27.5949, longitude: 48.5482, - country_name: "Brazil", - city: "Florianopolis", - region: "Santa Catarina", + country_name: 'Brazil', + city: 'Florianopolis', + region: 'Santa Catarina', youtube_user_name: null, github_profile_url: null, display_hire_me: null, bio: null, receive_mailings: true, timezone_offset: -18000, - country_code: "BR", + country_code: 'BR', status_count: 0, deleted_at: null, event_participation_count: 0, @@ -779,35 +779,35 @@ export default [ skill_list: [], title_list: [] } -]; +] export let gravatarUrl = { - 1: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 2: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 4: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 5: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 6: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 7: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 8: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 9: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 10: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 11: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 12: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 13: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 14: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 15: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 16: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 17: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 18: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 19: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 20: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 21: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 22: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 23: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 24: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 25: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro", - 26: "https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro" -}; + 1: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 2: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 4: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 5: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 6: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 7: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 8: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 9: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 10: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 11: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 12: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 13: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 14: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 15: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 16: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 17: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 18: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 19: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 20: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 21: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 22: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 23: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 24: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 25: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro', + 26: 'https://www.gravatar.com/avatar/a7cdd806f5a64eb0dbdbc77954b5c982?d=retro' +} export let karmaTotal = { 1: 23, @@ -836,4 +836,4 @@ export let karmaTotal = { 24: 21, 25: 45, 26: 23 -}; +} diff --git a/src/index.js b/src/index.js index e0e532c4..d15062b6 100644 --- a/src/index.js +++ b/src/index.js @@ -1,25 +1,25 @@ -import React from "react"; -import { render } from "react-dom"; -import UsersList from "./containers/UsersList"; -import { BrowserRouter, Route, Switch } from "react-router-dom"; -import { Provider } from "react-redux"; -import store from "./store"; -import { Container } from "semantic-ui-react"; -import Homepage from "./components/homepage/Homepage"; -import "./assets/semantic.css" -import axios from 'axios'; -axios.defaults.baseURL = 'https://develop.websiteone.agileventures.org/'; +import React from 'react' +import { render } from 'react-dom' +import UsersList from './containers/UsersList' +import { BrowserRouter, Route, Switch } from 'react-router-dom' +import { Provider } from 'react-redux' +import store from './store' +import { Container } from 'semantic-ui-react' +import Homepage from './components/homepage/Homepage' +import './assets/semantic.css' +import axios from 'axios' +axios.defaults.baseURL = 'https://develop.websiteone.agileventures.org/' render( - + - - + + , - document.getElementById("root") -); + document.getElementById('root') +) diff --git a/src/reducers/usersReducer.js b/src/reducers/usersReducer.js index d63f7318..21c8e921 100644 --- a/src/reducers/usersReducer.js +++ b/src/reducers/usersReducer.js @@ -1,13 +1,13 @@ -import { GET_USERS } from "../types"; -import initialState from "./initialState"; +import { GET_USERS } from '../types' +import initialState from './initialState' const usersReducer = (state = initialState.users, action) => { switch (action.type) { case GET_USERS: - return [ ...action.payload ]; + return [ ...action.payload ] default: - return state; + return state } -}; +} -export default usersReducer; +export default usersReducer diff --git a/src/store/index.js b/src/store/index.js index 575f04c8..00181742 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,12 +1,12 @@ -import { createStore, applyMiddleware, combineReducers, compose } from "redux"; -import thunk from "redux-thunk"; -import users from "../reducers/usersReducer"; +import { createStore, applyMiddleware, combineReducers, compose } from 'redux' +import thunk from 'redux-thunk' +import users from '../reducers/usersReducer' -const composeEnhancers = window._REDUX_DEVTOOLS_EXTENSION_COMPOSE_ || compose; +const composeEnhancers = window._REDUX_DEVTOOLS_EXTENSION_COMPOSE_ || compose const rootReducer = combineReducers({ users -}); +}) export default createStore( rootReducer, - composeEnhancers(applyMiddleware(thunk)), -); \ No newline at end of file + composeEnhancers(applyMiddleware(thunk)) +) diff --git a/src/tests/Homepage.test.js b/src/tests/Homepage.test.js deleted file mode 100644 index d48caab7..00000000 --- a/src/tests/Homepage.test.js +++ /dev/null @@ -1,25 +0,0 @@ -import React from "react"; -import { shallow, mount } from "enzyme"; -import { Homepage } from "../components/homepage/Homepage"; - -describe("Homepage", () => { - - const homepage = (props) => mount() - - describe("renders the Homepage component", () => { - it("renders without errors", () => { - const wrapper = homepage() - expect(wrapper.name()).toBe("Homepage"); - }) - - it("renders 7 row elements", () => { - const wrapper = homepage() - expect(wrapper.find(".row").length).toEqual(7) - }) - - it("renders 5 { - const wrapper = homepage() - expect(wrapper.find("HomepageModal").length).toEqual(5) - }) - }) -}) \ No newline at end of file diff --git a/src/tests/HomepageModal.test.js b/src/tests/HomepageModal.test.js deleted file mode 100644 index d0b6719c..00000000 --- a/src/tests/HomepageModal.test.js +++ /dev/null @@ -1,35 +0,0 @@ -import React from "react"; -import { shallow, mount } from "enzyme"; -import { HomepageModal } from "../components/homepage/HomepageModal"; -import homepageModals from '../fixtures/homepageModals'; -import { Modal } from "semantic-ui-react"; - -describe("HomepageModal", () => { - const modal = homepageModals[0] - const homepageModal = (props) => mount() - - describe("renders the HomepageModal component", () => { - it("renders without errors", () => { - const wrapper = homepageModal(modal) - expect(wrapper.name()).toBe("HomepageModal"); - }) - - it("renders a button", () => { - const wrapper = homepageModal(modal) - expect(wrapper.find("button").text()).toEqual(modal.buttonText) - }) - - }) -}) - -describe("HomepageModal open", () => { - const modal = homepageModals[0]; - const homepageModal = (props) => mount() - - describe("renders the HomepageModal component component", () => { - it("renders without errors", () => { - const wrapper = homepageModal(modal) - expect(wrapper.find(Modal).length).toBe(1); - }) - }) -}) \ No newline at end of file diff --git a/src/tests/Paginate.test.js b/src/tests/Paginate.test.js deleted file mode 100644 index 5766dbfc..00000000 --- a/src/tests/Paginate.test.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from "react"; -import Paginate from "../components/Paginate"; -import { mount } from "enzyme"; -import usersFixture from "../fixtures/users"; - -describe("Paginate", () => { - let User = () =>
; - let wrapper = mount(); - - it("should have 26 User components", () => { - expect(wrapper.find("User")).toHaveLength(26); - }); - - describe("no users context", () => { - let wrapper = mount(); - - it("should display a loader if there are no users", () => { - expect(wrapper.find("Loader")).toHaveLength(1); - }); - }); -}); diff --git a/src/tests/PaginationLinks.test.js b/src/tests/PaginationLinks.test.js deleted file mode 100644 index 9aa6855a..00000000 --- a/src/tests/PaginationLinks.test.js +++ /dev/null @@ -1,25 +0,0 @@ -import React from "react"; -import PaginationLinks from "../components/PaginationLinks"; -import { mount } from "enzyme"; - -describe("PaginationLinks", () => { - let handlePageSelect = jest.fn(); - let wrapper = mount( - - ); - - it("should have links each page, next, and previous", () => { - expect(wrapper.find("span")).toHaveLength(4); - }); - - it("should be active when on selected page", () => { - let activePage = wrapper.find("span").filterWhere(item => { - return item.hasClass("active"); - }); - expect(activePage.text()).toEqual("2"); - }); -}); \ No newline at end of file diff --git a/src/tests/User.test.js b/src/tests/User.test.js deleted file mode 100644 index 1c51fbea..00000000 --- a/src/tests/User.test.js +++ /dev/null @@ -1,47 +0,0 @@ -import React from "react"; -import { mount } from "enzyme"; -import User from "../components/User"; -import { StaticRouter } from "react-router"; -import usersFixture from "../fixtures/users"; - -//mount User component -describe("User", () => { - let wrapper; - const context = {}; - let user = usersFixture[0]; - - beforeEach(() => { - wrapper = mount( - - - - ); - }); - - it("should have an Image with an image url", () => { - expect(wrapper.find("Image").prop("src")).toEqual(`${user.gravatar_url}`); - }); - - it("should have a CardHeader with the user's name", () => { - expect(wrapper.find("CardHeader").text()).toEqual( - user.first_name + " " + user.last_name - ); - }); - - it("should display a user's title if it exists", () => { - let userWithTitle = wrapper.find("p").filterWhere(item => { - return item.text() === "Mentor"; - }); - expect(userWithTitle).toExist; - }); - - it("should display a user's slug if they don't have a name registered", () => { - let user = usersFixture[1]; - wrapper = mount( - - - - ); - expect(wrapper.find("CardHeader").text()).toEqual(user.slug); - }); -}); \ No newline at end of file diff --git a/src/tests/UserList.test.js b/src/tests/UserList.test.js deleted file mode 100644 index f8fdbbfd..00000000 --- a/src/tests/UserList.test.js +++ /dev/null @@ -1,80 +0,0 @@ -import React from "react"; -import { mount, shallow } from "enzyme"; -import { UsersList } from "../containers/UsersList"; -import usersFixture from "../fixtures/users"; -import { StaticRouter } from "react-router"; - -describe("UsersList", () => { - let wrapper; - const context = {}; - wrapper = mount( - - - new Promise(function(resolve, _) { - setTimeout(function() { - resolve("promise"); - }, 300); - }) - } - /> - - ); - - it("should have a header Volunteers Directory", () => { - expect(wrapper.find("Header").text()).toBe("Volunteers Directory"); - }); - - it("should have a Paginate component", () => { - expect(wrapper.find("Paginate")).toHaveLength(1); - }); - - it("should have a PaginationLinks component", () => { - expect(wrapper.find("PaginationLinks")).toHaveLength(1); - }); - - it("should call handlePageSelect when a pagination link is clicked", () => { - let paginationLink2 = wrapper.find("span").filterWhere(item => { - return item.text() === "2"; - }); - paginationLink2.simulate("click"); - let usersList = wrapper.find("UsersList"); - expect(usersList.instance().state.selectedPage).toEqual(2); - expect(usersList.instance().state.lastPage).toBe(false); - expect(usersList.instance().state.firstPage).toBe(false); - }); - - it("should set lastPage to true when the selectedPage is the last", () => { - let paginationLink2 = wrapper.find("span").filterWhere(item => { - return item.text() === "3"; - }); - paginationLink2.simulate("click"); - let usersList = wrapper.find("UsersList"); - expect(usersList.instance().state.lastPage).toBe(true); - }); - - it("should set firstPage to true when the selectedPage is the first", () => { - let paginationLink2 = wrapper.find("span").filterWhere(item => { - return item.text() === "1"; - }); - paginationLink2.simulate("click"); - let usersList = wrapper.find("UsersList"); - expect(usersList.instance().state.firstPage).toBe(true); - }); - - it("shouldn't render a Project component without users", () => { - const wrapper = mount( - - {}} /> - - ); - expect(wrapper.find("User")).toHaveLength(0); - }); - - it("should test componentWillReceiveProps", () => { - const wrapper = shallow( {}} />); - wrapper.setProps({ users: ["something"] }); - expect(wrapper.instance().state.users).toEqual({ "1": ["something"] }); - }); -}); diff --git a/src/tests/actions/getUsersAction.test.js b/src/tests/actions/getUsersAction.test.js new file mode 100644 index 00000000..9dfc1e0a --- /dev/null +++ b/src/tests/actions/getUsersAction.test.js @@ -0,0 +1,36 @@ +import moxios from 'moxios' +import thunk from 'redux-thunk' +import configureMockStore from 'redux-mock-store' +import { fetchUsers } from '../../actions/getUsersAction' +import { GET_USERS } from '../../types' +import usersResponse, { gravatarUrl, karmaTotal } from '../../fixtures/users' + +const middlewares = [thunk] +const mockStore = configureMockStore(middlewares) +let store + +describe('fetchUsers action', () => { + beforeEach(() => { + moxios.install() + store = mockStore({}) + }) + + afterEach(() => { + moxios.uninstall() + }) + + it('fetches users from an external api', () => { + const expectedActions = [{ type: GET_USERS, payload: usersResponse }] + moxios.stubRequest( + '/api/v1/users', + { + status: 200, + response: { users: usersResponse, gravatar_url: gravatarUrl, karma_total: karmaTotal } + } + ) + + return store.dispatch(fetchUsers()).then(() => { + expect(store.getActions()).toEqual(expectedActions) + }) + }) +}) diff --git a/src/tests/components/Paginate.test.js b/src/tests/components/Paginate.test.js new file mode 100644 index 00000000..d7707049 --- /dev/null +++ b/src/tests/components/Paginate.test.js @@ -0,0 +1,21 @@ +import React from 'react' +import Paginate from '../../components/Paginate' +import { mount } from 'enzyme' +import usersFixture from '../../fixtures/users' + +describe('Paginate', () => { + let User = () =>
+ let wrapper = mount() + + it('should have 26 User components', () => { + expect(wrapper.find('User')).toHaveLength(26) + }) + + describe('no users context', () => { + let wrapper = mount() + + it('should display a loader if there are no users', () => { + expect(wrapper.find('Loader')).toHaveLength(1) + }) + }) +}) diff --git a/src/tests/components/PaginationLinks.test.js b/src/tests/components/PaginationLinks.test.js new file mode 100644 index 00000000..687873e0 --- /dev/null +++ b/src/tests/components/PaginationLinks.test.js @@ -0,0 +1,25 @@ +import React from 'react' +import PaginationLinks from '../../components/PaginationLinks' +import { mount } from 'enzyme' + +describe('PaginationLinks', () => { + let handlePageSelect = jest.fn() + let wrapper = mount( + + ) + + it('should have links each page, next, and previous', () => { + expect(wrapper.find('span')).toHaveLength(4) + }) + + it('should be active when on selected page', () => { + let activePage = wrapper.find('span').filterWhere(item => { + return item.hasClass('active') + }) + expect(activePage.text()).toEqual('2') + }) +}) diff --git a/src/tests/components/User.test.js b/src/tests/components/User.test.js new file mode 100644 index 00000000..993fa6c7 --- /dev/null +++ b/src/tests/components/User.test.js @@ -0,0 +1,58 @@ +import React from 'react' +import { mount } from 'enzyme' +import User from '../../components/User' +import { StaticRouter } from 'react-router' +import usersFixture from '../../fixtures/users' + +// mount User component +describe('User', () => { + let wrapper + const context = {} + let user = usersFixture[0] + + beforeEach(() => { + wrapper = mount( + + + + ) + }) + + it('should have an Image with an image url', () => { + expect(wrapper.find('Image').prop('src')).toEqual(`${user.gravatar_url}`) + }) + + it("should have a CardHeader with the user's name", () => { + expect(wrapper.find('CardHeader').text()).toEqual( + user.first_name + ' ' + user.last_name + ) + }) + + it("should display a user's title if it exists", () => { + expect(wrapper.find('CardDescription').text()).toEqual( + user.title_list.toString() + ' ' + ) + }) + + it("should display a user's slug if they don't have a name registered", () => { + let user = usersFixture[1] + wrapper = mount( + + + + ) + expect(wrapper.find('CardHeader').text()).toEqual(user.slug) + }) + + it('should truncate long names', () => { + user = usersFixture[2] + wrapper = mount( + + + + ) + expect(wrapper.find('CardHeader').text()).toEqual( + (user.first_name + ' ' + user.last_name).substring(0, 10) + '...' + ) + }) +}) diff --git a/src/tests/components/homepage/Homepage.test.js b/src/tests/components/homepage/Homepage.test.js new file mode 100644 index 00000000..2ea1cbc0 --- /dev/null +++ b/src/tests/components/homepage/Homepage.test.js @@ -0,0 +1,24 @@ +import React from 'react' +import { mount } from 'enzyme' +import { Homepage } from '../../../components/homepage/Homepage' + +describe('Homepage', () => { + const homepage = (props) => mount() + + describe('renders the Homepage component', () => { + it('renders without errors', () => { + const wrapper = homepage() + expect(wrapper.name()).toBe('Homepage') + }) + + it('renders 7 row elements', () => { + const wrapper = homepage() + expect(wrapper.find('.row').length).toEqual(7) + }) + + it('renders 5 { + const wrapper = homepage() + expect(wrapper.find('HomepageModal').length).toEqual(5) + }) + }) +}) diff --git a/src/tests/components/homepage/HomepageModal.test.js b/src/tests/components/homepage/HomepageModal.test.js new file mode 100644 index 00000000..fa0414dc --- /dev/null +++ b/src/tests/components/homepage/HomepageModal.test.js @@ -0,0 +1,34 @@ +import React from 'react' +import { mount } from 'enzyme' +import { HomepageModal } from '../../../components/homepage/HomepageModal' +import homepageModals from '../../../fixtures/homepageModals' +import { Modal } from 'semantic-ui-react' + +describe('HomepageModal', () => { + const modal = homepageModals[0] + const homepageModal = (props) => mount() + + describe('renders the HomepageModal component', () => { + it('renders without errors', () => { + const wrapper = homepageModal(modal) + expect(wrapper.name()).toBe('HomepageModal') + }) + + it('renders a button', () => { + const wrapper = homepageModal(modal) + expect(wrapper.find('button').text()).toEqual(modal.buttonText) + }) + }) +}) + +describe('HomepageModal open', () => { + const modal = homepageModals[0] + const homepageModal = (props) => mount() + + describe('renders the HomepageModal component component', () => { + it('renders without errors', () => { + const wrapper = homepageModal(modal) + expect(wrapper.find(Modal).length).toBe(1) + }) + }) +}) diff --git a/src/tests/containers/UserList.test.js b/src/tests/containers/UserList.test.js new file mode 100644 index 00000000..19828194 --- /dev/null +++ b/src/tests/containers/UserList.test.js @@ -0,0 +1,86 @@ +import React from 'react' +import { mount, shallow } from 'enzyme' +import { UsersList } from '../../containers/UsersList' +import usersFixture from '../../fixtures/users' +import { StaticRouter } from 'react-router' + +describe('UsersList', () => { + let wrapper + const context = {} + wrapper = mount( + + + new Promise(function (resolve, reject) { + setTimeout(function () { + resolve('promise') + }, 300) + }) + } + /> + + ) + + it('should have a header Volunteers Directory', () => { + expect(wrapper.find('Header').text()).toBe('Volunteers Directory') + }) + + it('should have a Paginate component', () => { + expect(wrapper.find('Paginate')).toHaveLength(1) + }) + + it('should have a PaginationLinks component', () => { + expect(wrapper.find('PaginationLinks')).toHaveLength(1) + }) + + it('should call handlePageSelect when a pagination link is clicked', () => { + let paginationLink2 = wrapper.find('span').filterWhere(item => { + return item.text() === '2' + }) + paginationLink2.simulate('click') + let usersList = wrapper.find('UsersList') + expect(usersList.instance().state.selectedPage).toEqual(2) + expect(usersList.instance().state.lastPage).toBe(false) + expect(usersList.instance().state.firstPage).toBe(false) + }) + + it('should set lastPage to true when the selectedPage is the last', () => { + let paginationLink2 = wrapper.find('span').filterWhere(item => { + return item.text() === '3' + }) + paginationLink2.simulate('click') + let usersList = wrapper.find('UsersList') + expect(usersList.instance().state.lastPage).toBe(true) + }) + + it('should set firstPage to true when the selectedPage is the first', () => { + let paginationLink2 = wrapper.find('span').filterWhere(item => { + return item.text() === '1' + }) + paginationLink2.simulate('click') + let usersList = wrapper.find('UsersList') + expect(usersList.instance().state.firstPage).toBe(true) + }) + + it("shouldn't render a Project component without users", () => { + const wrapper = mount( + + {}} /> + + ) + expect(wrapper.find('User')).toHaveLength(0) + }) + + it('should test componentWillReceiveProps', () => { + const wrapper = shallow( {}} />) + wrapper.setProps({ users: ['something'] }) + expect(wrapper.instance().state.users).toEqual({ '1': ['something'] }) + }) + + it('should test componentWillReceiveProps', () => { + const wrapper = shallow( {}} />) + wrapper.setProps(usersFixture) + expect(wrapper.instance().state.users[1][0]).toEqual(usersFixture[0]) + }) +}) diff --git a/src/tests/getUsersAction.test.js b/src/tests/getUsersAction.test.js deleted file mode 100644 index 25628542..00000000 --- a/src/tests/getUsersAction.test.js +++ /dev/null @@ -1,36 +0,0 @@ -import moxios from "moxios"; -import thunk from "redux-thunk"; -import configureMockStore from "redux-mock-store"; -import { fetchUsers } from "../actions/getUsersAction"; -import { GET_USERS } from "../types"; -import usersResponse, { gravatarUrl, karmaTotal } from "../fixtures/users"; - -const middlewares = [thunk]; -const mockStore = configureMockStore(middlewares); -let store; - -describe("fetchUsers action", () => { - beforeEach(() => { - moxios.install(); - store = mockStore({}); - }); - - afterEach(() => { - moxios.uninstall(); - }); - - it("fetches users from an external api", () => { - const expectedActions = [{ type: GET_USERS, payload: usersResponse }]; - moxios.stubRequest( - "/api/v1/users", - { - status: 200, - response: { users: usersResponse, gravatar_url: gravatarUrl, karma_total: karmaTotal } - } - ); - - return store.dispatch(fetchUsers()).then(() => { - expect(store.getActions()).toEqual(expectedActions); - }); - }); -}); \ No newline at end of file diff --git a/src/tests/reducers/usersReducer.test.js b/src/tests/reducers/usersReducer.test.js new file mode 100644 index 00000000..d2cb5324 --- /dev/null +++ b/src/tests/reducers/usersReducer.test.js @@ -0,0 +1,17 @@ +import usersReducer from '../../reducers/usersReducer' +import { GET_USERS } from '../../types' + +describe('reduces users', () => { + it('defaults to empty projects if none are passed in', () => { + expect(usersReducer(undefined, {})).toEqual([]) + }) + + it('reduces users', () => { + expect( + usersReducer([], { + type: GET_USERS, + payload: ['User to be added to store'] + }) + ).toEqual(['User to be added to store']) + }) +}) diff --git a/src/tests/setupTests.js b/src/tests/setupTests.js index acd71d49..88c8c3b3 100644 --- a/src/tests/setupTests.js +++ b/src/tests/setupTests.js @@ -1,4 +1,4 @@ -import Enzyme from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; +import Enzyme from 'enzyme' +import Adapter from 'enzyme-adapter-react-16' -Enzyme.configure({ adapter: new Adapter() }); \ No newline at end of file +Enzyme.configure({ adapter: new Adapter() }) diff --git a/src/tests/store.test.js b/src/tests/store.test.js deleted file mode 100644 index 27cbd992..00000000 --- a/src/tests/store.test.js +++ /dev/null @@ -1,14 +0,0 @@ -import store from "../store"; - -describe("Store", () => { - it("should update", async () => { - await store.dispatch({ - type: "GET_USERS", - payload: ["Run the tests"] - }); - - expect(store.getState()).toEqual({ - users: ["Run the tests"] - }); - }); -}); diff --git a/src/tests/store/store.test.js b/src/tests/store/store.test.js new file mode 100644 index 00000000..240c9f3c --- /dev/null +++ b/src/tests/store/store.test.js @@ -0,0 +1,14 @@ +import store from '../../store' + +describe('Store', () => { + it('should update', async () => { + await store.dispatch({ + type: 'GET_USERS', + payload: ['Run the tests'] + }) + + expect(store.getState()).toEqual({ + users: ['Run the tests'] + }) + }) +}) diff --git a/src/tests/usersReducer.test.js b/src/tests/usersReducer.test.js deleted file mode 100644 index b1f5c65e..00000000 --- a/src/tests/usersReducer.test.js +++ /dev/null @@ -1,17 +0,0 @@ -import usersReducer from "../reducers/usersReducer"; -import { GET_USERS } from "../types"; - -describe("reduces users", () => { - it("defaults to empty projects if none are passed in", () => { - expect(usersReducer(undefined, {})).toEqual([]); - }); - - it("reduces users", () => { - expect( - usersReducer([], { - type: GET_USERS, - payload: ["User to be added to store"] - }) - ).toEqual(["User to be added to store"]); - }); -}); diff --git a/src/types/index.js b/src/types/index.js index ad4f65df..fd20bbff 100644 --- a/src/types/index.js +++ b/src/types/index.js @@ -1 +1 @@ -export const GET_USERS = "GET_USERS" +export const GET_USERS = 'GET_USERS' diff --git a/webpack.config.js b/webpack.config.js index 0f3ddcee..bfc22d4f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,11 +1,11 @@ -const path = require("path"); -const HtmlWebPackPlugin = require("html-webpack-plugin"); -const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const path = require('path') +const HtmlWebPackPlugin = require('html-webpack-plugin') +require('mini-css-extract-plugin') const htmlPlugin = new HtmlWebPackPlugin({ - template: "./src/index.html", - filename: "./index.html" -}); + template: './src/index.html', + filename: './index.html' +}) module.exports = { devServer: { historyApiFallback: true }, @@ -14,18 +14,18 @@ module.exports = { rules: [ { test: /\.(js|jsx)$/, - include: path.resolve(__dirname, "src"), - use: ["babel-loader"] + include: path.resolve(__dirname, 'src'), + use: ['babel-loader'] }, { test: /\.(sc|sa|c)ss$/, - use: ['style-loader', "css-loader", "sass-loader"] + use: ['style-loader', 'css-loader', 'sass-loader'] }, { test: /\.(png|woff|woff2|eot|ttf|svg)$/, - use: "url-loader?limit=100000" + use: 'url-loader?limit=100000' } ] }, plugins: [htmlPlugin] -}; +} diff --git a/yarn.lock b/yarn.lock index 1348e3df..2bbb211c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,13 +2,40 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0-beta.35": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== dependencies: "@babel/highlight" "^7.0.0" +"@babel/generator@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc" + integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg== + dependencies: + "@babel/types" "^7.2.2" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + "@babel/helper-module-imports@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" @@ -16,6 +43,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + dependencies: + "@babel/types" "^7.0.0" + "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" @@ -25,6 +59,11 @@ esutils "^2.0.2" js-tokens "^4.0.0" +"@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489" + integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA== + "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" @@ -32,7 +71,31 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/types@^7.0.0": +"@babel/template@^7.1.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" + integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.2.2" + "@babel/types" "^7.2.2" + +"@babel/traverse@^7.0.0": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" + integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.2.3" + "@babel/types" "^7.2.2" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0", "@babel/types@^7.2.2": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e" integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg== @@ -315,6 +378,11 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== + acorn-walk@^6.0.1: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" @@ -325,7 +393,7 @@ acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1: +acorn@^6.0.1, acorn@^6.0.2: version "6.0.5" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a" integrity sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg== @@ -335,11 +403,21 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0: +ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= +ajv@^6.0.1, ajv@^6.5.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.7.0.tgz#e3ce7bb372d6577bb1839f1dfdfcbf5ad2948d96" + integrity sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^6.1.0, ajv@^6.5.5: version "6.6.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d" @@ -467,6 +545,14 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -634,6 +720,18 @@ babel-core@^6.0.0, babel-core@^6.26.0, babel-core@^6.26.3: slash "^1.0.0" source-map "^0.5.7" +babel-eslint@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" + integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" @@ -1527,6 +1625,13 @@ caller-callsite@^2.0.0: dependencies: callsites "^2.0.0" +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= + dependencies: + callsites "^0.2.0" + caller-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" @@ -1534,6 +1639,11 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -1601,7 +1711,7 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1615,6 +1725,11 @@ change-emitter@^0.1.2: resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU= +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + cheerio@^1.0.0-rc.2: version "1.0.0-rc.2" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" @@ -1672,6 +1787,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -1693,6 +1813,18 @@ clean-css@4.2.x: dependencies: source-map "~0.6.0" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -1840,6 +1972,11 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" @@ -2122,6 +2259,11 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= +debug-log@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8= + debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2225,6 +2367,18 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +deglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be" + integrity sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw== + dependencies: + find-root "^1.0.0" + glob "^7.0.5" + ignore "^3.0.9" + pkg-config "^1.1.0" + run-parallel "^1.1.2" + uniq "^1.0.1" + del@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" @@ -2331,6 +2485,21 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + dom-converter@~0.2: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -2346,6 +2515,11 @@ dom-serializer@0, dom-serializer@~0.1.0: domelementtype "~1.1.1" entities "~1.1.1" +dom-walk@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -2545,7 +2719,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.10.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.5.1: +es-abstract@^1.10.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== @@ -2587,6 +2761,97 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" +eslint-config-standard-jsx@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" + integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg== + +eslint-config-standard@12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" + integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== + +eslint-import-resolver-node@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-module-utils@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" + integrity sha1-snA2LNiLGkitMIl2zn+lTphBF0Y= + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" + +eslint-plugin-es@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" + integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw== + dependencies: + eslint-utils "^1.3.0" + regexpp "^2.0.1" + +eslint-plugin-import@~2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" + integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== + dependencies: + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.2.0" + has "^1.0.1" + lodash "^4.17.4" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + resolve "^1.6.0" + +eslint-plugin-node@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" + integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw== + dependencies: + eslint-plugin-es "^1.3.1" + eslint-utils "^1.3.1" + ignore "^4.0.2" + minimatch "^3.0.4" + resolve "^1.8.1" + semver "^5.5.0" + +eslint-plugin-promise@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" + integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== + +eslint-plugin-react@~7.11.1: + version "7.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" + integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + prop-types "^15.6.2" + +eslint-plugin-standard@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c" + integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA== + +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-scope@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" @@ -2595,6 +2860,69 @@ eslint-scope@^4.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-utils@^1.3.0, eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + +eslint@~5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" + integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg== + dependencies: + ajv "^6.5.0" + babel-code-frame "^6.26.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^4.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.2" + imurmurhash "^0.1.4" + inquirer "^5.2.0" + is-resolvable "^1.1.0" + js-yaml "^3.11.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^2.0.0" + require-uncached "^1.0.3" + semver "^5.5.0" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" + +espree@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" + integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== + dependencies: + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -2605,6 +2933,13 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" @@ -2612,7 +2947,7 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= @@ -2808,6 +3143,15 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -2898,6 +3242,21 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + file-loader@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" @@ -2971,7 +3330,7 @@ find-cache-dir@^2.0.0: make-dir "^1.0.0" pkg-dir "^3.0.0" -find-root@^1.1.0: +find-root@^1.0.0, find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== @@ -2984,7 +3343,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -3008,6 +3367,16 @@ findup-sync@^2.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" +flat-cache@^1.2.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + flush-write-stream@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" @@ -3140,6 +3509,11 @@ function.prototype.name@^1.1.0: function-bind "^1.1.1" is-callable "^1.1.3" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -3178,6 +3552,11 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -3225,7 +3604,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -3262,6 +3641,19 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" +global@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= + dependencies: + min-document "^2.19.0" + process "~0.5.1" + +globals@^11.1.0, globals@^11.7.0: + version "11.10.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50" + integrity sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ== + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -3597,7 +3989,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3633,6 +4025,16 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" +ignore@^3.0.9: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.2: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -3716,6 +4118,25 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +inquirer@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + internal-ip@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" @@ -4006,6 +4427,11 @@ is-primitive@^2.0.0: resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -4013,6 +4439,11 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-resolvable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -4557,6 +4988,11 @@ jsesc@^1.3.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -4576,6 +5012,11 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -4608,6 +5049,13 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jsx-ast-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" + integrity sha1-6AGxs5mF4g//yHtA43SAgOLcrH8= + dependencies: + array-includes "^3.0.3" + keyboard-key@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/keyboard-key/-/keyboard-key-1.0.2.tgz#212e14dde4c2059814336159bbc5acd0a348ca6b" @@ -4675,7 +5123,7 @@ leven@^2.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= -levn@~0.3.0: +levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -4699,6 +5147,26 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + loader-runner@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979" @@ -4794,7 +5262,7 @@ lodash.tail@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= -lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.10: +lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" @@ -5034,6 +5502,13 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + mini-css-extract-plugin@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0" @@ -5065,7 +5540,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -5173,6 +5648,11 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + nan@^2.10.0, nan@^2.9.2: version "2.12.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" @@ -5554,6 +6034,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + opn@^5.1.0: version "5.4.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" @@ -5569,7 +6056,7 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1: +optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= @@ -5623,7 +6110,7 @@ os-locale@^3.0.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -5805,7 +6292,7 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -5841,6 +6328,13 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -5879,6 +6373,30 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pkg-conf@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" + integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= + dependencies: + find-up "^2.0.0" + load-json-file "^4.0.0" + +pkg-config@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" + integrity sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q= + dependencies: + debug-log "^1.0.0" + find-root "^1.0.0" + xtend "^4.0.1" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -5893,6 +6411,11 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -6066,6 +6589,16 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -6349,6 +6882,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -6358,6 +6899,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -6486,6 +7036,11 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexpp@^2.0.0, regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + regexpu-core@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" @@ -6608,6 +7163,14 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -6628,6 +7191,11 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -6648,19 +7216,27 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.8.1: +resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: version "1.9.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06" integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ== dependencies: path-parse "^1.0.6" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -6688,6 +7264,18 @@ rsvp@^3.3.3: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +run-parallel@^1.1.2: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -6695,6 +7283,13 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" +rxjs@^5.5.2: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -6955,6 +7550,13 @@ slash@^1.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -7048,7 +7650,7 @@ source-map@^0.4.2: dependencies: amdefine ">=0.0.4" -source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -7146,6 +7748,31 @@ stack-utils@^1.0.1: resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== +standard-engine@~9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316" + integrity sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w== + dependencies: + deglob "^2.1.0" + get-stdin "^6.0.0" + minimist "^1.1.0" + pkg-conf "^2.0.0" + +standard@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61" + integrity sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg== + dependencies: + eslint "~5.4.0" + eslint-config-standard "12.0.0" + eslint-config-standard-jsx "6.0.2" + eslint-plugin-import "~2.14.0" + eslint-plugin-node "~7.0.1" + eslint-plugin-promise "~4.0.0" + eslint-plugin-react "~7.11.1" + eslint-plugin-standard "~4.0.0" + standard-engine "~9.0.0" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -7230,7 +7857,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7279,7 +7906,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-bom@3.0.0: +strip-bom@3.0.0, strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= @@ -7303,7 +7930,7 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@~2.0.1: +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= @@ -7346,6 +7973,11 @@ supports-color@^6.0.0: dependencies: has-flag "^3.0.0" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + symbol-observable@^1.0.4, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7356,6 +7988,18 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= +table@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + tapable@^1.0.0, tapable@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" @@ -7417,6 +8061,11 @@ test-exclude@^4.2.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" @@ -7430,6 +8079,11 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + thunky@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" @@ -7442,6 +8096,13 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -7605,6 +8266,11 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^0.4.3" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -8044,6 +8710,13 @@ write-file-atomic@^2.1.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" @@ -8061,7 +8734,7 @@ xregexp@4.0.0: resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=