diff --git a/.babelrc b/.babelrc index 46a53cc2eb..efc55191ee 100644 --- a/.babelrc +++ b/.babelrc @@ -15,6 +15,8 @@ ] ], "plugins": [ + "babel-plugin-transform-class-properties", + ["styled-components", { "ssr": true }], "transform-flow-strip-types", "transform-object-rest-spread", "babel-plugin-transform-react-jsx", diff --git a/.gitignore b/.gitignore index d3ff99139b..7aadf6fa70 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ build-hermes package-lock.json .vscode dump.rdb +*.swp diff --git a/build-chronos/main.js b/build-chronos/main.js index 12dcdcb4e3..76753f7b47 100644 --- a/build-chronos/main.js +++ b/build-chronos/main.js @@ -513,18 +513,14 @@ module.exports = /******/ (function(modules) { _context.t2 = id; _context.t3 = content.title; _context.next = 6; - return ( - 0, - _message.getNewMessageCount - )(id); + return (0, + _message.getNewMessageCount)(id); case 6: _context.t4 = _context.sent; _context.next = 9; - return ( - 0, - _message.getTotalMessageCount - )(id); + return (0, + _message.getTotalMessageCount)(id); case 9: _context.t5 = _context.sent; @@ -809,10 +805,10 @@ module.exports = /******/ (function(modules) { _context5.t1 = firstName || null; _context5.t2 = userId; _context5.next = 5; - return ( - 0, - _usersChannels.getUsersChannelsEligibleForWeeklyDigest - )(userId); + return (0, + _usersChannels.getUsersChannelsEligibleForWeeklyDigest)( + userId + ); case 5: _context5.t3 = _context5.sent; @@ -1068,10 +1064,10 @@ module.exports = /******/ (function(modules) { _context7.next)) { case 0: _context7.next = 2; - return ( - 0, - _usersCommunities.getUsersCommunityIds - )(user.userId); + return (0, + _usersCommunities.getUsersCommunityIds)( + user.userId + ); case 2: usersCommunityIds = _context7.sent; @@ -1433,7 +1429,10 @@ module.exports = /******/ (function(modules) { var getCommunityById = (exports.getCommunityById = function getCommunityById( id ) { - return db.table('communities').get(id).run(); + return db + .table('communities') + .get(id) + .run(); }); var getTopCommunities = (exports.getTopCommunities = function getTopCommunities( @@ -1596,19 +1595,17 @@ module.exports = /******/ (function(modules) { __WEBPACK_AMD_DEFINE_RESULT__; (function(root, factory) { if (true) { - !( - (__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(25)]), - (__WEBPACK_AMD_DEFINE_FACTORY__ = factory), - (__WEBPACK_AMD_DEFINE_RESULT__ = - typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' - ? __WEBPACK_AMD_DEFINE_FACTORY__.apply( - exports, - __WEBPACK_AMD_DEFINE_ARRAY__ - ) - : __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && - (module.exports = __WEBPACK_AMD_DEFINE_RESULT__) - ); + !((__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(25)]), + (__WEBPACK_AMD_DEFINE_FACTORY__ = factory), + (__WEBPACK_AMD_DEFINE_RESULT__ = + typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' + ? __WEBPACK_AMD_DEFINE_FACTORY__.apply( + exports, + __WEBPACK_AMD_DEFINE_ARRAY__ + ) + : __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && + (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else if (typeof exports === 'object') { module.exports = factory( require('moment-timezone'), @@ -2204,7 +2201,7 @@ type QueueMap = { // e.g. [{ completed: 6 }, { completed: 2 }] => 8 var sumArr = function sumArr( input /*: Array */, - prop /*: number */ /*: string */ + prop /*: string */ /*: number */ ) { return input.reduce(function(sum, item) { return sum + item[prop]; diff --git a/config-overrides.js b/config-overrides.js index b8ecd97e62..8841eb1e33 100644 --- a/config-overrides.js +++ b/config-overrides.js @@ -8,6 +8,7 @@ const rewireStyledComponents = require('react-app-rewire-styled-components'); const swPrecachePlugin = require('sw-precache-webpack-plugin'); const fs = require('fs'); const match = require('micromatch'); +const WriteFilePlugin = require('write-file-webpack-plugin'); const isServiceWorkerPlugin = plugin => plugin instanceof swPrecachePlugin; const whitelist = path => new RegExp(`^(?!\/${path}).*`); @@ -29,5 +30,6 @@ const setCustomSwPrecacheOptions = config => { module.exports = function override(config, env) { setCustomSwPrecacheOptions(config); - return rewireStyledComponents(config, env); + config.plugins.push(WriteFilePlugin()); + return rewireStyledComponents(config, env, { ssr: true }); }; diff --git a/docs/backend/iris/server-side-rendering.md b/docs/backend/iris/server-side-rendering.md new file mode 100644 index 0000000000..e3e99cec26 --- /dev/null +++ b/docs/backend/iris/server-side-rendering.md @@ -0,0 +1,23 @@ +# Server-side rendering + +In production we server our React-based frontend (`src/`) server-side rendered, meaning we do an initial render on the server and send down static HTML, then rehydrate with the JS bundle. + +## Developing SSR + +When you develop Spectrum you're usually running two processes, `yarn run dev:client` for the frontend and `yarn run dev:server` for Iris, the GraphQL API. This means in your browser you access `localhost:3000`, which is a fully client-side React app, and that then fetches data from `localhost:3001/api`. + + +## When developing SSR features directly: +To test server-side rendering locally just load Spectrum from `localhost:3001` (instead of `:3000`), which will request the HTML from Iris rather than `webpack-dev-server`. + +The upside of this setup is that we get the best development experience locally with hot module reloading etc, and in production we only have one SSR process. + +The only downside is that when you're testing SSR and changing the frontend those changes won't be reflected. To get changes from the frontend reflected when you're requesting `localhost:3001` you have to: + +1. Stop the `yarn run dev:client` process +2. Run `yarn run dev:client` +3. Wait for the first compilation to complete +4. Restart the `yarn run dev:server` process by stopping and then starting it again + +## When doing all other client and Iris development: +Just stick to the normal workflow of `yarn run dev:client` and enjoy the hot reloading at `localhost:3000`! diff --git a/iris/authentication.js b/iris/authentication.js index 187e46ccc7..cac5295734 100644 --- a/iris/authentication.js +++ b/iris/authentication.js @@ -3,9 +3,7 @@ const env = require('node-env-file'); const IS_PROD = process.env.NODE_ENV === 'production'; const path = require('path'); -if (!IS_PROD) { - env(path.resolve(__dirname, './.env'), { raise: false }); -} +env(path.resolve(__dirname, './.env'), { raise: false }); // $FlowFixMe const passport = require('passport'); // $FlowFixMe diff --git a/iris/index.js b/iris/index.js index ba0671d78f..876cf22513 100644 --- a/iris/index.js +++ b/iris/index.js @@ -10,6 +10,7 @@ import fs from 'fs'; import { createServer } from 'http'; //$FlowFixMe import express from 'express'; +import * as graphql from 'graphql'; import schema from './schema'; import { init as initPassport } from './authentication.js'; @@ -38,38 +39,12 @@ app.use('/api', apiRoutes); import stripeRoutes from './routes/stripe'; app.use('/stripe', stripeRoutes); -// In production use express to serve the React app -// In development this is done by react-scripts, which starts its own server -if (IS_PROD) { - const { graphql } = require('graphql'); - // Load index.html into memory - var index = fs - .readFileSync(path.resolve(__dirname, '..', 'build', 'index.html')) - .toString(); - app.use( - express.static(path.resolve(__dirname, '..', 'build'), { index: false }) - ); - app.get('*', function(req, res) { - getMeta(req.url, (query: string): Promise => - graphql(schema, query, undefined, { - loaders: createLoaders(), - user: req.user, - }) - ).then(({ title, description, extra }) => { - // In production inject the meta title and description - res.send( - index - // Replace "Spectrum" with proper title, but make sure to not replace the twitter site:name - // (which is set to Spectrum.chat) - .replace(/Spectrum(?!\.chat)/g, title) - // Replace "Where communities live." with proper description for page - .replace(/Where communities live\./g, description) - // Add any extra meta tags at the end - .replace(//g, extra || '') - ); - }); - }); -} +// Use express to server-side render the React app +const renderer = require('./renderer').default; +app.use( + express.static(path.resolve(__dirname, '..', 'build'), { index: false }) +); +app.get('*', renderer); import type { Loader } from './loaders/types'; export type GraphQLContext = { @@ -90,4 +65,7 @@ server.listen(PORT); // Start database listeners listeners.start(); -console.log(`GraphQL server running at port ${PORT}!`); +console.log(`GraphQL server running at http://localhost:${PORT}/api`); +console.log( + `Web server running at http://localhost:${PORT}, server-side rendering enabled` +); diff --git a/iris/migrations/20170825220615-clean-recurring-payments.js b/iris/migrations/20170825220615-clean-recurring-payments.js index 2489b059cf..2963861fdd 100644 --- a/iris/migrations/20170825220615-clean-recurring-payments.js +++ b/iris/migrations/20170825220615-clean-recurring-payments.js @@ -38,9 +38,15 @@ exports.up = function(r, conn) { return Promise.all([ cleanSubscriptions, // delete all the old records in recurringPayments table - r.table('recurringPayments').delete().run(conn), + r + .table('recurringPayments') + .delete() + .run(conn), // also create a new index against communityId for faster isPro lookups on communities - r.table('recurringPayments').indexCreate('communityId').run(conn), + r + .table('recurringPayments') + .indexCreate('communityId') + .run(conn), ]); }) .then(([cleanSubscriptions]) => { diff --git a/iris/migrations/20170829233734-userid-index-on-invoices.js b/iris/migrations/20170829233734-userid-index-on-invoices.js index 460a5fbf03..71d2f97202 100644 --- a/iris/migrations/20170829233734-userid-index-on-invoices.js +++ b/iris/migrations/20170829233734-userid-index-on-invoices.js @@ -2,7 +2,10 @@ exports.up = function(r, conn) { return Promise.all([ - r.table('invoices').indexCreate('userId').run(conn), + r + .table('invoices') + .indexCreate('userId') + .run(conn), ]).catch(err => { console.log(err); throw err; diff --git a/iris/migrations/20170831163211-invoice-data-model-update.js b/iris/migrations/20170831163211-invoice-data-model-update.js index 4097faf894..457a0f76e7 100644 --- a/iris/migrations/20170831163211-invoice-data-model-update.js +++ b/iris/migrations/20170831163211-invoice-data-model-update.js @@ -32,13 +32,19 @@ exports.up = function(r, conn) { return Promise.all([ cleanInvoices, // delete all the old records in recurringPayments table - r.table('invoices').delete().run(conn), + r + .table('invoices') + .delete() + .run(conn), ]); }) .then(([cleanInvoices]) => { // insert each new clean record into the table return cleanInvoices.map(invoice => { - return r.table('invoices').insert(invoice).run(conn); + return r + .table('invoices') + .insert(invoice) + .run(conn); }); }); }; diff --git a/iris/models/channel.js b/iris/models/channel.js index 95351b1fcc..cdc6efae5f 100644 --- a/iris/models/channel.js +++ b/iris/models/channel.js @@ -280,7 +280,9 @@ const deleteChannel = (channelId: string): Promise => { }; const getChannelMemberCount = (channelId: string): number => { - return db.table('channels').get(channelId)('members').count().run(); + return db.table('channels').get(channelId)('members') + .count() + .run(); }; module.exports = { diff --git a/iris/models/community.js b/iris/models/community.js index 807af7c903..255ad1f582 100644 --- a/iris/models/community.js +++ b/iris/models/community.js @@ -51,7 +51,11 @@ const getCommunitiesByUser = (userId: string): Promise> => { .zip() // ensure we don't return any deleted communities .filter(community => db.not(community.hasFields('deletedAt'))) - .filter(row => row('isMember').eq(true).or(row('isOwner').eq(true))) + .filter(row => + row('isMember') + .eq(true) + .or(row('isOwner').eq(true)) + ) .run() ); }; @@ -471,9 +475,13 @@ const userIsMemberOfCommunity = ( communityId: string, userId: string ): Promise => { - return db.table('communities').get(communityId).run().then(community => { - return community.members.indexOf(userId) > -1; - }); + return db + .table('communities') + .get(communityId) + .run() + .then(community => { + return community.members.indexOf(userId) > -1; + }); }; const userIsMemberOfAnyChannelInCommunity = ( diff --git a/iris/models/invoice.js b/iris/models/invoice.js index 8c3f399948..cc329e089f 100644 --- a/iris/models/invoice.js +++ b/iris/models/invoice.js @@ -3,11 +3,17 @@ import { db } from './db'; import { addQueue } from '../utils/workerQueue'; export const getInvoice = (id: string): Promise> => { - return db.table('invoices').get(id).run(); + return db + .table('invoices') + .get(id) + .run(); }; export const getInvoicesByCommunity = (id: string): Promise> => { - return db.table('invoices').getAll(id, { index: 'communityId' }).run(); + return db + .table('invoices') + .getAll(id, { index: 'communityId' }) + .run(); }; export const getInvoicesByUser = (id: string): Promise> => { diff --git a/iris/models/message.js b/iris/models/message.js index a285a730d2..f14b0c3ec8 100644 --- a/iris/models/message.js +++ b/iris/models/message.js @@ -10,7 +10,10 @@ import type { PaginationOptions } from '../utils/paginate-arrays'; export type MessageTypes = 'text' | 'media'; const getMessage = (messageId: string): Promise => { - return db.table('messages').get(messageId).run(); + return db + .table('messages') + .get(messageId) + .run(); }; const getMessages = (threadId: String): Promise> => { diff --git a/iris/models/reaction.js b/iris/models/reaction.js index eb768338a0..a0ed55bccb 100644 --- a/iris/models/reaction.js +++ b/iris/models/reaction.js @@ -10,11 +10,17 @@ export type ReactionInput = { }; export const getReactions = (messageId: string): Promise> => { - return db.table('reactions').getAll(messageId, { index: 'messageId' }).run(); + return db + .table('reactions') + .getAll(messageId, { index: 'messageId' }) + .run(); }; export const getReaction = (reactionId: string): Promise => { - return db.table('reactions').get(reactionId).run(); + return db + .table('reactions') + .get(reactionId) + .run(); }; export const toggleReaction = ( @@ -30,7 +36,11 @@ export const toggleReaction = ( // this user has already reacted to the message, remove the reaction if (result.length > 0) { const existing = result[0]; - return db.table('reactions').get(existing.id).delete().run(); + return db + .table('reactions') + .get(existing.id) + .delete() + .run(); } else { return db .table('reactions') @@ -53,6 +63,9 @@ export const toggleReaction = ( }) .then(() => { // return the message object itself in order to more easily update the UI with the apollo store - return db.table('messages').get(reaction.messageId).run(); + return db + .table('messages') + .get(reaction.messageId) + .run(); }); }; diff --git a/iris/models/slackImport.js b/iris/models/slackImport.js index a5e53613ae..1cc68033a3 100644 --- a/iris/models/slackImport.js +++ b/iris/models/slackImport.js @@ -7,9 +7,7 @@ import { addQueue } from '../utils/workerQueue'; const env = require('node-env-file'); const IS_PROD = process.env.NODE_ENV === 'production'; const path = require('path'); -if (!IS_PROD) { - env(path.resolve(__dirname, '../.env'), { raise: false }); -} +env(path.resolve(__dirname, '../.env'), { raise: false }); let SLACK_SECRET = process.env.SLACK_SECRET; if (!IS_PROD) { diff --git a/iris/models/thread.js b/iris/models/thread.js index b5f54c8a4d..65732ffb84 100644 --- a/iris/models/thread.js +++ b/iris/models/thread.js @@ -6,7 +6,10 @@ const { listenToNewDocumentsIn } = require('./utils'); import { turnOffAllThreadNotifications } from '../models/usersThreads'; export const getThread = (threadId: string): Promise => { - return db.table('threads').get(threadId).run(); + return db + .table('threads') + .get(threadId) + .run(); }; export const getThreads = ( @@ -115,7 +118,9 @@ export const getViewableThreadsByUser = ( .eqJoin('channelId', db.table('usersChannels'), { index: 'channelId' }) // return only objects where the thread is not in a private channel or is in a channel where the current user is a member .filter(row => - row('left')('isPrivate').eq(false).or(row('right')('isMember').eq(true)) + row('left')('isPrivate') + .eq(false) + .or(row('right')('isMember').eq(true)) ) // filter down to only threads where the currentUser matches the criteria above .filter({ @@ -223,13 +228,20 @@ export const setThreadLock = ( result => result.changes.length > 0 ? result.changes[0].new_val - : db.table('threads').get(threadId).run() + : db + .table('threads') + .get(threadId) + .run() ) ); }; export const setThreadLastActive = (threadId: string, value: Date) => - db.table('threads').get(threadId).update({ lastActive: value }).run(); + db + .table('threads') + .get(threadId) + .update({ lastActive: value }) + .run(); /* Non-destructively delete a thread by setting the `deletedAt` field to a date. diff --git a/iris/models/user.js b/iris/models/user.js index 174b868d3f..26cbbf025f 100644 --- a/iris/models/user.js +++ b/iris/models/user.js @@ -16,7 +16,10 @@ const getUser = (input: Object): Promise => { }; const getUserById = (userId: string): Promise => { - return db.table('users').get(userId).run(); + return db + .table('users') + .get(userId) + .run(); }; const getUserByEmail = (email: string): Promise => { @@ -41,7 +44,10 @@ const getUserByUsername = (username: string): Promise => { }; const getUsers = (userIds: Array): Promise> => { - return db.table('users').getAll(...userIds).run(); + return db + .table('users') + .getAll(...userIds) + .run(); }; const getUsersBySearchString = (string: string): Promise> => { @@ -61,10 +67,14 @@ const getUsersBySearchString = (string: string): Promise> => { // space. This function is only invoked for signups when checking // for an existing user on the previous Firebase stack. const getUserByProviderId = (providerId: string): Promise => { - return db.table('users').filter({ providerId }).run().then(result => { - if (result && result.length > 0) return result[0]; - throw new new UserError('No user found with this providerId')(); - }); + return db + .table('users') + .filter({ providerId }) + .run() + .then(result => { + if (result && result.length > 0) return result[0]; + throw new new UserError('No user found with this providerId')(); + }); }; const storeUser = (user: Object): Promise => { @@ -224,7 +234,11 @@ const getUsersThreadCount = ( threadIds: Array ): Promise> => { const getThreadCounts = threadIds.map(creatorId => - db.table('threads').getAll(creatorId, { index: 'creatorId' }).count().run() + db + .table('threads') + .getAll(creatorId, { index: 'creatorId' }) + .count() + .run() ); return Promise.all(getThreadCounts).then(result => { diff --git a/iris/models/usersCommunities.js b/iris/models/usersCommunities.js index 8cc3d3cddc..0e63a3a13a 100644 --- a/iris/models/usersCommunities.js +++ b/iris/models/usersCommunities.js @@ -109,7 +109,12 @@ const removeMemberInCommunity = ( receiveNotifications: false, }) .run() - .then(() => db.table('communities').get(communityId).run()); + .then(() => + db + .table('communities') + .get(communityId) + .run() + ); }; // removes all the user relationships to a community. will be invoked when a diff --git a/iris/mutations/recurringPayment.js b/iris/mutations/recurringPayment.js index fbd49c0f3a..3b37604a71 100644 --- a/iris/mutations/recurringPayment.js +++ b/iris/mutations/recurringPayment.js @@ -6,9 +6,8 @@ const env = require('node-env-file'); const IS_PROD = process.env.NODE_ENV === 'production'; // $FlowFixMe const path = require('path'); -if (!IS_PROD) { - env(path.resolve(__dirname, '../.env'), { raise: false }); -} +env(path.resolve(__dirname, '../.env'), { raise: false }); + const STRIPE_TOKEN = process.env.STRIPE_TOKEN; // $FlowFixMe const stripe = require('stripe')(STRIPE_TOKEN), diff --git a/iris/renderer/browser-shim.js b/iris/renderer/browser-shim.js new file mode 100644 index 0000000000..1aae6f77da --- /dev/null +++ b/iris/renderer/browser-shim.js @@ -0,0 +1,17 @@ +// @flow +// Shim some browser stuff we use in the client for server-side rendering +// NOTE(@mxstbr): We should be getting rid of this over time +global.window = { + location: { + protocol: 'https:', + host: 'spectrum.chat', + hash: '', + }, +}; +global.localStorage = { + getItem: () => null, + setItem: () => {}, +}; +global.navigator = { + userAgent: '', +}; diff --git a/iris/renderer/get-html.js b/iris/renderer/get-html.js new file mode 100644 index 0000000000..e873d916b7 --- /dev/null +++ b/iris/renderer/get-html.js @@ -0,0 +1,32 @@ +// @flow +import fs from 'fs'; +import path from 'path'; +import serialize from 'serialize-javascript'; + +const html = fs + .readFileSync(path.resolve(__dirname, '..', '..', 'build', 'index.html')) + .toString(); + +type Arguments = { + styleTags: string, + metaTags: string, + state: Object, + content: string, +}; + +export const getHTML = ({ styleTags, metaTags, state, content }: Arguments) => { + return ( + html + // Inject the state and the content instead of
+ .replace( + '
', + `
${content}
` + ) + // Inject the meta tags at the start of the + .replace('', `${metaTags}`) + // Inject the style tags at the end of the + .replace('', `${styleTags}`) + ); +}; diff --git a/iris/renderer/index.js b/iris/renderer/index.js new file mode 100644 index 0000000000..7c5bfcdfc4 --- /dev/null +++ b/iris/renderer/index.js @@ -0,0 +1,98 @@ +// @flow +// Server-side renderer for our React code +import React from 'react'; +import ReactDOM from 'react-dom/server'; +import { ServerStyleSheet } from 'styled-components'; +import { + ApolloClient, + createNetworkInterface, + ApolloProvider, + renderToStringWithData, +} from 'react-apollo'; +import { StaticRouter } from 'react-router'; +import { createStore } from 'redux'; +import { createLocalInterface } from 'apollo-local-query'; +import Helmet from 'react-helmet'; +import * as graphql from 'graphql'; + +import getSharedApolloClientOptions from 'shared/graphql/apollo-client-options'; +import schema from '../schema'; +import createLoaders from '../loaders'; +import { getHTML } from './get-html'; + +// Browser shim has to come before any client imports +import './browser-shim'; +const Routes = require('../../src/routes').default; +import { initStore } from '../../src/store'; + +const renderer = (req, res) => { + // Create an Apollo Client with a local network interface + const client = new ApolloClient({ + ssrMode: true, + networkInterface: createLocalInterface(graphql, schema, { + context: { + loaders: createLoaders(), + user: req.user, + }, + }), + ...getSharedApolloClientOptions(), + }); + // Define the initial redux state + const initialReduxState = { + users: { + currentUser: req.user, + }, + }; + // Create the Redux store + const store = initStore(initialReduxState, { + // Inject the server-side client's middleware and reducer + middleware: [client.middleware()], + reducers: { + apollo: client.reducer(), + }, + }); + const context = {}; + // The client-side app will instead use + const frontend = ( + + + + + + ); + // Initialise the styled-components stylesheet and wrap the app with it + const sheet = new ServerStyleSheet(); + renderToStringWithData(sheet.collectStyles(frontend)) + .then(content => { + if (context.url) { + // Somewhere a `` was rendered, so let's redirect server-side + res.redirect(301, context.url); + return; + } + // Get the resulting data + const state = store.getState(); + const helmet = Helmet.renderStatic(); + // Compile the HTML and send it down + res.status(200); + res.send( + getHTML({ + content, + state, + styleTags: sheet.getStyleTags(), + metaTags: + helmet.title.toString() + + helmet.meta.toString() + + helmet.link.toString(), + }) + ); + res.end(); + }) + .catch(err => { + console.log(err); + res.status(500); + res.end(); + throw err; + }); +}; + +export default renderer; diff --git a/iris/utils/s3.js b/iris/utils/s3.js index c153d2ab1c..606c3a8d83 100644 --- a/iris/utils/s3.js +++ b/iris/utils/s3.js @@ -5,9 +5,7 @@ const Uploader = require('s3-image-uploader'); const env = require('node-env-file'); const IS_PROD = process.env.NODE_ENV === 'production'; const path = require('path'); -if (!IS_PROD) { - env(path.resolve(__dirname, '../.env'), { raise: false }); -} +env(path.resolve(__dirname, '../.env'), { raise: false }); let S3_TOKEN = process.env.S3_TOKEN; let S3_SECRET = process.env.S3_SECRET; diff --git a/package.json b/package.json index 74c8260262..bfae4b628d 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "private": true, "devDependencies": { "babel-cli": "^6.24.1", + "babel-plugin-transform-class-properties": "^6.24.1", "cross-env": "^5.0.5", "flow-bin": "^0.43.0", "lint-staged": "^3.3.0", @@ -14,9 +15,11 @@ "raw-loader": "^0.5.1", "react-scripts": "^1.0.0", "rimraf": "^2.6.1", - "uuid": "^3.0.1" + "uuid": "^3.0.1", + "write-file-webpack-plugin": "^4.1.0" }, "dependencies": { + "apollo-local-query": "^0.3.0", "apollo-upload-client": "^5.1.0", "apollo-upload-server": "^2.0.4", "axios": "^0.16.2", @@ -48,10 +51,12 @@ "immutability-helper": "^2.2.0", "json-stringify-pretty-compact": "^1.0.4", "linkify-it": "^2.0.3", + "localstorage-memory": "^1.0.2", "lodash": "^4.17.4", "longjohn": "^0.2.12", "moment": "^2.18.1", "node-env-file": "^0.1.8", + "node-localstorage": "^1.3.0", "optics-agent": "^1.1.2", "passport": "^0.3.2", "passport-facebook": "^2.1.1", @@ -65,7 +70,7 @@ "raven-js": "^3.14.0", "react": "^15.4.1", "react-apollo": "^1.2.0", - "react-app-rewire-styled-components": "^2.0.0", + "react-app-rewire-styled-components": "^3.0.0", "react-app-rewired": "^1.0.5", "react-dom": "^15.4.1", "react-helmet": "5.x", @@ -85,6 +90,7 @@ "rethinkdb-migrate": "^1.1.0", "rethinkdbdash": "^2.3.29", "s3-image-uploader": "^1.0.7", + "serialize-javascript": "^1.4.0", "session-rethinkdb": "^2.0.0", "slate": "^0.20.1", "slate-markdown": "0.1.0", @@ -92,7 +98,7 @@ "string-replace-to-array": "^1.0.3", "stripe": "^4.15.0", "striptags": "2.x", - "styled-components": "2.x", + "styled-components": "2.1.2", "subscriptions-transport-ws": "^0.7.0", "web-push": "^3.2.2" }, @@ -104,7 +110,7 @@ "dev:iris": "cross-env NODE_PATH=./ cross-env NODE_ENV=development cross-env DEBUG=iris*,-iris:resolvers cross-env DIR=iris backpack", "dev:athena": "cross-env NODE_PATH=./ cross-env NODE_ENV=development cross-env DEBUG=athena* cross-env DIR=athena backpack", "dev:hermes": "cross-env NODE_PATH=./ cross-env NODE_ENV=development cross-env DEBUG=hermes* cross-env DIR=hermes backpack", - "build": "npm run build:iris && npm run build:client", + "build": "npm run build:client && npm run build:iris", "prebuild:iris": "rimraf build-iris", "build:iris": "cross-env NODE_PATH=./ cross-env DIR=iris backpack build", "prebuild:athena": "rimraf build-athena", diff --git a/public/index.html b/public/index.html index cbfd01239b..0cf70a726a 100644 --- a/public/index.html +++ b/public/index.html @@ -3,18 +3,11 @@ - - - - Spectrum - - - @@ -23,8 +16,6 @@ - - @@ -41,7 +32,8 @@ i[r] || function() { (i[r].q = i[r].q || []).push(arguments); - }), (i[r].l = 1 * new Date()); + }), + (i[r].l = 1 * new Date()); (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]); a.async = 1; a.src = g; diff --git a/shared/graphql/apollo-client-options.js b/shared/graphql/apollo-client-options.js new file mode 100644 index 0000000000..ea01f4c6a8 --- /dev/null +++ b/shared/graphql/apollo-client-options.js @@ -0,0 +1,65 @@ +// @flow +var apollo = require('react-apollo'), + toIdValue = apollo.toIdValue; + +function dataIdFromObject(result) { + if (result.__typename) { + // Custom Community cache key based on slug + if (result.__typename === 'Community' && !!result.slug) { + return result.__typename + ':' + result.slug; + } + // Custom Channel cache key based on slug and community slug + if ( + result.__typename === 'Channel' && + !!result.slug && + !!result.community && + !!result.community.slug + ) { + return ( + result.__typename + ':' + result.community.slug + ':' + result.slug + ); + } + // This was copied from the default dataIdFromObject + if (result.id !== undefined) { + return result.__typename + ':' + result.id; + } + if (result._id !== undefined) { + return result.__typename + ':' + result._id; + } + } + return null; +} + +var getSharedApolloClientOptions = function getSharedApolloClientOptions() { + return { + queryDeduplication: true, + dataIdFromObject: dataIdFromObject, + customResolvers: { + Query: { + thread: function thread(_, _ref) { + var id = _ref.id; + return toIdValue(dataIdFromObject({ __typename: 'Thread', id: id })); + }, + community: function community(_, _ref2) { + var slug = _ref2.slug; + return toIdValue( + dataIdFromObject({ __typename: 'Community', slug: slug }) + ); + }, + channel: function channel(_, _ref3) { + var channelSlug = _ref3.channelSlug, + communitySlug = _ref3.communitySlug; + return toIdValue( + dataIdFromObject({ + __typename: 'Channel', + slug: channelSlug, + community: { slug: communitySlug }, + }) + ); + }, + }, + }, + }; +}; + +module.exports = getSharedApolloClientOptions; diff --git a/src/actions/authentication.js b/src/actions/authentication.js index 28fb594b48..c897b43824 100644 --- a/src/actions/authentication.js +++ b/src/actions/authentication.js @@ -1,6 +1,5 @@ // @flow import { track, set } from '../helpers/events'; -import { clearApolloStore } from '../api'; import { removeItemFromStorage, storeItem } from '../helpers/localStorage'; import Raven from 'raven-js'; @@ -8,17 +7,20 @@ export const logout = dispatch => { track(`user`, `sign out`, null); // clear localStorage removeItemFromStorage('spectrum'); - // clear Apollo's query cache - clearApolloStore(); - // redirect to home page - window.location.href = - process.env.NODE_ENV === 'production' - ? '/auth/logout' - : 'http://localhost:3001/auth/logout'; - - dispatch({ - type: 'CLEAR_USER', - }); + import('../api') + .then(module => module.clearApolloStore) + .then(clearApolloStore => { + // clear Apollo's query cache + clearApolloStore(); + // redirect to home page + window.location.href = + process.env.NODE_ENV === 'production' + ? '/auth/logout' + : 'http://localhost:3001/auth/logout'; + dispatch({ + type: 'CLEAR_USER', + }); + }); }; export const saveUserDataToLocalStorage = (user: Object) => dispatch => { diff --git a/src/api/constants.js b/src/api/constants.js new file mode 100644 index 0000000000..ad614010cc --- /dev/null +++ b/src/api/constants.js @@ -0,0 +1,14 @@ +export const SERVER_URL = + process.env.NODE_ENV === 'production' + ? `${window.location.protocol}//${window.location.host}` + : 'http://localhost:3001'; + +export const CLIENT_URL = + process.env.NODE_ENV === 'production' + ? `${window.location.protocol}//${window.location.host}` + : 'http://localhost:3000'; + +export const PUBLIC_STRIPE_KEY = + process.env.NODE_ENV === 'production' + ? 'pk_live_viV7X5XXD1sw8aN2NgQjiff6' + : 'pk_test_8aqk2JeScufGk1zAMe5GxaRq'; diff --git a/src/api/index.js b/src/api/index.js index 41bd03b672..936f3d72c9 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -13,6 +13,7 @@ import { addGraphQLSubscriptions, } from 'subscriptions-transport-ws'; import introspectionQueryResultData from './schema.json'; +import getSharedApolloClientOptions from 'shared/graphql/apollo-client-options'; const IS_PROD = process.env.NODE_ENV === 'production'; const wsClient = new SubscriptionClient( @@ -44,48 +45,11 @@ const fragmentMatcher = new IntrospectionFragmentMatcher({ export const client = new ApolloClient({ networkInterface: networkInterfaceWithSubscriptions, fragmentMatcher, - queryDeduplication: true, - dataIdFromObject: result => { - if (result.__typename) { - // Custom Community cache key based on slug - if (result.__typename === 'Community' && !!result.slug) { - return `${result.__typename}:${result.slug}`; - } - // Custom Channel cache key based on slug and community slug - if ( - result.__typename === 'Channel' && - !!result.slug && - !!result.community && - !!result.community.slug - ) { - return `${result.__typename}:${result.community.slug}:${result.slug}`; - } - // This was copied from the default dataIdFromObject - if (result.id !== undefined) { - return `${result.__typename}:${result.id}`; - } - if (result._id !== undefined) { - return `${result.__typename}:${result._id}`; - } - } - return null; - }, - customResolvers: { - Query: { - thread: (_, { id }) => - toIdValue(client.dataIdFromObject({ __typename: 'Thread', id })), - community: (_, { slug }) => - toIdValue(client.dataIdFromObject({ __typename: 'Community', slug })), - channel: (_, { channelSlug, communitySlug }) => - toIdValue( - client.dataIdFromObject({ - __typename: 'Channel', - slug: channelSlug, - community: { slug: communitySlug }, - }) - ), - }, + initialState: window.__SERVER_STATE__ && { + apollo: window.__SERVER_STATE__.apollo, }, + ssrForceFetchDelay: 100, + ...getSharedApolloClientOptions(), }); export const clearApolloStore = () => { @@ -95,18 +59,3 @@ export const clearApolloStore = () => { console.log('error clearing store'); } }; - -export const SERVER_URL = - process.env.NODE_ENV === 'production' - ? `${window.location.protocol}//${window.location.host}` - : 'http://localhost:3001'; - -export const CLIENT_URL = - process.env.NODE_ENV === 'production' - ? `${window.location.protocol}//${window.location.host}` - : 'http://localhost:3000'; - -export const PUBLIC_STRIPE_KEY = - process.env.NODE_ENV === 'production' - ? 'pk_live_viV7X5XXD1sw8aN2NgQjiff6' - : 'pk_test_8aqk2JeScufGk1zAMe5GxaRq'; diff --git a/src/components/buttons/style.js b/src/components/buttons/style.js index bee70baae7..4d20a481b5 100644 --- a/src/components/buttons/style.js +++ b/src/components/buttons/style.js @@ -105,10 +105,11 @@ export const StyledTextButton = styled(StyledSolidButton)` `; export const StyledOutlineButton = styled(StyledTextButton)` - box-shadow: inset 0 0 0 2px ${props => - props.disabled - ? props.theme.inactive - : eval(`props.theme.${props.color ? props.color : 'brand.default'}`)}; + box-shadow: inset 0 0 0 2px + ${props => + props.disabled + ? props.theme.inactive + : eval(`props.theme.${props.color ? props.color : 'brand.default'}`)}; color: ${props => props.disabled ? props.theme.inactive @@ -123,12 +124,13 @@ export const StyledOutlineButton = styled(StyledTextButton)` : eval( `props.theme.${props.hoverColor ? props.hoverColor : 'brand.alt'}` )}; - box-shadow: inset 0 0 0 2px ${props => - props.disabled - ? props.theme.inactive - : eval( - `props.theme.${props.hoverColor ? props.hoverColor : 'brand.alt'}` - )}; + box-shadow: inset 0 0 0 2px + ${props => + props.disabled + ? props.theme.inactive + : eval( + `props.theme.${props.hoverColor ? props.hoverColor : 'brand.alt'}` + )}; transition: ${Transition.hover.on}; } `; diff --git a/src/components/editForm/community.js b/src/components/editForm/community.js index e0c85124aa..505c96b587 100644 --- a/src/components/editForm/community.js +++ b/src/components/editForm/community.js @@ -331,8 +331,9 @@ class CommunityWithData extends Component { sp.chat/ - {nameError && - Community names can be up to 20 characters long.} + {nameError && ( + Community names can be up to 20 characters long. + )} - {descriptionError && + {descriptionError && ( Oop, that's more than 140 characters - try trimming that up. - } + + )} - {!modalProps.isPro && + {!modalProps.isPro && ( Pro communities can create private channels to protect threads, messages, and manually approve all new members. Learn more - } + + )} {modalProps.isPro && - isPrivate && + isPrivate && ( Only approved people on Spectrum can see the threads, messages, and members in this channel. You can manually approve users who request to join this channel. - } + + )} {modalProps.isPro && - !isPrivate && + !isPrivate && ( Anyone on Spectrum can join this channel, post threads and messages, and will be able to see other members. - } + + )} Cancel @@ -337,10 +343,11 @@ class CreateChannelModal extends Component { - {createError && + {createError && ( Please fix any errors above before creating this community. - } + + )} diff --git a/src/components/modals/UpgradeModal/index.js b/src/components/modals/UpgradeModal/index.js index 47d201986c..55d99b30fc 100644 --- a/src/components/modals/UpgradeModal/index.js +++ b/src/components/modals/UpgradeModal/index.js @@ -103,7 +103,7 @@ class UpgradeModal extends React.Component { title={!user.isPro ? 'Upgrade to Pro' : 'Manage your Subscription'} closeModal={this.closeModal} > - {user.isPro && + {user.isPro && (
We're sorry to see you go! If you are having trouble and want to @@ -128,17 +128,17 @@ class UpgradeModal extends React.Component { Get Support - {upgradeError && + {upgradeError && ( - - {upgradeError} - - } -
} + {upgradeError} + + )} + + )} {!user.isPro && } diff --git a/src/components/modals/styles.js b/src/components/modals/styles.js index 9d0bd15ece..0b12515993 100644 --- a/src/components/modals/styles.js +++ b/src/components/modals/styles.js @@ -125,7 +125,7 @@ export const Notice = styled(Description)` padding: 8px 16px; margin: 8px 0; border-radius: 4px; - background: #FFF1CC; + background: #fff1cc; border: 1px solid #ffd566; color: #715818; `; diff --git a/src/components/profile/thread.js b/src/components/profile/thread.js index c52c574b20..1b23028a01 100644 --- a/src/components/profile/thread.js +++ b/src/components/profile/thread.js @@ -19,7 +19,12 @@ class ThreadWithData extends Component { } return ( - + => { return ( - + - - - {props.data.content.title} - - {props.isPinned && + + {props.data.content.title} + {props.isPinned && ( - } + + )} {attachmentsExist && attachments.map((attachment, i) => { @@ -68,17 +77,17 @@ const ThreadFeedCardPure = (props: Object): React$Element => { })} {participantsExist && } - {props.data.messageCount > 0 - ? - - - {props.data.messageCount} - - - : - - Fresh thread! - } + {props.data.messageCount > 0 ? ( + + + {props.data.messageCount} + + ) : ( + + + Fresh thread! + + )} diff --git a/src/components/upsell/index.js b/src/components/upsell/index.js index 4ac9dd5f16..e671c0c8c4 100644 --- a/src/components/upsell/index.js +++ b/src/components/upsell/index.js @@ -9,7 +9,7 @@ import compose from 'recompose/compose'; import Icon from '../../components/icons'; import FullscreenView from '../../components/fullscreenView'; import { getItemFromStorage, storeItem } from '../../helpers/localStorage'; -import { SERVER_URL, PUBLIC_STRIPE_KEY } from '../../api'; +import { SERVER_URL, PUBLIC_STRIPE_KEY } from '../../api/constants'; import { addToastWithTimeout } from '../../actions/toasts'; import { openModal } from '../../actions/modals'; import { Avatar } from '../avatar'; @@ -52,14 +52,8 @@ export const NullCard = props => { return ( - {props.heading && - - {props.heading} - } - {props.copy && - - {props.copy} - } + {props.heading && {props.heading}} + {props.copy && {props.copy}} {props.children} @@ -70,38 +64,28 @@ export const MiniNullCard = props => { return ( - {props.emoji && + {props.emoji && ( {props.emoji} - } - {props.heading && - - {props.heading} - } - {props.copy && - - {props.copy} - } + + )} + {props.heading && {props.heading}} + {props.copy && {props.copy}} {props.children} ); }; -export const NullState = props => +export const NullState = props => ( - {props.heading && - - {props.heading} - } - {props.copy && - - {props.copy} - } + {props.heading && {props.heading}} + {props.copy && {props.copy}} {props.children} - ; + +); const login = method => { // log the user in and return them to this page @@ -134,12 +118,8 @@ export const UpsellCreateCommunity = ({ close }) => { return ( - - {title} - - - {subtitle} - + {title} + {subtitle} @@ -197,12 +177,8 @@ export class UpsellSignIn extends Component { - - {title || 'Find your people.'} - - - {subtitle} - + {title || 'Find your people.'} + {subtitle} this.toggleSigningIn('signup')}> Sign up @@ -210,7 +186,8 @@ export class UpsellSignIn extends Component { Already have an account?{' '} this.toggleSigningIn('login')}> - {' '}Log in + {' '} + Log in @@ -230,9 +207,7 @@ export const UpsellJoinChannelState = ({ return ( Ready to join the conversation? - - Join ~{channel.name} to get involved! - + Join ~{channel.name} to get involved! } + + )} {// has user already requested to join? - currentUser && isPending - ? subscribe(channel.id)} - icon="minus" - loading={loading} - label - > - Cancel request - - : currentUser && + currentUser && isPending ? ( + subscribe(channel.id)} + icon="minus" + loading={loading} + label + > + Cancel request + + ) : ( + currentUser && ( } + + ) + )} ); }; @@ -324,12 +303,8 @@ export const Upsell404Channel = ({ return ( - - {title} - - - {subtitle} - + {title} + {subtitle} - } + create ? ( + + Take me home + + ) : ( + + + + )} {create && } @@ -443,9 +416,7 @@ export class UpsellNewUser extends Component { ๐Ÿ‘‹ - - Howdy, {user.name}! - + Howdy, {user.name}! Spectrum is a place where communities live. It's easy to follow the things that you care about most, or even create your own community to @@ -601,10 +572,7 @@ class UpsellUpgradeToProPure extends Component { - {!upgradeError && - - {upgradeError} - } + {!upgradeError && {upgradeError}} ); } @@ -642,7 +610,7 @@ export const UpsellNullNotifications = () => { ); }; -export const UpsellReload = () => +export const UpsellReload = () => ( - ; + +); diff --git a/src/components/upsell/style.js b/src/components/upsell/style.js index 491cd77506..87d215dbe1 100644 --- a/src/components/upsell/style.js +++ b/src/components/upsell/style.js @@ -88,9 +88,7 @@ export const MiniSubtitle = styled(Subtitle)` line-height: 1.4; `; -export const SmallTitle = styled(Title)` - font-size: 18px; -`; +export const SmallTitle = styled(Title)`font-size: 18px;`; export const LargeTitle = styled(Title)` font-size: 40px; @@ -99,13 +97,9 @@ export const LargeTitle = styled(Title)` margin-bottom: 16px; `; -export const SmallSubtitle = styled(Subtitle)` - font-size: 15px; -`; +export const SmallSubtitle = styled(Subtitle)`font-size: 15px;`; -export const LargeSubtitle = styled(Subtitle)` - font-size: 20px; -`; +export const LargeSubtitle = styled(Subtitle)`font-size: 20px;`; export const Cost = styled(Subtitle)` margin-top: 8px; @@ -344,9 +338,9 @@ export const SigninButton = styled.a` `; export const ButtonTwitter = styled(SigninButton)` - background: ${props => + background: ${props => props.preferred ? props.theme.social.twitter.default : 'none'}; - color: ${props => + color: ${props => props.whitebg ? props.theme.social.twitter.default : props.preferred ? '#fff' : 'rgba(255,255,255,0.8)'}; @@ -355,16 +349,16 @@ export const ButtonTwitter = styled(SigninButton)` color: ${props => props.theme.social.twitter.default}; } - &:hover { - color: ${props => - props.whitebg ? props.theme.social.twitter.default : '#fff'} - } + &:hover { + color: ${props => + props.whitebg ? props.theme.social.twitter.default : '#fff'}; + } `; export const ButtonFacebook = styled(SigninButton)` - background: ${props => + background: ${props => props.preferred ? props.theme.social.facebook.default : 'none'}; - color: ${props => + color: ${props => props.whitebg ? props.theme.social.facebook.default : props.preferred ? '#fff' : 'rgba(255,255,255,0.8)'}; @@ -373,16 +367,16 @@ export const ButtonFacebook = styled(SigninButton)` color: ${props => props.theme.social.facebook.default}; } - &:hover { - color: ${props => - props.whitebg ? props.theme.social.facebook.default : '#fff'} - } + &:hover { + color: ${props => + props.whitebg ? props.theme.social.facebook.default : '#fff'}; + } `; export const ButtonGoogle = styled(SigninButton)` - background: ${props => + background: ${props => props.preferred ? props.theme.social.google.default : 'none'}; - color: ${props => + color: ${props => props.whitebg ? props.theme.social.google.default : props.preferred ? '#fff' : 'rgba(255,255,255,0.8)'}; @@ -391,8 +385,8 @@ export const ButtonGoogle = styled(SigninButton)` color: ${props => props.theme.social.google.default}; } - &:hover { - color: ${props => - props.whitebg ? props.theme.social.google.default : '#fff'} - } + &:hover { + color: ${props => + props.whitebg ? props.theme.social.google.default : '#fff'}; + } `; diff --git a/src/helpers/events.js b/src/helpers/events.js index 2d2fb2c47c..ee5cefcc45 100644 --- a/src/helpers/events.js +++ b/src/helpers/events.js @@ -55,33 +55,3 @@ export const track = (category, action, label) => { } } }; - -export const crashReporter = store => next => action => { - // Handle THROW_ERROR actions - if (action.type === 'THROW_ERROR') { - console.error('Caught an exception!', action.err); - if (process.env.NODE_ENV !== 'development') { - Raven.captureException(action.err, { - extra: { - action, - state: store.getState(), - }, - }); - } - } - - try { - return next(action); - } catch (err) { - console.error('Caught an exception!', err); - if (process.env.NODE_ENV !== 'development') { - Raven.captureException(err, { - extra: { - action, - state: store.getState(), - }, - }); - } - throw err; - } -}; diff --git a/src/helpers/notifications.js b/src/helpers/notifications.js index 7e2b03d1eb..04dbb1009b 100644 --- a/src/helpers/notifications.js +++ b/src/helpers/notifications.js @@ -45,7 +45,14 @@ export const constructMessage = notification => { return ( {sender.name} replied to your{' '} - thread: + + thread + : ); default: @@ -80,11 +87,7 @@ export const constructContent = notification => { const { type, sender, content } = notification; switch (type) { case 'NEW_THREAD': - return ( -

- {content.excerpt} -

- ); + return

{content.excerpt}

; case 'NEW_MESSAGE': return (
@@ -93,9 +96,7 @@ export const constructContent = notification => {
- - {content.excerpt} - + {content.excerpt}
); default: diff --git a/src/helpers/sentry-redux-middleware.js b/src/helpers/sentry-redux-middleware.js new file mode 100644 index 0000000000..01dad9f7dc --- /dev/null +++ b/src/helpers/sentry-redux-middleware.js @@ -0,0 +1,33 @@ +import Raven from 'raven-js'; + +const crashReporter = store => next => action => { + // Handle THROW_ERROR actions + if (action.type === 'THROW_ERROR') { + console.error('Caught an exception!', action.err); + if (process.env.NODE_ENV !== 'development') { + Raven.captureException(action.err, { + extra: { + action, + state: store.getState(), + }, + }); + } + } + + try { + return next(action); + } catch (err) { + console.error('Caught an exception!', err); + if (process.env.NODE_ENV !== 'development') { + Raven.captureException(err, { + extra: { + action, + state: store.getState(), + }, + }); + } + throw err; + } +}; + +export default crashReporter; diff --git a/src/helpers/signed-out-fallback.js b/src/helpers/signed-out-fallback.js index d3592c551e..89e90c122d 100644 --- a/src/helpers/signed-out-fallback.js +++ b/src/helpers/signed-out-fallback.js @@ -21,12 +21,13 @@ const ConnectedSwitch = connect(state => ({ }))(Switch); const signedOutFallback = (Component, FallbackComponent) => { - return props => + return props => ( ; + /> + ); }; export default signedOutFallback; diff --git a/src/index.js b/src/index.js index 045e83f53c..88f44e874b 100644 --- a/src/index.js +++ b/src/index.js @@ -2,8 +2,6 @@ import React from 'react'; import ReactDOM from 'react-dom'; //$FlowFixMe -import { ThemeProvider } from 'styled-components'; -//$FlowFixMe import { ApolloProvider } from 'react-apollo'; //$FlowFixMe import { Router } from 'react-router'; @@ -31,26 +29,31 @@ if (thread) { } const existingUser = getItemFromStorage('spectrum'); -let store; +let initialState; if (existingUser) { - store = initStore({ + initialState = { users: { currentUser: existingUser.currentUser, }, - }); + }; } else { - store = initStore({}); + initialState = {}; } +const store = initStore(window.__SERVER_STATE__ || initialState, { + middleware: [client.middleware()], + reducers: { + apollo: client.reducer(), + }, +}); + function render() { return ReactDOM.render( - - - - - - - , + + + + + , document.querySelector('#root') ); } diff --git a/src/reducers/index.js b/src/reducers/index.js index 90ef65392f..db12c5d507 100644 --- a/src/reducers/index.js +++ b/src/reducers/index.js @@ -1,5 +1,4 @@ import { combineReducers } from 'redux'; -import { client } from '../api'; import users from './users'; import composer from './composer'; import modals from './modals'; @@ -8,15 +7,18 @@ import directMessageThreads from './directMessageThreads'; import gallery from './gallery'; import newUserOnboarding from './newUserOnboarding'; -const apollo = client.reducer(); +// Allow dependency injection of extra reducers, we need this for SSR +const getReducers = extraReducers => { + return combineReducers({ + users, + modals, + toasts, + directMessageThreads, + gallery, + composer, + newUserOnboarding, + ...extraReducers, + }); +}; -export default combineReducers({ - users, - modals, - toasts, - directMessageThreads, - gallery, - apollo, - composer, - newUserOnboarding, -}); +export default getReducers; diff --git a/src/routes.js b/src/routes.js index b7b490b4de..26c808d472 100644 --- a/src/routes.js +++ b/src/routes.js @@ -5,8 +5,8 @@ import { Route, Switch, Redirect } from 'react-router'; //$FlowFixMe import styled, { ThemeProvider } from 'styled-components'; import generateMetaInfo from 'shared/generate-meta-info'; +import { theme } from './components/theme'; import { FlexCol } from './components/globals'; -import { history } from './helpers/history'; import ScrollManager from './components/scrollManager'; import Head from './components/head'; import ModalRoot from './components/modals/modalRoot'; @@ -46,7 +46,7 @@ const Body = styled(FlexCol)` @media (max-width: 768px) { height: 100vh; - max-height: ${window.innerHeight}px; + max-height: 100vh; } `; @@ -55,99 +55,115 @@ class Routes extends Component { const { title, description } = generateMetaInfo(); return ( - - - {/* Default meta tags, get overriden by anything further down the tree */} - - {/* Global navigation, notifications, message notifications, etc */} + + + + {/* Default meta tags, get overriden by anything further down the tree */} + + {/* Global navigation, notifications, message notifications, etc */} - + - - - - + + + + - {/* - Switch only renders the first match. Subrouting happens downstream - https://reacttraining.com/react-router/web/api/Switch - */} - - - + {/* + Switch only renders the first match. Subrouting happens downstream + https://reacttraining.com/react-router/web/api/Switch + */} + + + ( + + ))} + /> - {/* Public Business Pages */} - - - - - + {/* Public Business Pages */} + + + + + - {/* App Pages */} - - } - /> - - - - - - - } /> - - - + {/* App Pages */} + ( + + ))} + /> + } + /> + + + ( + + ))} + /> + ( + + ))} + /> + ( + + ))} + /> + + } /> + + ( + + ))} + /> + ( + + ))} + /> - {/* - We check communitySlug last to ensure none of the above routes - pass. We handle null communitySlug values downstream by either - redirecting to home or showing a 404 - */} - - - - - - - + {/* + We check communitySlug last to ensure none of the above routes + pass. We handle null communitySlug values downstream by either + redirecting to home or showing a 404 + */} + + + + + + + + ); } } diff --git a/src/store/index.js b/src/store/index.js index 85fae801e7..2b65d3be75 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,9 +1,8 @@ /* eslint-disable */ import { createStore, compose, applyMiddleware } from 'redux'; import thunkMiddleware from 'redux-thunk'; -import { crashReporter } from '../helpers/events'; -import reducers from '../reducers'; -import { client } from '../api'; +import crashReporter from '../helpers/sentry-redux-middleware'; +import getReducers from '../reducers'; // this enables the chrome devtools for redux only in development const composeEnhancers = @@ -13,21 +12,22 @@ const composeEnhancers = compose; // init the store with the thunkMiddleware which allows us to make async actions play nicely with the store -export const initStore = initialState => { +// Allow dependency injection of extra reducers and middleware, we need this for SSR +export const initStore = (initialState, { middleware, reducers }) => { if (initialState) { return createStore( - reducers, + getReducers(reducers), initialState, composeEnhancers( - applyMiddleware(client.middleware(), thunkMiddleware, crashReporter) + applyMiddleware(...middleware, thunkMiddleware, crashReporter) ) ); } else { return createStore( - reducers, + getReducers(reducers), {}, composeEnhancers( - applyMiddleware(client.middleware(), thunkMiddleware, crashReporter) + applyMiddleware(...middleware, thunkMiddleware, crashReporter) ) ); } diff --git a/src/views/channel/index.js b/src/views/channel/index.js index 7e0503d23d..10021eab1d 100644 --- a/src/views/channel/index.js +++ b/src/views/channel/index.js @@ -199,35 +199,40 @@ class ChannelViewPure extends Component { {loggedInUser && - hasRights && + hasRights && ( } + /> + )} {loggedInUser && - isOwner && - } + isOwner && ( + + )} - {!loggedInUser && - } + {!loggedInUser && ( + + )} {loggedInUser && - hasRights && - !channel.community.isPro && + hasRights && + !channel.community.isPro && ( } + /> + )} {loggedInUser && - hasRights && - channel.community.isPro && + hasRights && + channel.community.isPro && ( } + /> + )} - {!isMobile && + {!isMobile && ( - } + + )} {!isMobile && } diff --git a/src/views/community/components/listCard.js b/src/views/community/components/listCard.js index 0c93356b94..7787a74e4e 100644 --- a/src/views/community/components/listCard.js +++ b/src/views/community/components/listCard.js @@ -61,16 +61,17 @@ const ListCardPure = ({ data, dispatch, currentUser }) => { Channels - {data.community.communityPermissions.isOwner && + {data.community.communityPermissions.isOwner && ( dispatch(openModal('CREATE_CHANNEL_MODAL', data.community))} - />} + /> + )} - {!currentUser && + {!currentUser && ( {channels.map(channel => { return ( @@ -84,17 +85,19 @@ const ListCardPure = ({ data, dispatch, currentUser }) => { withDescription={false} channelIcon meta={ - channel.metaData.members > 1 - ? `${channel.metaData.members} members ${data.community - .communityPermissions.isOwner && - channel.pendingUsers.length > 0 - ? `(${channel.pendingUsers.length} pending)` - : ``}` - : `${channel.metaData.members} member ${data.community - .communityPermissions.isOwner && - channel.pendingUsers.length > 0 - ? `(${channel.pendingUsers.length} pending)` - : ``}` + channel.metaData.members > 1 ? ( + `${channel.metaData.members} members ${data.community + .communityPermissions.isOwner && + channel.pendingUsers.length > 0 + ? `(${channel.pendingUsers.length} pending)` + : ``}` + ) : ( + `${channel.metaData.members} member ${data.community + .communityPermissions.isOwner && + channel.pendingUsers.length > 0 + ? `(${channel.pendingUsers.length} pending)` + : ``}` + ) } > @@ -102,10 +105,11 @@ const ListCardPure = ({ data, dispatch, currentUser }) => { ); })} - } + + )} {currentUser && - !data.community.communityPermissions.isMember && + !data.community.communityPermissions.isMember && ( {channels.map(channel => { return ( @@ -119,17 +123,19 @@ const ListCardPure = ({ data, dispatch, currentUser }) => { withDescription={false} channelIcon meta={ - channel.metaData.members > 1 - ? `${channel.metaData.members} members ${data.community - .communityPermissions.isOwner && - channel.pendingUsers.length > 0 - ? `(${channel.pendingUsers.length} pending)` - : ``}` - : `${channel.metaData.members} member ${data.community - .communityPermissions.isOwner && - channel.pendingUsers.length > 0 - ? `(${channel.pendingUsers.length} pending)` - : ``}` + channel.metaData.members > 1 ? ( + `${channel.metaData.members} members ${data.community + .communityPermissions.isOwner && + channel.pendingUsers.length > 0 + ? `(${channel.pendingUsers.length} pending)` + : ``}` + ) : ( + `${channel.metaData.members} member ${data.community + .communityPermissions.isOwner && + channel.pendingUsers.length > 0 + ? `(${channel.pendingUsers.length} pending)` + : ``}` + ) } > @@ -137,10 +143,11 @@ const ListCardPure = ({ data, dispatch, currentUser }) => { ); })} - } + + )} {joinedChannels && - data.community.communityPermissions.isMember && + data.community.communityPermissions.isMember && ( {joinedChannels.map(channel => { return ( @@ -154,17 +161,19 @@ const ListCardPure = ({ data, dispatch, currentUser }) => { withDescription={false} channelIcon meta={ - channel.metaData.members > 1 - ? `${channel.metaData.members} members ${data.community - .communityPermissions.isOwner && - channel.pendingUsers.length > 0 - ? `(${channel.pendingUsers.length} pending)` - : ``}` - : `${channel.metaData.members} member ${data.community - .communityPermissions.isOwner && - channel.pendingUsers.length > 0 - ? `(${channel.pendingUsers.length} pending)` - : ``}` + channel.metaData.members > 1 ? ( + `${channel.metaData.members} members ${data.community + .communityPermissions.isOwner && + channel.pendingUsers.length > 0 + ? `(${channel.pendingUsers.length} pending)` + : ``}` + ) : ( + `${channel.metaData.members} member ${data.community + .communityPermissions.isOwner && + channel.pendingUsers.length > 0 + ? `(${channel.pendingUsers.length} pending)` + : ``}` + ) } > @@ -172,10 +181,11 @@ const ListCardPure = ({ data, dispatch, currentUser }) => { ); })} - } + + )} {nonJoinedChannels.length > 0 && - data.community.communityPermissions.isMember && + data.community.communityPermissions.isMember && ( Additional Channels @@ -194,9 +204,10 @@ const ListCardPure = ({ data, dispatch, currentUser }) => { })} - } + + )} - {data.community.communityPermissions.isOwner && + {data.community.communityPermissions.isOwner && ( @@ -204,7 +215,8 @@ const ListCardPure = ({ data, dispatch, currentUser }) => { > Create a Channel - } + + )} ); } else { diff --git a/src/views/community/index.js b/src/views/community/index.js index 0058a53ee9..1b9db42822 100644 --- a/src/views/community/index.js +++ b/src/views/community/index.js @@ -203,18 +203,20 @@ class CommunityViewPure extends Component { {isLoggedIn && - (!community.communityPermissions.isOwner && - community.communityPermissions.isMember) && + (!community.communityPermissions.isOwner && + community.communityPermissions.isMember) && ( this.toggleMembership(community.id)} > Leave {community.name} - } - {!isMobile && + + )} + {!isMobile && ( } + /> + )} @@ -249,33 +251,34 @@ class CommunityViewPure extends Component { // and is a member of the community, they should see a // new thread composer isLoggedIn && - selectedView === 'threads' && - isOwnerOrMember && + selectedView === 'threads' && + isOwnerOrMember && ( } + /> + )} {// if the user is logged in but doesn't own the community // or isn't a member yet, prompt them to join the community isLoggedIn && - !isOwnerOrMember && + !isOwnerOrMember && ( } + /> + )} {// if the user hasn't signed up yet, show them a spectrum // upsell signup prompt !isLoggedIn && - selectedView === 'threads' && - } + selectedView === 'threads' && ( + + )} {// thread list - selectedView === 'threads' && + selectedView === 'threads' && ( } + /> + )} {// members grid - selectedView === 'members' && - } + selectedView === 'members' && ( + + )} {//search selectedView === 'search' && } @@ -325,11 +330,12 @@ class CommunityViewPure extends Component { return ( - {!isMobile && + {!isMobile && ( - } + + )} {!isMobile && } diff --git a/src/views/community/style.js b/src/views/community/style.js index 31fb75d8b3..990cdf96f1 100644 --- a/src/views/community/style.js +++ b/src/views/community/style.js @@ -18,7 +18,7 @@ export const LogoutButton = styled(Button)` background-image: none; background-color: ${props => props.theme.text.alt}; - &:hover{ + &:hover { background-color: ${props => props.theme.warn.default}; } @@ -30,9 +30,7 @@ export const LogoutButton = styled(Button)` export const CoverRow = styled(FlexRow)` align-items: flex-start; -${/* See class .flexy below - there's a hack on this element bc reasons ๐Ÿ™„ */ ''} - - > .inset { + ${/* See class .flexy below - there's a hack on this element bc reasons ๐Ÿ™„ */ ''} > .inset { position: relative; top: -64px; @@ -57,8 +55,7 @@ export const CoverColumn = styled(FlexCol)` max-width: 1024px; padding-top: 32px; -${/* For some goddamn reason, CoverRow will *not* take this property... ughhhhhhhhh */ ''} - > .flexy { + ${/* For some goddamn reason, CoverRow will *not* take this property... ughhhhhhhhh */ ''} > .flexy { display: flex; } @@ -160,7 +157,7 @@ export const Segment = styled(FlexRow)` border-left: 2px solid ${props => props.theme.border.default}; } - &:hover{ + &:hover { color: ${props => props.selected ? props.theme.text.default : props.theme.text.default}; } @@ -183,8 +180,8 @@ export const SearchContainer = styled(Card)` &:hover { transition: none; - box-shadow: ${Shadow.high} ${({ theme }) => - hexa(theme.text.placeholder, 0.5)}; + box-shadow: ${Shadow.high} + ${({ theme }) => hexa(theme.text.placeholder, 0.5)}; } @media (max-width: 768px) { diff --git a/src/views/communitySettings/components/upgradeCommunity.js b/src/views/communitySettings/components/upgradeCommunity.js index c2da49d1d5..38573ce98e 100644 --- a/src/views/communitySettings/components/upgradeCommunity.js +++ b/src/views/communitySettings/components/upgradeCommunity.js @@ -7,7 +7,7 @@ import { connect } from 'react-redux'; // $FlowFixMe import compose from 'recompose/compose'; import StripeCheckout from 'react-stripe-checkout'; -import { PUBLIC_STRIPE_KEY } from '../../../api'; +import { PUBLIC_STRIPE_KEY } from '../../../api/constants'; import { upgradeCommunityMutation } from '../../../api/community'; import { addToastWithTimeout } from '../../../actions/toasts'; import { openModal } from '../../../actions/modals'; @@ -168,10 +168,11 @@ class UpsellUpgradeCommunityPrivateChannelPure extends Component { return ( - {community.communityPermissions.isOwner && + {community.communityPermissions.isOwner && ( } + + )} ); } diff --git a/src/views/communitySettings/style.js b/src/views/communitySettings/style.js index 93a5347ca0..a485e753b4 100644 --- a/src/views/communitySettings/style.js +++ b/src/views/communitySettings/style.js @@ -32,9 +32,7 @@ export const MoreLink = styled(Link)` color: ${({ theme }) => theme.brand.alt}; `; -export const StyledCard = styled(Card)` - padding: 16px 16px 16px 20px; -`; +export const StyledCard = styled(Card)`padding: 16px 16px 16px 20px;`; export const ButtonContainer = styled.div` display: flex; @@ -132,13 +130,9 @@ export const CustomMessageTextAreaStyles = { fontSize: '16px', }; -export const Title = styled(H1)` - font-size: 20px; -`; +export const Title = styled(H1)`font-size: 20px;`; -export const Pitch = styled(FlexCol)` - margin: 0 0 32px 0; -`; +export const Pitch = styled(FlexCol)`margin: 0 0 32px 0;`; export const PitchItem = styled(FlexCol)` display: inline-block; diff --git a/src/views/explore/style.js b/src/views/explore/style.js index 8656f3ad5a..da5c104b45 100644 --- a/src/views/explore/style.js +++ b/src/views/explore/style.js @@ -70,11 +70,11 @@ export const ViewSubtitle = styled(H2)` `; export const ListCard = styled(StyledCard)` -padding: 0; -@media (max-width: 768px) { - display: flex; - margin-bottom: 32px; -} + padding: 0; + @media (max-width: 768px) { + display: flex; + margin-bottom: 32px; + } `; export const Section = styled(FlexCol)` @@ -157,7 +157,8 @@ export const Row = styled(ScrollRow)` overflow-x: scroll; align-items: flex-start; - &:after, &:before{ + &:after, + &:before { content: ''; display: inline-block; flex: 0 0 32px; @@ -182,7 +183,7 @@ export const Item = styled(FlexCol)` &:hover { box-shadow: ${Shadow.high} ${props => - hexa(props.theme.text.placeholder, 1)}; + hexa(props.theme.text.placeholder, 1)}; transition: ${Transition.hover.on}; opacity: 1; } @@ -269,7 +270,7 @@ export const SearchWrapper = styled(Card)` transition: ${Transition.hover.off}; z-index: ${zIndex.search}; - &:hover{ + &:hover { box-shadow: ${Shadow.high} ${props => hexa(props.theme.bg.reverse, 0.25)}; transition: ${Transition.hover.on}; } @@ -280,8 +281,7 @@ export const SearchInputWrapper = styled(FlexRow)` color: ${props => props.theme.text.placeholder}; `; -export const SearchIcon = styled(Icon)` -`; +export const SearchIcon = styled(Icon)``; export const SearchInput = styled.input` font-size: 16px; @@ -371,17 +371,12 @@ export const SearchLink = styled(Link)` display: flex; align-items: center; width: 100%; - ${Truncate()} - padding: 8px 16px 8px 8px; + ${Truncate()} padding: 8px 16px 8px 8px; `; -export const SearchResultImage = styled(Avatar)` - margin: 4px 6px 8px 4px; -`; +export const SearchResultImage = styled(Avatar)`margin: 4px 6px 8px 4px;`; -export const SearchResultMetaWrapper = styled(FlexCol)` - margin-left: 16px; -`; +export const SearchResultMetaWrapper = styled(FlexCol)`margin-left: 16px;`; export const SearchResultName = styled.h2` font-size: 16px; diff --git a/src/views/login/index.js b/src/views/login/index.js index 7ff178d12b..643ceba14a 100644 --- a/src/views/login/index.js +++ b/src/views/login/index.js @@ -3,7 +3,7 @@ import React, { Component } from 'react'; import Icon from '../../components/icons'; import FullscreenView from '../../components/fullscreenView'; import { getItemFromStorage, storeItem } from '../../helpers/localStorage'; -import { SERVER_URL, CLIENT_URL } from '../../api'; +import { SERVER_URL, CLIENT_URL } from '../../api/constants'; import { LargeTitle, LargeSubtitle, @@ -73,15 +73,11 @@ export class Login extends Component { - - {viewTitle} - - - {viewSubtitle} - + {viewTitle} + {viewSubtitle} - {preferredSigninMethod && + {preferredSigninMethod && ( {verb} with Google - } + + )} - {!preferredSigninMethod && + {!preferredSigninMethod && ( {verb} with Google - } + + )} diff --git a/src/views/login/style.js b/src/views/login/style.js index ada98e11a7..1162d0f227 100644 --- a/src/views/login/style.js +++ b/src/views/login/style.js @@ -32,9 +32,7 @@ export const LargeTitle = styled(Title)` margin-bottom: 16px; `; -export const SmallTitle = styled(Title)` - font-size: 18px; -`; +export const SmallTitle = styled(Title)`font-size: 18px;`; export const MiniTitle = styled(Title)` font-weight: 700; @@ -76,9 +74,7 @@ export const Subtitle = styled.h2` } `; -export const LargeSubtitle = styled(Subtitle)` - font-size: 20px; -`; +export const LargeSubtitle = styled(Subtitle)`font-size: 20px;`; export const MiniSubtitle = styled(Subtitle)` font-weight: 600; @@ -87,9 +83,7 @@ export const MiniSubtitle = styled(Subtitle)` line-height: 1.4; `; -export const SmallSubtitle = styled(Subtitle)` - font-size: 15px; -`; +export const SmallSubtitle = styled(Subtitle)`font-size: 15px;`; export const Cost = styled(Subtitle)` margin-top: 8px; @@ -322,9 +316,9 @@ export const SigninButton = styled.a` `; export const ButtonTwitter = styled(SigninButton)` - background: ${props => + background: ${props => props.preferred ? props.theme.social.twitter.default : 'none'}; - color: ${props => + color: ${props => props.whitebg ? props.theme.social.twitter.default : props.preferred ? '#fff' : 'rgba(255,255,255,0.8)'}; @@ -333,16 +327,16 @@ export const ButtonTwitter = styled(SigninButton)` color: ${props => props.theme.social.twitter.default}; } - &:hover { - color: ${props => - props.whitebg ? props.theme.social.twitter.default : '#fff'} - } + &:hover { + color: ${props => + props.whitebg ? props.theme.social.twitter.default : '#fff'}; + } `; export const ButtonFacebook = styled(SigninButton)` - background: ${props => + background: ${props => props.preferred ? props.theme.social.facebook.default : 'none'}; - color: ${props => + color: ${props => props.whitebg ? props.theme.social.facebook.default : props.preferred ? '#fff' : 'rgba(255,255,255,0.8)'}; @@ -351,16 +345,16 @@ export const ButtonFacebook = styled(SigninButton)` color: ${props => props.theme.social.facebook.default}; } - &:hover { - color: ${props => - props.whitebg ? props.theme.social.facebook.default : '#fff'} - } + &:hover { + color: ${props => + props.whitebg ? props.theme.social.facebook.default : '#fff'}; + } `; export const ButtonGoogle = styled(SigninButton)` - background: ${props => + background: ${props => props.preferred ? props.theme.social.google.default : 'none'}; - color: ${props => + color: ${props => props.whitebg ? props.theme.social.google.default : props.preferred ? '#fff' : 'rgba(255,255,255,0.8)'}; @@ -369,8 +363,8 @@ export const ButtonGoogle = styled(SigninButton)` color: ${props => props.theme.social.google.default}; } - &:hover { - color: ${props => - props.whitebg ? props.theme.social.google.default : '#fff'} - } + &:hover { + color: ${props => + props.whitebg ? props.theme.social.google.default : '#fff'}; + } `; diff --git a/src/views/navbar/components/profileDropdown.js b/src/views/navbar/components/profileDropdown.js index dea159708d..782e56d3e4 100644 --- a/src/views/navbar/components/profileDropdown.js +++ b/src/views/navbar/components/profileDropdown.js @@ -6,9 +6,7 @@ import styled from 'styled-components'; import { Link } from 'react-router-dom'; import Dropdown from '../../../components/dropdown'; -const UserProfileDropdown = styled(Dropdown)` - width: 160px; -`; +const UserProfileDropdown = styled(Dropdown)`width: 160px;`; const UserProfileDropdownList = styled.ul` list-style-type: none; @@ -44,12 +42,13 @@ export const ProfileDropdown = props => { return ( - {props.user.username && - + {props.user.username && ( + My Settings - } + + )} {/* Log Out */} diff --git a/src/views/navbar/index.js b/src/views/navbar/index.js index 681eaab964..f1100b0082 100644 --- a/src/views/navbar/index.js +++ b/src/views/navbar/index.js @@ -366,6 +366,7 @@ class Navbar extends Component { - {isMobile || + {isMobile || ( - } + + )} ); diff --git a/src/views/newCommunity/index.js b/src/views/newCommunity/index.js index 6e0825cae6..f1d1bad224 100644 --- a/src/views/newCommunity/index.js +++ b/src/views/newCommunity/index.js @@ -170,30 +170,28 @@ class NewCommunity extends Component { - - {title} - + {title} {description} {// gather community meta info activeStep === 1 && - !community && - } + !community && ( + + )} {activeStep === 1 && - community && + community && ( } + /> + )} {activeStep === 2 && - community && - community.id && + community && + community.id && ( - } + + )} {// connect a slack team or invite via email - activeStep === 2 && + activeStep === 2 && ( this.step('previous')}> Back - {hasInvitedPeople - ? - : this.step('next')} - > - Skip this step - } - } + {hasInvitedPeople ? ( + + ) : ( + this.step('next')} + > + Skip this step + + )} + + )} {// share the community - activeStep === 3 && + activeStep === 3 && ( - } + + )} diff --git a/src/views/newUserOnboarding/components/communitySearch/index.js b/src/views/newUserOnboarding/components/communitySearch/index.js index 8e496ab6a2..5cf927ea5c 100644 --- a/src/views/newUserOnboarding/components/communitySearch/index.js +++ b/src/views/newUserOnboarding/components/communitySearch/index.js @@ -267,10 +267,11 @@ class Search extends Component { return ( - {searchIsLoading && + {searchIsLoading && ( - } + + )} {// user has typed in a search string - searchString && + searchString && ( {searchResults.length > 0 && searchResults.map(community => { @@ -297,56 +298,57 @@ class Search extends Component { - - {community.name} - - {community.metaData && + {community.name} + {community.metaData && ( {community.metaData.members} members - } + + )} {community.description}
- {community.communityPermissions.isMember - ? this.toggleMembership(community.id)} - gradientTheme="none" - color={'pro.alt'} - hoverColor={'pro.default'} - loading={loading === community.id} - > - Joined! - - : } + {community.communityPermissions.isMember ? ( + this.toggleMembership(community.id)} + gradientTheme="none" + color={'pro.alt'} + hoverColor={'pro.default'} + loading={loading === community.id} + > + Joined! + + ) : ( + + )}
); })} {searchResults.length === 0 && - isFocused && + isFocused && ( -

- No communities found matching "{searchString}" -

+

No communities found matching "{searchString}"

-
} -
} + + )} + + )}
); } diff --git a/src/views/newUserOnboarding/components/communitySearch/style.js b/src/views/newUserOnboarding/components/communitySearch/style.js index 7780f5227c..b6f783c271 100644 --- a/src/views/newUserOnboarding/components/communitySearch/style.js +++ b/src/views/newUserOnboarding/components/communitySearch/style.js @@ -30,8 +30,7 @@ export const SearchInputWrapper = styled(FlexRow)` color: ${props => props.theme.text.placeholder}; `; -export const SearchIcon = styled(Icon)` -`; +export const SearchIcon = styled(Icon)``; export const SearchInput = styled.input` font-size: 18px; diff --git a/src/views/notifications/components/newMessageNotification.js b/src/views/notifications/components/newMessageNotification.js index 8642bb380d..76351bfcc6 100644 --- a/src/views/notifications/components/newMessageNotification.js +++ b/src/views/notifications/components/newMessageNotification.js @@ -47,9 +47,7 @@ const renderBubbleHeader = (sender: Object, me: boolean) => { return ( - - {me ? 'You' : sender.name} - + {me ? 'You' : sender.name} ); @@ -84,7 +82,12 @@ export const NewMessageNotification = ({ notification, currentUser }) => { return ( - + @@ -92,7 +95,8 @@ export const NewMessageNotification = ({ notification, currentUser }) => { - {' '}{actors.asString} {event} {context.asString} {date}{' '} + {' '} + {actors.asString} {event} {context.asString} {date}{' '} @@ -194,7 +198,12 @@ export const MiniNewMessageNotification = ({ return ( - + diff --git a/src/views/notifications/components/newReactionNotification.js b/src/views/notifications/components/newReactionNotification.js index c269d0c9e6..6d718a73dd 100644 --- a/src/views/notifications/components/newReactionNotification.js +++ b/src/views/notifications/components/newReactionNotification.js @@ -40,7 +40,12 @@ export const NewReactionNotification = ({ notification, currentUser }) => { return ( - + @@ -48,7 +53,8 @@ export const NewReactionNotification = ({ notification, currentUser }) => { - {' '}{actors.asString} {event} {context.asString} {date}{' '} + {' '} + {actors.asString} {event} {context.asString} {date}{' '} @@ -59,7 +65,7 @@ export const NewReactionNotification = ({ notification, currentUser }) => { - {message.messageType === 'text' && + {message.messageType === 'text' && ( { color={'text.reverse'} /> - } - {message.messageType === 'media' && + + )} + {message.messageType === 'media' && ( { color={'text.reverse'} /> - } + + )} @@ -135,7 +143,12 @@ export const MiniNewReactionNotification = ({ return ( - + @@ -143,7 +156,8 @@ export const MiniNewReactionNotification = ({ - {' '}{actors.asString} {event} {context.asString}{' '} + {' '} + {actors.asString} {event} {context.asString}{' '} {messageStr && `"${messageStr}"`} {date}{' '} diff --git a/src/views/notifications/index.js b/src/views/notifications/index.js index 680d48764b..b8f172281e 100644 --- a/src/views/notifications/index.js +++ b/src/views/notifications/index.js @@ -19,6 +19,7 @@ import { CommunityInviteNotification } from './components/communityInviteNotific import { NewUserInCommunityNotification } from './components/newUserInCommunityNotification'; import { Column } from '../../components/column'; import AppViewWrapper from '../../components/appViewWrapper'; +import Head from '../../components/head'; import Titlebar from '../../views/titlebar'; import { displayLoadingNotifications, @@ -45,6 +46,7 @@ import { UpsellNullNotifications, } from '../../components/upsell'; import BrowserNotificationRequest from './components/browserNotificationRequest'; +import generateMetaInfo from 'shared/generate-meta-info'; class NotificationsPure extends Component { state: { @@ -175,10 +177,15 @@ class NotificationsPure extends Component { ); } + const { title, description } = generateMetaInfo({ + type: 'notifications', + }); + if (!data.notifications || data.notifications.edges.length === 0) { return ( + @@ -198,15 +205,17 @@ class NotificationsPure extends Component { return ( + - {this.state.showWebPushPrompt && + {this.state.showWebPushPrompt && ( } + /> + )} { }); }; -export const renderBubbleHeader = actor => +export const renderBubbleHeader = actor => ( - - {actor.name} - + {actor.name} {actor.isAdmin && } {actor.isPro && } - ; + +); -export const renderAvatar = actor => +export const renderAvatar = actor => ( - ; + +); const actorsToString = actors => { // reverse to show the most recent first @@ -78,9 +78,7 @@ const actorsToString = actors => { if (actors.length === 1) { return ( - - {`${names[0]}`} - + {`${names[0]}`} ); } else if (actors.length === 2) { @@ -165,11 +163,7 @@ export const parseEvent = event => { export const parseNotificationDate = date => { const now = new Date().getTime(); const timestamp = new Date(date).getTime(); - return ( - - ยท {timeDifferenceShort(now, timestamp)} - - ); + return ยท {timeDifferenceShort(now, timestamp)}; }; const threadToString = (context, currentUser) => { @@ -177,8 +171,14 @@ const threadToString = (context, currentUser) => { const str = isCreator ? 'in your thread' : 'in'; return ( - {' '}{str}{' '} - + {' '} + {str}{' '} + {context.payload.content.title} @@ -192,17 +192,14 @@ const messageToString = context => { const communityToString = context => { return ( - {' '}{context.payload.name} + {' '} + {context.payload.name} ); }; const channelToString = context => { - return ( - - {' '}{context.payload.name} - - ); + return {context.payload.name}; }; export const parseContext = (context, currentUser) => { diff --git a/src/views/splash/components/illustrations.js b/src/views/splash/components/illustrations.js index a8c8504045..a945500e84 100644 --- a/src/views/splash/components/illustrations.js +++ b/src/views/splash/components/illustrations.js @@ -9,35 +9,35 @@ export const Cluster = styled.img` `; export const ClusterOne = styled(Cluster)` - max-width: 120px; - max-height: 120px; - top: 10%; - left: 10%; - z-index: ${zIndex.background}; + max-width: 120px; + max-height: 120px; + top: 10%; + left: 10%; + z-index: ${zIndex.background}; `; export const ClusterTwo = styled(Cluster)` - max-width: 160px; - max-height: 160px; - top: 60%; - right: 10%; - z-index: ${zIndex.background}; + max-width: 160px; + max-height: 160px; + top: 60%; + right: 10%; + z-index: ${zIndex.background}; `; export const ClusterThree = styled(Cluster)` - max-width: 80px; - max-height: 80px; - top: 10%; - right: 40%; - z-index: ${zIndex.background}; + max-width: 80px; + max-height: 80px; + top: 10%; + right: 40%; + z-index: ${zIndex.background}; `; export const ClusterFour = styled(Cluster)` - max-width: 80px; - max-height: 80px; - top: 80%; - left: 40%; - z-index: ${zIndex.background}; + max-width: 80px; + max-height: 80px; + top: 80%; + left: 40%; + z-index: ${zIndex.background}; `; export const Constellations = styled.div` @@ -87,10 +87,11 @@ export const ConversationWrapper = styled.div` } `; -export const Conversation = () => +export const Conversation = () => ( - ; + +); const DiscoverImage = styled.img` position: relative; diff --git a/src/views/splash/components/themes.js b/src/views/splash/components/themes.js index 0b2e8915ce..f305087e0b 100644 --- a/src/views/splash/components/themes.js +++ b/src/views/splash/components/themes.js @@ -14,11 +14,11 @@ import { FlexCol, hexa } from '../../../components/globals'; export const Default = styled(FlexCol)` display: flex; - position: relative; - flex: auto; - justify-content: center; + position: relative; + flex: auto; + justify-content: center; background-color: ${({ theme }) => theme.bg.default}; - color: ${({ theme }) => theme.text.default}; + color: ${({ theme }) => theme.text.default}; `; export const Primary = styled(Default)` @@ -27,46 +27,56 @@ export const Primary = styled(Default)` `radial-gradient(farthest-corner at 50% 100%, ${hexa(theme.brand.alt, 0.75)}, ${theme.space.dark} )`}; - color: ${({ theme }) => theme.text.reverse}; + color: ${({ theme }) => theme.text.reverse}; `; export const Brand = styled(Default)` background-color: ${({ theme }) => theme.brand.default}; - background-image: linear-gradient(to bottom, ${({ theme }) => - `${theme.brand.alt}, ${theme.brand.default}`}); - color: ${({ theme }) => theme.text.reverse}; + background-image: linear-gradient( + to bottom, + ${({ theme }) => `${theme.brand.alt}, ${theme.brand.default}`} + ); + color: ${({ theme }) => theme.text.reverse}; `; export const Dark = styled(Default)` - background-color: ${({ theme }) => theme.space.dark}; - background-image: linear-gradient(to bottom, ${({ theme }) => - `${theme.space.dark}, ${theme.brand.default}`}); - color: ${({ theme }) => theme.text.reverse}; + background-color: ${({ theme }) => theme.space.dark}; + background-image: linear-gradient( + to bottom, + ${({ theme }) => `${theme.space.dark}, ${theme.brand.default}`} + ); + color: ${({ theme }) => theme.text.reverse}; `; export const Space = styled(Default)` -background-color: ${({ theme }) => theme.space.dark}; -background-image: linear-gradient(to bottom, ${({ theme }) => - `${theme.space.light}, ${theme.space.dark}`}); -color: ${({ theme }) => theme.text.reverse}; + background-color: ${({ theme }) => theme.space.dark}; + background-image: linear-gradient( + to bottom, + ${({ theme }) => `${theme.space.light}, ${theme.space.dark}`} + ); + color: ${({ theme }) => theme.text.reverse}; `; export const Light = styled(Default)` - background-color: ${({ theme }) => theme.space.light}; - color: ${({ theme }) => theme.text.reverse}; + background-color: ${({ theme }) => theme.space.light}; + color: ${({ theme }) => theme.text.reverse}; `; export const Bright = styled(Default)` background-color: ${({ theme }) => theme.brand.default}; - background-image: linear-gradient(to bottom, ${({ theme }) => - `${theme.space.light}, ${theme.brand.default}`}); + background-image: linear-gradient( + to bottom, + ${({ theme }) => `${theme.space.light}, ${theme.brand.default}`} + ); color: ${({ theme }) => theme.text.reverse}; `; export const Grayscale = styled(Default)` background-color: ${({ theme }) => theme.bg.reverse}; - background-image: linear-gradient(to bottom, ${({ theme }) => - `${theme.text.alt}, ${theme.bg.reverse}`}); + background-image: linear-gradient( + to bottom, + ${({ theme }) => `${theme.text.alt}, ${theme.bg.reverse}`} + ); color: ${({ theme }) => theme.text.reverse}; `; diff --git a/src/views/splash/style.js b/src/views/splash/style.js index 6899aa7451..9c554c99a3 100644 --- a/src/views/splash/style.js +++ b/src/views/splash/style.js @@ -12,11 +12,11 @@ import { } from '../../components/globals'; export const Wrapper = styled(FlexCol)` - flex: 1 0 auto; - width: 100%; - background-color: ${({ theme }) => theme.bg.default}; + flex: 1 0 auto; + width: 100%; + background-color: ${({ theme }) => theme.bg.default}; overflow: auto; - overflow-x: hidden; + overflow-x: hidden; z-index: ${zIndex.base}; `; @@ -31,27 +31,27 @@ export const Flexer = styled(FlexRow)` export const Header = styled(FlexRow)` padding: 32px; justify-content: space-between; - z-index: ${zIndex.card} + z-index: ${zIndex.card}; `; export const Content = styled(FlexRow)` - flex: auto; - align-self: stretch; - align-items: center; - justify-content: center; - position: relative; + flex: auto; + align-self: stretch; + align-items: center; + justify-content: center; + position: relative; - @media (max-width: 768px) { + @media (max-width: 768px) { flex-direction: column; - } + } `; export const Tagline = styled(H2)` - font-weight: 900; - font-size: 32px; - margin-top: 8px; - margin-bottom: 8px; - color: inherit; + font-weight: 900; + font-size: 32px; + margin-top: 8px; + margin-bottom: 8px; + color: inherit; @media (max-width: 768px) { margin-bottom: 32px; @@ -59,16 +59,16 @@ export const Tagline = styled(H2)` `; export const Copy = styled(P)` - max-width: 480px; - width: 100%; - font-size: 16px; - line-height: 1.5; - color: inherit; - font-weight: 500; + max-width: 480px; + width: 100%; + font-size: 16px; + line-height: 1.5; + color: inherit; + font-weight: 500; - &:not(:first-of-type){ - margin-top: 16px; - } + &:not(:first-of-type) { + margin-top: 16px; + } @media (max-width: 768px) { text-align: left; @@ -217,55 +217,54 @@ export const LoginCard = styled.div` `; export const ButtonTwitter = styled(Button)` - background: ${props => + background: ${props => props.preferred ? props.theme.social.twitter.default : 'none'}; - color: ${props => + color: ${props => props.whitebg ? props.theme.social.twitter.default : props.preferred ? '#fff' : 'rgba(255,255,255,0.8)'}; - &:hover { - color: ${props => - props.whitebg ? props.theme.social.twitter.default : '#fff'} - } + &:hover { + color: ${props => + props.whitebg ? props.theme.social.twitter.default : '#fff'}; + } `; export const ButtonFacebook = styled(Button)` - background: ${props => + background: ${props => props.preferred ? props.theme.social.facebook.default : 'none'}; - color: ${props => + color: ${props => props.whitebg ? props.theme.social.facebook.default : props.preferred ? '#fff' : 'rgba(255,255,255,0.8)'}; - - &:hover { - color: ${props => - props.whitebg ? props.theme.social.facebook.default : '#fff'} - } + &:hover { + color: ${props => + props.whitebg ? props.theme.social.facebook.default : '#fff'}; + } `; export const ButtonGoogle = styled(Button)` - background: ${props => + background: ${props => props.preferred ? props.theme.social.google.default : 'none'}; - color: ${props => + color: ${props => props.whitebg ? props.theme.social.google.default : props.preferred ? '#fff' : 'rgba(255,255,255,0.8)'}; - &:hover { - color: ${props => - props.whitebg ? props.theme.social.google.default : '#fff'} - } + &:hover { + color: ${props => + props.whitebg ? props.theme.social.google.default : '#fff'}; + } `; export const Footer = styled(FlexRow)` - position: relative; - flex: auto; + position: relative; + flex: auto; justify-content: space-between; padding: 24px 24px 24px 40px; background-color: ${({ theme }) => theme.bg.reverse}; - color: ${({ theme }) => theme.text.reverse}; + color: ${({ theme }) => theme.text.reverse}; @media (max-width: 768px) { flex-direction: column; diff --git a/src/views/splash/view.js b/src/views/splash/view.js index 2bdf6053f3..3026c4a538 100644 --- a/src/views/splash/view.js +++ b/src/views/splash/view.js @@ -4,7 +4,7 @@ import React from 'react'; import styled from 'styled-components'; // @Flow Fix Me import { Link } from 'react-router-dom'; -import { SERVER_URL } from '../../api'; +import { SERVER_URL } from '../../api/constants'; import { Button } from '../../components/buttons'; import { Logo } from '../../components/logo'; import Icon from '../../components/icons'; @@ -38,10 +38,7 @@ import { // const Link = styled.a``; -const Section = props => - - {props.children} - ; +const Section = props => {props.children}; export const Overview = props => { const Text = styled(FlexCol)` @@ -87,9 +84,7 @@ export const Overview = props => { } `; - const ThisPrimaryCTA = styled(PrimaryCTA)` - font-size: 16px; - `; + const ThisPrimaryCTA = styled(PrimaryCTA)`font-size: 16px;`; const ThisButton = styled(SecondaryCTA)` padding: 12px 16px; @@ -144,9 +139,7 @@ export const Centralized = props => { } `; - const ThisCopy = styled(Copy)` - margin-top: 16px; - `; + const ThisCopy = styled(Copy)`margin-top: 16px;`; const ThisPrimaryCTA = styled(PrimaryCTA)` margin-top: 32px; @@ -218,9 +211,7 @@ export const CommunitySearch = props => { } `; - const ThisTagline = styled(Tagline)` - margin-bottom: 16px; - `; + const ThisTagline = styled(Tagline)`margin-bottom: 16px;`; const ThisCopy = styled(Copy)` font-size: 18px; @@ -257,9 +248,7 @@ export const Chat = props => { } `; - const ThisCopy = styled(Copy)` - margin-top: 16px; - `; + const ThisCopy = styled(Copy)`margin-top: 16px;`; const ThisPrimaryCTA = styled(PrimaryCTA)` background-color: ${props => props.theme.brand.alt}; @@ -321,9 +310,7 @@ export const Sell = props => { margin: 40px 0; `; - const ThisContent = styled(Content)` - - `; + const ThisContent = styled(Content)``; const ThisTagline = styled(Tagline)` margin-bottom: 0; @@ -345,9 +332,7 @@ export const Sell = props => { } `; - const ThisSection = styled(Section)` - margin-bottom: 40px; - `; + const ThisSection = styled(Section)`margin-bottom: 40px;`; return ( diff --git a/src/views/userSettings/index.js b/src/views/userSettings/index.js index 3c0fad7763..d41fad965f 100644 --- a/src/views/userSettings/index.js +++ b/src/views/userSettings/index.js @@ -78,8 +78,7 @@ const UserSettings = ({ data, currentUser, match }) => { {'serviceWorker' in navigator && - 'PushManager' in window && - } + 'PushManager' in window && } diff --git a/yarn.lock b/yarn.lock index e20aeb2d4d..1d4b513107 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,42 +8,38 @@ dependencies: nan "^2.4.0" -"@types/async@^2.0.31": - version "2.0.40" - resolved "https://registry.yarnpkg.com/@types/async/-/async-2.0.40.tgz#ac02de68e66c004a61b7cb16df8b1db3a254cca9" - "@types/express-serve-static-core@*": - version "4.0.49" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.49.tgz#3438d68d26e39db934ba941f18e3862a1beeb722" + version "4.0.50" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.50.tgz#c5a139b5d29d2305aae6d982f69cef36120beacf" dependencies: "@types/node" "*" "@types/express@^4.0.35": - version "4.0.36" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.0.36.tgz#14eb47de7ecb10319f0a2fb1cf971aa8680758c2" + version "4.0.37" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.0.37.tgz#625ac3765169676e01897ca47011c26375784971" dependencies: "@types/express-serve-static-core" "*" "@types/serve-static" "*" +"@types/graphql@0.10.2": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-0.10.2.tgz#d7c79acbaa17453b6681c80c34b38fcb10c4c08c" + "@types/graphql@^0.9.0", "@types/graphql@^0.9.1": version "0.9.4" resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-0.9.4.tgz#cdeb6bcbef9b6c584374b81aa7f48ecf3da404fa" -"@types/isomorphic-fetch@0.0.34": - version "0.0.34" - resolved "https://registry.yarnpkg.com/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.34.tgz#3c3483e606c041378438e951464f00e4e60706d6" - "@types/mime@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.1.tgz#2cf42972d0931c1060c7d5fa6627fce6bd876f2f" "@types/node@*": - version "8.0.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.14.tgz#4a19dc6bb61d16c01cbadc7b30ac23518fff176b" + version "8.0.26" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.26.tgz#4d58be925306fd22b1141085535a0268b8beb189" "@types/serve-static@*": - version "1.7.31" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.7.31.tgz#15456de8d98d6b4cff31be6c6af7492ae63f521a" + version "1.7.32" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.7.32.tgz#0f6732e4dab0813771dd8fc8fe14940f34728b4c" dependencies: "@types/express-serve-static-core" "*" "@types/mime" "*" @@ -63,10 +59,10 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" accepts@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + version "1.3.4" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" dependencies: - mime-types "~2.1.11" + mime-types "~2.1.16" negotiator "0.6.1" acorn-dynamic-import@^2.0.0: @@ -95,19 +91,23 @@ acorn@^4.0.3, acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" -acorn@^5.0.0, acorn@^5.0.1: +acorn@^5.0.0, acorn@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" -address@1.0.2, address@^1.0.1: +address@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/address/-/address-1.0.2.tgz#480081e82b587ba319459fef512f516fe03d58af" +address@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" + agent-base@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-1.0.2.tgz#6890d3fb217004b62b70f8928e0fae5f8952a706" -ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: +ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" @@ -122,7 +122,7 @@ ajv@^4.7.0, ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0, ajv@^5.1.5: +ajv@^5.0.0, ajv@^5.1.5, ajv@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39" dependencies: @@ -147,10 +147,6 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -anser@1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/anser/-/anser-1.2.5.tgz#5dcfc956eaa373b9c23010dd20dabec2ce19475b" - anser@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.1.tgz#c3641863a962cebef941ea2c8706f2cb4f0716bd" @@ -161,7 +157,7 @@ ansi-align@^1.1.0: dependencies: string-width "^1.0.1" -ansi-escapes@^1.0.0, ansi-escapes@^1.1.0, ansi-escapes@^1.4.0: +ansi-escapes@^1.0.0, ansi-escapes@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" @@ -186,22 +182,23 @@ ansi-styles@^2.2.1: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" ansi-styles@^3.0.0, ansi-styles@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750" + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: - color-convert "^1.0.0" + color-convert "^1.9.0" anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" dependencies: - arrify "^1.0.0" micromatch "^2.1.5" + normalize-path "^2.0.0" -apollo-client@^1.4.0, apollo-client@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-1.8.1.tgz#17481cc15dc787202684c4a6fdaa80ba84568a10" +apollo-client@^1.4.0, apollo-client@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-1.9.1.tgz#9e6a383605572c755038cf5d7fdac9382bcdc040" dependencies: + apollo-link-core "^0.5.0" graphql "^0.10.0" graphql-anywhere "^3.0.1" graphql-tag "^2.0.0" @@ -209,17 +206,29 @@ apollo-client@^1.4.0, apollo-client@^1.8.0: symbol-observable "^1.0.2" whatwg-fetch "^2.0.0" optionalDependencies: - "@types/async" "^2.0.31" - "@types/graphql" "^0.9.0" - "@types/isomorphic-fetch" "0.0.34" + "@types/graphql" "0.10.2" + +apollo-link-core@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/apollo-link-core/-/apollo-link-core-0.5.0.tgz#dc87da1aaa63b029321ae70938dc26257f5ab8c6" + dependencies: + graphql "^0.10.3" + graphql-tag "^2.4.2" + zen-observable-ts "^0.4.0" + +apollo-local-query@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/apollo-local-query/-/apollo-local-query-0.3.0.tgz#8f4be210a6a1d07caf61662a555c6c38e2ac2858" + dependencies: + debug "2.3.3" apollo-upload-client@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-5.1.0.tgz#51f5a88f150b4332a58f704023292fb0e34392b3" + version "5.1.1" + resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-5.1.1.tgz#11a22ecf7d29ac35e87c4fa666eaeec4cddc71b3" dependencies: - apollo-client "^1.8.0" - babel-runtime "^6.23.0" - extract-files "^1.1.0" + apollo-client "^1.9.1" + babel-runtime "^6.25.0" + extract-files "^2.0.1" apollo-upload-server@^2.0.4: version "2.0.4" @@ -263,9 +272,9 @@ argparse@~0.1.15: underscore "~1.7.0" underscore.string "~2.4.0" -aria-query@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.5.0.tgz#85e3152cd8cc5bab18dbed61cd9c4fce54fa79c3" +aria-query@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.0.tgz#4af10a1e61573ddea0cf3b99b51c52c05b424d24" dependencies: ast-types-flow "0.0.7" @@ -401,7 +410,7 @@ async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.1.2, async@^2.1.4: +async@^2.1.2, async@^2.1.4, async@^2.4.1: version "2.5.0" resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" dependencies: @@ -419,15 +428,15 @@ autolinker@~0.15.0: version "0.15.3" resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.15.3.tgz#342417d8f2f3461b14cf09088d5edf8791dc9832" -autoprefixer@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.1.tgz#97bc854c7d0b979f8d6489de547a0d17fb307f6d" +autoprefixer@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.2.tgz#fbeaf07d48fd878e0682bf7cbeeade728adb2b18" dependencies: - browserslist "^2.1.3" - caniuse-lite "^1.0.30000670" + browserslist "^2.1.5" + caniuse-lite "^1.0.30000697" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^6.0.1" + postcss "^6.0.6" postcss-value-parser "^3.2.3" autoprefixer@^6.3.1: @@ -470,27 +479,27 @@ axobject-query@^0.1.0: ast-types-flow "0.0.7" babel-cli@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" - dependencies: - babel-core "^6.24.1" - babel-polyfill "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - commander "^2.8.1" - convert-source-map "^1.1.0" + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" + dependencies: + babel-core "^6.26.0" + babel-polyfill "^6.26.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + commander "^2.11.0" + convert-source-map "^1.5.0" fs-readdir-recursive "^1.0.0" - glob "^7.0.0" - lodash "^4.2.0" - output-file-sync "^1.1.0" - path-is-absolute "^1.0.0" + glob "^7.1.2" + lodash "^4.17.4" + output-file-sync "^1.1.2" + path-is-absolute "^1.0.1" slash "^1.0.0" - source-map "^0.5.0" - v8flags "^2.0.10" + source-map "^0.5.6" + v8flags "^2.1.1" optionalDependencies: chokidar "^1.6.1" -babel-code-frame@6.22.0, babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: +babel-code-frame@6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" dependencies: @@ -498,7 +507,15 @@ babel-code-frame@6.22.0, babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, bab esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@6.25.0, babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.25.0: +babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@6.25.0: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" dependencies: @@ -522,6 +539,30 @@ babel-core@6.25.0, babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.25.0: slash "^1.0.0" source-map "^0.5.0" +babel-core@^6.0.0, babel-core@^6.25.0, babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + babel-eslint@7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" @@ -531,17 +572,17 @@ babel-eslint@7.2.3: babel-types "^6.23.0" babylon "^6.17.0" -babel-generator@^6.18.0, babel-generator@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" +babel-generator@^6.18.0, babel-generator@^6.25.0, babel-generator@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" dependencies: babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.25.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" detect-indent "^4.0.0" jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" + lodash "^4.17.4" + source-map "^0.5.6" trim-right "^1.0.1" babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: @@ -553,12 +594,12 @@ babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: babel-types "^6.24.1" babel-helper-builder-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz#0ad7917e33c8d751e646daca4e77cc19377d2cbc" + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - esutils "^2.0.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" babel-helper-call-delegate@^6.24.1: version "6.24.1" @@ -570,13 +611,13 @@ babel-helper-call-delegate@^6.24.1: babel-types "^6.24.1" babel-helper-define-map@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" dependencies: babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" babel-helper-explode-assignable-expression@^6.24.1: version "6.24.1" @@ -618,12 +659,12 @@ babel-helper-optimise-call-expression@^6.24.1: babel-types "^6.24.1" babel-helper-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" babel-helper-remap-async-to-generator@^6.24.1: version "6.24.1" @@ -661,17 +702,17 @@ babel-jest@20.0.3, babel-jest@^20.0.3: babel-plugin-istanbul "^4.0.0" babel-preset-jest "^20.0.3" -babel-loader@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.0.0.tgz#2e43a66bee1fff4470533d0402c8a4532fafbaf7" +babel-loader@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.1.tgz#b87134c8b12e3e4c2a94e0546085bc680a2b8488" dependencies: - find-cache-dir "^0.1.1" + find-cache-dir "^1.0.0" loader-utils "^1.0.2" mkdirp "^0.5.1" babel-loader@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.1.tgz#b87134c8b12e3e4c2a94e0546085bc680a2b8488" + version "7.1.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126" dependencies: find-cache-dir "^1.0.0" loader-utils "^1.0.2" @@ -710,8 +751,8 @@ babel-plugin-jest-hoist@^20.0.3: resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz#afedc853bd3f8dc3548ea671fbe69d03cc2c1767" babel-plugin-styled-components@^1.1.4, babel-plugin-styled-components@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.1.7.tgz#a92c239779cc80e7838b645c12865c61c4ca71ce" + version "1.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.2.0.tgz#8bb8f9e69119bb8dee408c8d36a0dfef5191f3c7" dependencies: stylis "^3.2.1" @@ -755,7 +796,7 @@ babel-plugin-transform-async-to-generator@^6.22.0: babel-plugin-syntax-async-functions "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-class-properties@6.24.1, babel-plugin-transform-class-properties@^6.19.0: +babel-plugin-transform-class-properties@6.24.1, babel-plugin-transform-class-properties@^6.19.0, babel-plugin-transform-class-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" dependencies: @@ -777,14 +818,14 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - lodash "^4.2.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" babel-plugin-transform-es2015-classes@^6.23.0: version "6.24.1" @@ -849,13 +890,13 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015 babel-template "^6.24.1" babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" dependencies: babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" babel-plugin-transform-es2015-modules-systemjs@^6.23.0: version "6.24.1" @@ -947,13 +988,20 @@ babel-plugin-transform-flow-strip-types@^6.22.0: babel-plugin-syntax-flow "^6.18.0" babel-runtime "^6.22.0" -babel-plugin-transform-object-rest-spread@6.23.0, babel-plugin-transform-object-rest-spread@^6.20.2, babel-plugin-transform-object-rest-spread@^6.23.0: +babel-plugin-transform-object-rest-spread@6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" dependencies: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.22.0" +babel-plugin-transform-object-rest-spread@^6.20.2, babel-plugin-transform-object-rest-spread@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + babel-plugin-transform-react-constant-elements@6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz#2f119bf4d2cdd45eb9baaae574053c604f6147dd" @@ -988,12 +1036,18 @@ babel-plugin-transform-react-jsx@6.24.1, babel-plugin-transform-react-jsx@^6.24. babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-regenerator@6.24.1, babel-plugin-transform-regenerator@^6.22.0: +babel-plugin-transform-regenerator@6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" dependencies: regenerator-transform "0.9.11" +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + babel-plugin-transform-runtime@6.23.0, babel-plugin-transform-runtime@^6.15.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" @@ -1007,13 +1061,13 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-polyfill@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" dependencies: - babel-runtime "^6.22.0" - core-js "^2.4.0" - regenerator-runtime "^0.10.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" babel-preset-backpack@^0.4.0: version "0.4.0" @@ -1110,9 +1164,9 @@ babel-preset-jest@^20.0.3: dependencies: babel-plugin-jest-hoist "^20.0.3" -babel-preset-react-app@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-3.0.1.tgz#8b744cbe47fd57c868e6f913552ceae26ae31860" +babel-preset-react-app@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-3.0.2.tgz#d062fca5dce68ed9c2615f2fecbc08861720f8e5" dependencies: babel-plugin-dynamic-import-node "1.0.2" babel-plugin-syntax-dynamic-import "6.18.0" @@ -1138,69 +1192,69 @@ babel-preset-react@6.24.1: babel-plugin-transform-react-jsx-source "^6.22.0" babel-preset-flow "^6.23.0" -babel-register@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" +babel-register@^6.24.1, babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" dependencies: - babel-core "^6.24.1" - babel-runtime "^6.22.0" - core-js "^2.4.0" + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" home-or-tmp "^2.0.0" - lodash "^4.2.0" + lodash "^4.17.4" mkdirp "^0.5.1" - source-map-support "^0.4.2" + source-map-support "^0.4.15" -babel-runtime@6.23.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" +babel-runtime@6.26.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.25.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: core-js "^2.4.0" - regenerator-runtime "^0.10.0" + regenerator-runtime "^0.11.0" -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.25.0" - babel-types "^6.25.0" - babylon "^6.17.2" - lodash "^4.2.0" + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" -babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" +babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.25.0, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: - babel-code-frame "^6.22.0" + babel-code-frame "^6.26.0" babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.25.0" - babylon "^6.17.2" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" -babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" +babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.25.0, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: - babel-runtime "^6.22.0" + babel-runtime "^6.26.0" esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" + lodash "^4.17.4" + to-fast-properties "^1.0.3" -babylon@^6.17.0, babylon@^6.17.2, babylon@^6.17.4: - version "6.17.4" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" +babylon@^6.17.0, babylon@^6.17.2, babylon@^6.17.4, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" backo2@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" backpack-core@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/backpack-core/-/backpack-core-0.4.1.tgz#4a8a0fe17b8a46a4df697003524245be6873e59a" + version "0.4.2" + resolved "https://registry.yarnpkg.com/backpack-core/-/backpack-core-0.4.2.tgz#ab385f86c51e241e1269a76c00627b2a9ae69551" dependencies: babel-core "^6.25.0" babel-loader "^7.1.0" @@ -1258,8 +1312,8 @@ big.js@^3.1.3: resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" binary-extensions@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" + version "1.10.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" block-stream@*: version "0.0.9" @@ -1276,8 +1330,8 @@ block-stream@*: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.7" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.7.tgz#ddb048e50d9482790094c13eb3fcfc833ce7ab46" + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" body-parser@^1.17.1: version "1.17.2" @@ -1428,12 +1482,12 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^2.1.2, browserslist@^2.1.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.2.0.tgz#5e35ec993e467c6464b8cb708447386891de9f50" +browserslist@^2.1.2, browserslist@^2.1.5: + version "2.4.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8" dependencies: - caniuse-lite "^1.0.30000701" - electron-to-chromium "^1.3.15" + caniuse-lite "^1.0.30000718" + electron-to-chromium "^1.3.18" bser@1.0.2: version "1.0.2" @@ -1452,8 +1506,8 @@ buffer-equal-constant-time@1.0.1: resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" buffer-indexof@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.0.tgz#f54f647c4f4e25228baa656a2e57e43d5f270982" + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" buffer-xor@^1.0.2: version "1.0.3" @@ -1468,8 +1522,8 @@ buffer@^4.3.0: isarray "^1.0.0" buffer@^5.0.3: - version "5.0.6" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.6.tgz#2ea669f7eec0b6eda05b08f8b5ff661b28573588" + version "5.0.7" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.7.tgz#570a290b625cf2603290c1149223d27ccf04db97" dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -1577,12 +1631,12 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000703" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000703.tgz#c7d899b8adea6da1aa587355d39ac8533f878403" + version "1.0.30000721" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000721.tgz#cdc52efe8f82dd13916615b78e86f704ece61802" -caniuse-lite@^1.0.30000670, caniuse-lite@^1.0.30000701: - version "1.0.30000703" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000703.tgz#666e8c3f1e4f7abb1d16d48e04e7e9e8df934925" +caniuse-lite@^1.0.30000697, caniuse-lite@^1.0.30000718: + version "1.0.30000721" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000721.tgz#931a21a7bd85016300328d21f126d84b73437d35" capture-stack-trace@^1.0.0: version "1.0.0" @@ -1597,8 +1651,8 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" casual@^1.5.12: - version "1.5.14" - resolved "https://registry.yarnpkg.com/casual/-/casual-1.5.14.tgz#38d491620c1dc80808a394a8b6d970be3112d7b1" + version "1.5.17" + resolved "https://registry.yarnpkg.com/casual/-/casual-1.5.17.tgz#a0d64ddef10bf27f1c47b2d353954e51c27a6422" dependencies: mersenne-twister "^1.0.1" moment "^2.15.2" @@ -1624,9 +1678,9 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d" +chalk@^2.0.0, chalk@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" dependencies: ansi-styles "^3.1.0" escape-string-regexp "^1.0.5" @@ -1688,8 +1742,8 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: safe-buffer "^5.0.1" circular-json@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" clap@^1.0.9: version "1.2.0" @@ -1721,7 +1775,7 @@ cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" -cli-cursor@^1.0.1, cli-cursor@^1.0.2: +cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" dependencies: @@ -1745,8 +1799,8 @@ cli-truncate@^0.2.1: string-width "^1.0.1" cli-width@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" clipboard@^1.5.5: version "1.7.1" @@ -1802,7 +1856,7 @@ collection-visit@^0.2.1: map-visit "^0.1.5" object-visit "^0.3.4" -color-convert@^1.0.0, color-convert@^1.3.0: +color-convert@^1.3.0, color-convert@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" dependencies: @@ -1844,13 +1898,7 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" -commander@2.9.x, commander@~2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - -commander@^2.8.1, commander@^2.9.0: +commander@2.11.x, commander@^2.11.0, commander@^2.9.0, commander@~2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -1867,10 +1915,10 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" compressible@~2.0.10: - version "2.0.10" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd" + version "2.0.11" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a" dependencies: - mime-db ">= 1.27.0 < 2" + mime-db ">= 1.29.0 < 2" compression@^1.5.2: version "1.7.0" @@ -1888,7 +1936,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2: +concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -1957,7 +2005,7 @@ content-type@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" -convert-source-map@^1.1.0, convert-source-map@^1.4.0: +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" @@ -1984,11 +2032,11 @@ core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" +core-js@^2.4.0, core-js@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086" -core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2013,8 +2061,8 @@ cosmiconfig@^1.1.0: require-from-string "^1.1.0" cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.1.3.tgz#952771eb0dddc1cb3fa2f6fbe51a522e93b3ee0a" + version "2.2.2" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" dependencies: is-directory "^0.3.1" js-yaml "^3.4.3" @@ -2041,7 +2089,7 @@ create-error-class@^3.0.1: dependencies: capture-stack-trace "^1.0.0" -create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" dependencies: @@ -2061,7 +2109,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.5.2, create-react-class@^15.5.3, create-react-class@^15.6.0: +create-react-class@^15.5.2, create-react-class@^15.6.0: version "15.6.0" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4" dependencies: @@ -2083,14 +2131,7 @@ cross-env@^5.0.5: cross-spawn "^5.1.0" is-windows "^1.0.0" -cross-spawn@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^5.0.1, cross-spawn@^5.1.0: +cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: @@ -2281,6 +2322,12 @@ debug@2, debug@2.6.8, debug@^2.1.1, debug@^2.2.0, debug@^2.3.2, debug@^2.3.3, de dependencies: ms "2.0.0" +debug@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + debug@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" @@ -2382,12 +2429,12 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" denque@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/denque/-/denque-1.1.1.tgz#10229c2b88eec1bd15ff82c5fde356e7beb6db9e" + version "1.2.2" + resolved "https://registry.yarnpkg.com/denque/-/denque-1.2.2.tgz#e06cf7cf0da8badc88cbdaabf8fc0a70d659f1d4" -depd@1.1.0, depd@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" +depd@1.1.1, depd@~1.1.0, depd@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" deprecated-decorator@^0.1.6: version "0.1.6" @@ -2442,8 +2489,8 @@ dns-equal@^1.0.0: resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" dns-packet@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.1.1.tgz#2369d45038af045f3898e6fa56862aed3f40296c" + version "1.2.2" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz#a8a26bec7646438963fc86e06f8f8b16d6c8bf7a" dependencies: ip "^1.1.0" safe-buffer "^5.0.1" @@ -2521,13 +2568,20 @@ domutils@1.1: dependencies: domelementtype "1" -domutils@1.5.1, domutils@^1.5.1: +domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" dependencies: dom-serializer "0" domelementtype "1" +domutils@^1.5.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" + dependencies: + dom-serializer "0" + domelementtype "1" + dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" @@ -2549,10 +2603,10 @@ duplexer@^0.1.1, duplexer@~0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" duplexify@^3.2.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604" + version "3.5.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" dependencies: - end-of-stream "1.0.0" + end-of-stream "^1.0.0" inherits "^2.0.1" readable-stream "^2.0.0" stream-shift "^1.0.0" @@ -2574,9 +2628,9 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.15: - version "1.3.16" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.16.tgz#d0e026735754770901ae301a21664cba45d92f7d" +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.18: + version "1.3.19" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.19.tgz#73d97b0e8b05aa776cedf3cdce7fdc0538037675" elegant-spinner@^1.0.1: version "1.0.1" @@ -2599,8 +2653,8 @@ elliptic@^6.0.0: minimalistic-crypto-utils "^1.0.0" emoji-regex@^6.1.0, emoji-regex@^6.1.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.0.tgz#c1699e17f34154f7922219ea712ea76a2619c77b" + version "6.5.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" emojis-list@^2.0.0: version "2.1.0" @@ -2616,13 +2670,13 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" +end-of-stream@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" dependencies: - once "~1.3.0" + once "^1.4.0" -enhanced-resolve@^3.0.0, enhanced-resolve@^3.4.0: +enhanced-resolve@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" dependencies: @@ -2654,13 +2708,14 @@ error-stack-parser@^2.0.0: stackframe "^1.0.3" es-abstract@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" + version "1.8.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.1.tgz#fd85a3bdfa67786ce7be7e1584678e119cd70c04" dependencies: es-to-primitive "^1.1.1" - function-bind "^1.1.0" + function-bind "^1.1.1" + has "^1.0.1" is-callable "^1.1.3" - is-regex "^1.0.3" + is-regex "^1.0.4" es-to-primitive@^1.1.1: version "1.1.1" @@ -2671,8 +2726,8 @@ es-to-primitive@^1.1.1: is-symbol "^1.0.1" es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.24" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.24.tgz#a55877c9924bc0c8d9bd3c2cbe17495ac1709b14" + version "0.10.30" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.30.tgz#7141a16836697dbabfaaaeee41495ce29f52c939" dependencies: es6-iterator "2" es6-symbol "~3.1" @@ -2758,62 +2813,60 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-config-react-app@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-1.0.5.tgz#98337597bc01cc22991fcbdda07451f3b4511718" +eslint-config-react-app@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-2.0.0.tgz#8a5fb357c028336578c37a4bd2fc72b1817717cf" -eslint-import-resolver-node@^0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c" +eslint-import-resolver-node@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" dependencies: - debug "^2.2.0" - object-assign "^4.0.1" - resolve "^1.1.6" + debug "^2.6.8" + resolve "^1.2.0" -eslint-loader@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.7.1.tgz#50b158dd6272dcefb97e984254837f81a5802ce0" +eslint-loader@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.9.0.tgz#7e1be9feddca328d3dcfaef1ad49d5beffe83a13" dependencies: - find-cache-dir "^0.1.1" loader-fs-cache "^1.0.0" loader-utils "^1.0.2" object-assign "^4.0.1" object-hash "^1.1.4" rimraf "^2.6.1" -eslint-module-utils@^2.0.0: +eslint-module-utils@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" dependencies: debug "^2.6.8" pkg-dir "^1.0.0" -eslint-plugin-flowtype@2.34.0: - version "2.34.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.34.0.tgz#b9875f314652e5081623c9d2b18a346bbb759c09" +eslint-plugin-flowtype@2.35.0: + version "2.35.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.35.0.tgz#d17494f0ae8b727c632d8b9d4b4a848e7e0c04af" dependencies: lodash "^4.15.0" -eslint-plugin-import@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e" +eslint-plugin-import@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" dependencies: builtin-modules "^1.1.1" contains-path "^0.1.0" - debug "^2.2.0" + debug "^2.6.8" doctrine "1.5.0" - eslint-import-resolver-node "^0.2.0" - eslint-module-utils "^2.0.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.1.1" has "^1.0.1" lodash.cond "^4.3.0" minimatch "^3.0.3" - pkg-up "^1.0.0" + read-pkg-up "^2.0.0" -eslint-plugin-jsx-a11y@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.0.3.tgz#4a939f76ec125010528823331bf948cc573380b6" +eslint-plugin-jsx-a11y@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1" dependencies: - aria-query "^0.5.0" + aria-query "^0.7.0" array-includes "^3.0.3" ast-types-flow "0.0.7" axobject-query "^0.1.0" @@ -2829,51 +2882,59 @@ eslint-plugin-react@7.1.0: has "^1.0.1" jsx-ast-utils "^1.4.1" -eslint@3.19.0: - version "3.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" dependencies: - babel-code-frame "^6.16.0" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint@4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.4.1.tgz#99cd7eafcffca2ff99a5c8f5f2a474d6364b4bd3" + dependencies: + ajv "^5.2.0" + babel-code-frame "^6.22.0" chalk "^1.1.3" - concat-stream "^1.5.2" - debug "^2.1.1" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^2.6.8" doctrine "^2.0.0" - escope "^3.6.0" - espree "^3.4.0" + eslint-scope "^3.7.1" + espree "^3.5.0" esquery "^1.0.0" estraverse "^4.2.0" esutils "^2.0.2" file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^9.17.0" + ignore "^3.3.3" imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" + inquirer "^3.0.6" is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify "^1.0.1" levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" + path-is-inside "^1.0.2" + pluralize "^4.0.0" + progress "^2.0.0" + require-uncached "^1.0.3" + semver "^5.3.0" strip-json-comments "~2.0.1" - table "^3.7.8" + table "^4.0.1" text-table "~0.2.0" - user-home "^2.0.0" -espree@^3.4.0: - version "3.4.3" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" +espree@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.0.tgz#98358625bdd055861ea27e2867ea729faf463d8d" dependencies: - acorn "^5.0.1" + acorn "^5.1.1" acorn-jsx "^3.0.0" esprima@^2.6.0, esprima@^2.7.1: @@ -2909,7 +2970,7 @@ 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" -esutils@^2.0.0, esutils@^2.0.2: +esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -2955,10 +3016,11 @@ eventsource@0.1.6: original ">=0.0.5" evp_bytestokey@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" + version "1.0.2" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.2.tgz#f66bb88ecd57f71a766821e20283ea38c68bf80a" dependencies: - create-hash "^1.1.1" + md5.js "^1.3.4" + safe-buffer "^5.1.1" exec-sh@^0.2.0: version "0.2.0" @@ -3014,23 +3076,29 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + express-session@^1.15.2: - version "1.15.4" - resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.15.4.tgz#5e2cdcf6defe3c1eda4e980f13b986cc58cfb954" + version "1.15.5" + resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.15.5.tgz#f49a18227263b316f6f8544da5fee25a540259ec" dependencies: cookie "0.3.1" cookie-signature "1.0.6" crc "3.4.4" debug "2.6.8" - depd "~1.1.0" + depd "~1.1.1" on-headers "~1.0.1" parseurl "~1.3.1" uid-safe "~2.1.4" utils-merge "1.0.0" express@^4.13.3, express@^4.15.2: - version "4.15.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662" + version "4.15.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.15.4.tgz#032e2253489cf8fce02666beca3d11ed7a2daed1" dependencies: accepts "~1.3.3" array-flatten "1.1.1" @@ -3038,23 +3106,23 @@ express@^4.13.3, express@^4.15.2: content-type "~1.0.2" cookie "0.3.1" cookie-signature "1.0.6" - debug "2.6.7" - depd "~1.1.0" + debug "2.6.8" + depd "~1.1.1" encodeurl "~1.0.1" escape-html "~1.0.3" etag "~1.8.0" - finalhandler "~1.0.3" + finalhandler "~1.0.4" fresh "0.5.0" merge-descriptors "1.0.1" methods "~1.1.2" on-finished "~2.3.0" parseurl "~1.3.1" path-to-regexp "0.1.7" - proxy-addr "~1.1.4" - qs "6.4.0" + proxy-addr "~1.1.5" + qs "6.5.0" range-parser "~1.2.0" - send "0.15.3" - serve-static "1.12.3" + send "0.15.4" + serve-static "1.12.4" setprototypeof "1.0.3" statuses "~1.3.1" type-is "~1.6.15" @@ -3098,24 +3166,24 @@ extglob@^1.1.0: snapdragon "^0.8.1" to-regex "^2.1.0" -extract-files@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-1.1.0.tgz#da55e55d8b718b6b8e25a77df353c8909e65497a" +extract-files@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-2.0.1.tgz#27df9e5a209f6d106bc1451ae378fd0b1f3409d0" dependencies: - babel-runtime "^6.23.0" + babel-runtime "^6.25.0" -extract-text-webpack-plugin@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz#756ef4efa8155c3681833fbc34da53b941746d6c" +extract-text-webpack-plugin@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.0.tgz#90caa7907bc449f335005e3ac7532b41b00de612" dependencies: - async "^2.1.2" - loader-utils "^1.0.2" + async "^2.4.1" + loader-utils "^1.1.0" schema-utils "^0.3.0" webpack-sources "^1.0.1" -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" faker@^4.1.0: version "4.1.0" @@ -3158,8 +3226,8 @@ fb-watchman@^2.0.0: bser "^2.0.0" fbjs@^0.8.1, fbjs@^0.8.5, fbjs@^0.8.9: - version "0.8.12" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" + version "0.8.14" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.14.tgz#d1dbe2be254c35a91e09f31f9cd50a40b2a0ed1c" dependencies: core-js "^1.0.0" isomorphic-fetch "^2.1.1" @@ -3175,7 +3243,7 @@ fd-slicer@~0.1.0: dependencies: pend "~1.1.2" -figures@^1.3.5, figures@^1.7.0: +figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" dependencies: @@ -3212,9 +3280,9 @@ fileset@^2.0.2: glob "^7.0.3" minimatch "^3.0.3" -filesize@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.3.0.tgz#53149ea3460e3b2e024962a51648aa572cf98122" +filesize@3.5.10, filesize@^3.2.1: + version "3.5.10" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.10.tgz#fc8fa23ddb4ef9e5e0ab6e1e64f679a24a56761f" fill-range@^2.1.0: version "2.2.3" @@ -3239,11 +3307,11 @@ filled-array@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" -finalhandler@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89" +finalhandler@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.4.tgz#18574f2e7c4b98b8ae3b230c21f201f31bdb3fb7" dependencies: - debug "2.6.7" + debug "2.6.8" encodeurl "~1.0.1" escape-html "~1.0.3" on-finished "~2.3.0" @@ -3424,9 +3492,13 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +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" gauge@~2.7.3: version "2.7.4" @@ -3441,16 +3513,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" @@ -3496,7 +3558,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -3507,7 +3569,25 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^9.0.0, globals@^9.14.0: +global-modules@1.0.0, global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globals@^9.17.0, globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -3593,11 +3673,7 @@ graceful-fs@~3.0.2: dependencies: natives "^1.1.0" -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -graphql-anywhere@^3.0.0, graphql-anywhere@^3.0.1: +graphql-anywhere@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-3.1.0.tgz#3ea0d8e8646b5cee68035016a9a7557c15c21e96" @@ -3642,7 +3718,7 @@ graphql-subscriptions@0.4.x, graphql-subscriptions@^0.4.3: es6-promise "^4.0.5" iterall "^1.1.1" -graphql-tag@^2.0.0: +graphql-tag@^2.0.0, graphql-tag@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.4.2.tgz#6a63297d8522d03a2b72d26f1b239aab343840cd" @@ -3657,16 +3733,15 @@ graphql-tools@^0.11.0: "@types/graphql" "^0.9.0" graphql-tools@^1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-1.1.0.tgz#8d86ea6997b0dea3089b62dc655e47146a663ebb" + version "1.2.2" + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-1.2.2.tgz#ff791e91b78e05eec18a32716a7732bc7bf5cb4d" dependencies: deprecated-decorator "^0.1.6" - lodash "^4.3.0" uuid "^3.0.1" optionalDependencies: "@types/graphql" "^0.9.0" -graphql@^0.10.0: +graphql@^0.10.0, graphql@^0.10.3: version "0.10.5" resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.10.5.tgz#c9be17ca2bdfdbd134077ffd9bbaa48b8becd298" dependencies: @@ -3749,6 +3824,13 @@ hash-base@^2.0.0: dependencies: inherits "^2.0.1" +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.3" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" @@ -3773,14 +3855,14 @@ highlight.js@^9.10.0: version "9.12.0" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" -history@^4.5.1, history@^4.6.0, history@^4.6.1: - version "4.6.3" - resolved "https://registry.yarnpkg.com/history/-/history-4.6.3.tgz#6d723a8712c581d6bef37e8c26f4aedc6eb86967" +history@^4.6.1, history@^4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b" dependencies: invariant "^2.2.1" loose-envify "^1.2.0" - resolve-pathname "^2.0.0" - value-equal "^0.2.0" + resolve-pathname "^2.2.0" + value-equal "^0.4.0" warning "^3.0.0" hmac-drbg@^1.0.0: @@ -3799,13 +3881,13 @@ hoek@4.x.x: version "4.2.0" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" -hoist-non-react-statics@^1.0.0, hoist-non-react-statics@^1.0.3, hoist-non-react-statics@^1.2.0: +hoist-non-react-statics@^1.0.0, hoist-non-react-statics@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" -hoist-non-react-statics@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.2.0.tgz#b099ca82f3640b1244309c8a526a2bd60ad9d7d9" +hoist-non-react-statics@^2.2.0, hoist-non-react-statics@^2.2.1, hoist-non-react-statics@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0" home-or-tmp@^2.0.0: version "2.0.0" @@ -3814,6 +3896,12 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" @@ -3842,12 +3930,12 @@ html-entities@1.2.1, html-entities@^1.2.0: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" html-minifier@^3.2.3: - version "3.5.2" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.2.tgz#d73bc3ff448942408818ce609bf3fb0ea7ef4eb7" + version "3.5.3" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.3.tgz#4a275e3b1a16639abb79b4c11191ff0d0fcf1ab9" dependencies: camel-case "3.0.x" clean-css "4.1.x" - commander "2.9.x" + commander "2.11.x" he "1.1.x" ncname "1.0.x" param-case "2.1.x" @@ -3889,11 +3977,11 @@ http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" -http-errors@~1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" +http-errors@~1.6.1, http-errors@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" dependencies: - depd "1.1.0" + depd "1.1.1" inherits "2.0.3" setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" @@ -3970,20 +4058,20 @@ ignore-by-default@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" -ignore@^3.2.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" +ignore@^3.3.3: + version "3.3.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" imgix-core-js@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/imgix-core-js/-/imgix-core-js-1.0.7.tgz#c4c5c1cadd5ce920b44c7e0ce1e14b645876fcc3" + version "1.1.0" + resolved "https://registry.yarnpkg.com/imgix-core-js/-/imgix-core-js-1.1.0.tgz#61a51e647afb79bd4c8f13f48fb28f3fc6f4933d" dependencies: js-base64 "^2.1.9" md5 "^2.2.1" immutability-helper@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-2.3.0.tgz#e897741c1da29541a861ea16bdbf909265e2eb55" + version "2.3.1" + resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-2.3.1.tgz#8ccfce92157208c120b2afad7ed05c11114c086e" dependencies: invariant "^2.2.0" @@ -4002,8 +4090,8 @@ indent-string@^2.1.0: repeating "^2.0.0" indent-string@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d" + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" indexes-of@^1.0.1: version "1.0.1" @@ -4032,16 +4120,35 @@ inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" -ini@~1.3.0: +ini@^1.3.4, ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" -inquirer@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.1.1.tgz#87621c4fba4072f48a8dd71c9f9df6f100b2d534" +inquirer@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.1.tgz#06ceb0f540f45ca548c17d6840959878265fa175" dependencies: ansi-escapes "^2.0.0" - chalk "^1.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^3.0.6: + version "3.2.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.2.tgz#c2aaede1507cc54d826818737742d621bef2e823" + dependencies: + ansi-escapes "^2.0.0" + chalk "^2.0.0" cli-cursor "^2.1.0" cli-width "^2.0.0" external-editor "^2.0.4" @@ -4051,26 +4158,8 @@ inquirer@3.1.1: run-async "^2.2.0" rx-lite "^4.0.8" rx-lite-aggregates "^4.0.8" - string-width "^2.0.0" - strip-ansi "^3.0.0" - through "^2.3.6" - -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" + string-width "^2.1.0" + strip-ansi "^4.0.0" through "^2.3.6" internal-ip@^1.2.0: @@ -4121,13 +4210,13 @@ ioredis@^3.1.4: redis-commands "^1.2.0" redis-parser "^2.4.0" -ip@^1.1.0: +ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" -ipaddr.js@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" +ipaddr.js@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0" is-absolute-url@^2.0.0: version "2.1.0" @@ -4180,22 +4269,20 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" is-descriptor@^0.1.0: - version "0.1.5" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.5.tgz#e3fb8b4ab65f3a37373388e18b401d78c58cbea7" + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" - kind-of "^3.0.2" - lazy-cache "^2.0.2" + kind-of "^5.0.0" is-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.0.tgz#d6ec686f238f6b02f23757abe12cf6b2ea2790f9" + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.1.tgz#2c6023599bde2de9d5d2c8b9a9d94082036b6ef2" dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" - kind-of "^3.0.2" - lazy-cache "^2.0.2" + kind-of "^5.0.0" is-directory@^0.3.1: version "0.3.1" @@ -4263,15 +4350,6 @@ is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" -is-my-json-valid@^2.10.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-nan@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2" @@ -4342,15 +4420,11 @@ is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" -is-regex@^1.0.3: +is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" dependencies: @@ -4396,7 +4470,7 @@ is-window@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" -is-windows@^1.0.0: +is-windows@^1.0.0, is-windows@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" @@ -4442,17 +4516,17 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" istanbul-api@^1.1.1: - version "1.1.11" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.11.tgz#fcc0b461e2b3bda71e305155138238768257d9de" + version "1.1.13" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.13.tgz#7197f64413600ebdfec6347a2dc3d4e03f97ed5a" dependencies: async "^2.1.4" fileset "^2.0.2" istanbul-lib-coverage "^1.1.1" istanbul-lib-hook "^1.0.7" - istanbul-lib-instrument "^1.7.4" + istanbul-lib-instrument "^1.7.5" istanbul-lib-report "^1.1.1" istanbul-lib-source-maps "^1.2.1" - istanbul-reports "^1.1.1" + istanbul-reports "^1.1.2" js-yaml "^3.7.0" mkdirp "^0.5.1" once "^1.4.0" @@ -4467,9 +4541,9 @@ istanbul-lib-hook@^1.0.7: dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.2, istanbul-lib-instrument@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz#e9fd920e4767f3d19edc765e2d6b3f5ccbd0eea8" +istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.2, istanbul-lib-instrument@^1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.5.tgz#adb596f8f0cb8b95e739206351a38a586af21b1e" dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" @@ -4498,9 +4572,9 @@ istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.1: rimraf "^2.6.1" source-map "^0.5.3" -istanbul-reports@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e" +istanbul-reports@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.2.tgz#0fb2e3f6aa9922bd3ce45d05d8ab4d5e8e07bd4f" dependencies: handlebars "^4.0.3" @@ -4736,13 +4810,13 @@ js-base64@^2.1.9: version "2.1.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" -js-tokens@^3.0.0: +js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.7.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.0.tgz#4ffbbf25c2ac963b8299dc74da7e3740de1c18ce" +js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.1: + version "3.9.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0" dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -4759,8 +4833,8 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jschardet@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.0.tgz#a61f310306a5a71188e1b1acd08add3cfbb08b1e" + version "1.5.1" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" jsdom@^9.12.0: version "9.12.0" @@ -4795,8 +4869,8 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" json-loader@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" json-mask@^0.3.8: version "0.3.8" @@ -4810,7 +4884,7 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: +json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" dependencies: @@ -4848,18 +4922,14 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - jsprim@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" dependencies: assert-plus "1.0.0" - extsprintf "1.0.2" + extsprintf "1.3.0" json-schema "0.2.3" - verror "1.3.6" + verror "1.10.0" jsx-ast-utils@^1.4.0, jsx-ast-utils@^1.4.1: version "1.4.1" @@ -4898,6 +4968,10 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" +kind-of@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.0.2.tgz#f57bec933d9a2209ffa96c5c08343607b7035fda" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -5061,6 +5135,10 @@ loader-utils@^1.0.2, loader-utils@^1.1.0: emojis-list "^2.0.0" json5 "^0.5.0" +localstorage-memory@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/localstorage-memory/-/localstorage-memory-1.0.2.tgz#cd4a8f210e55dd519c929f4b4cc82829b58f9a51" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -5186,10 +5264,6 @@ lodash.isempty@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" -lodash.isequal@^4.1.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - lodash.isobject@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" @@ -5283,7 +5357,7 @@ lodash.values@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -5300,6 +5374,10 @@ log-update@^1.0.2: ansi-escapes "^1.0.0" cli-cursor "^1.0.2" +loglevel@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.4.1.tgz#95b383f91a3c2756fd4ab093667e4309161f2bcd" + long@~3: version "3.2.0" resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" @@ -5385,6 +5463,13 @@ math-expression-evaluator@^1.2.14: version "1.2.17" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + md5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" @@ -5484,20 +5569,32 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" +"mime-db@>= 1.29.0 < 2": + version "1.30.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + +mime-db@~1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: - version "2.1.15" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" +mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.7: + version "2.1.16" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" dependencies: - mime-db "~1.27.0" + mime-db "~1.29.0" -mime@1.3.4, mime@1.3.x, mime@^1.3.4: +mime@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" +mime@1.3.x: + version "1.3.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" + +mime@^1.3.4: + version "1.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.0.tgz#69e9e0db51d44f2a3b56e48b7817d7d137f1a343" + mime@~1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" @@ -5526,7 +5623,7 @@ minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8, minimist@~0.0.1: +minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -5534,6 +5631,10 @@ 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" +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + mixin-deep@^1.1.3: version "1.2.0" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.2.0.tgz#d02b8c6f8b6d4b8f5982d3fd009c4919851c3fe2" @@ -5553,10 +5654,14 @@ moment-timezone@^0.5.0: dependencies: moment ">= 2.9.0" -"moment@>= 2.9.0", moment@^2.15.2, moment@^2.17.1, moment@^2.18.1: +"moment@>= 2.9.0", moment@^2.11.2, moment@^2.15.2, moment@^2.17.1, moment@^2.18.1: version "2.18.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5572,19 +5677,11 @@ multicast-dns@^6.0.1: dns-packet "^1.0.1" thunky "^0.1.0" -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -nan@^2.3.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" - -nan@^2.4.0: +nan@^2.3.0, nan@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" @@ -5656,8 +5753,8 @@ node-env-file@^0.1.8: resolved "https://registry.yarnpkg.com/node-env-file/-/node-env-file-0.1.8.tgz#fccb7b050f735b5a33da9eb937cf6f1ab457fb69" node-fetch@^1.0.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.1.tgz#899cb3d0a3c92f952c47f1b876f4c8aeabd400d5" + version "1.7.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.2.tgz#c54e9aac57e432875233525f3c891c4159ffefd7" dependencies: encoding "^0.1.11" is-stream "^1.0.1" @@ -5698,6 +5795,12 @@ node-libs-browser@^2.0.0: util "^0.10.3" vm-browserify "0.0.4" +node-localstorage@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/node-localstorage/-/node-localstorage-1.3.0.tgz#2e436aae8dcc9ace97b43c65c16c0d577be0a55c" + dependencies: + write-file-atomic "^1.1.4" + node-notifier@^5.0.2: version "5.1.2" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff" @@ -5762,7 +5865,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1: +normalize-path@^2.0.0, normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: @@ -5878,10 +5981,10 @@ object.omit@^2.0.0: is-extendable "^0.1.1" object.pick@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.2.0.tgz#b5392bee9782da6d9fb7d6afaf539779f1234c2b" + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" dependencies: - isobject "^2.1.0" + isobject "^3.0.1" obuf@^1.0.0, obuf@^1.1.1: version "1.1.1" @@ -5903,12 +6006,6 @@ once@^1.3.0, once@^1.3.3, once@^1.4.0: dependencies: wrappy "1" -once@~1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - dependencies: - wrappy "1" - onetime@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" @@ -6015,7 +6112,7 @@ osenv@^0.1.0, osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -output-file-sync@^1.1.0: +output-file-sync@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" dependencies: @@ -6092,6 +6189,10 @@ parse-json@^2.1.0, parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + parse5@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" @@ -6171,11 +6272,11 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -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" @@ -6191,7 +6292,7 @@ path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" -path-to-regexp@^1.0.1, path-to-regexp@^1.5.3: +path-to-regexp@^1.0.1, path-to-regexp@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" dependencies: @@ -6222,8 +6323,8 @@ pause@0.0.1: resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" pbkdf2@^3.0.3: - version "3.0.12" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2" + version "3.0.13" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.13.tgz#c37d295531e786b1da3e3eadc840426accb0ae25" dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -6269,15 +6370,9 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" -pkg-up@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26" - dependencies: - find-up "^1.0.0" - -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" +pluralize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762" portfinder@^1.0.9: version "1.0.13" @@ -6352,9 +6447,9 @@ postcss-filter-plugins@^2.0.0: postcss "^5.0.4" uniqid "^4.0.0" -postcss-flexbugs-fixes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.0.0.tgz#7b31cb6c27d0417a35a67914c295f83c403c7ed4" +postcss-flexbugs-fixes@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.2.0.tgz#9b8b932c53f9cf13ba0f61875303e447c33dcc51" dependencies: postcss "^6.0.1" @@ -6567,13 +6662,13 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0 source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6.0.1, postcss@^6.0.2: - version "6.0.8" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.8.tgz#89067a9ce8b11f8a84cbc5117efc30419a0857b3" +postcss@^6.0.1, postcss@^6.0.2, postcss@^6.0.6: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.10.tgz#c311b89734483d87a91a56dc9e53f15f4e6e84e4" dependencies: - chalk "^2.0.1" - source-map "^0.5.6" - supports-color "^4.2.0" + chalk "^2.1.0" + source-map "^0.5.7" + supports-color "^4.2.1" postmark@^1.4.1: version "1.4.1" @@ -6602,8 +6697,8 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" prettier@^1.0.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.5.3.tgz#59dadc683345ec6b88f88b94ed4ae7e1da394bfe" + version "1.6.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.6.1.tgz#850f411a3116226193e32ea5acfc21c0f9a76d7d" pretty-bytes@^4.0.2: version "4.0.2" @@ -6629,7 +6724,7 @@ prismjs@^1.6.0: optionalDependencies: clipboard "^1.5.5" -private@^0.1.6: +private@^0.1.6, private@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" @@ -6641,13 +6736,19 @@ process@^0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" -promise@7.1.1, promise@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf" +promise@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.1.tgz#e45d68b00a17647b6da711bf85ed6ed47208f450" + dependencies: + asap "~2.0.3" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" dependencies: asap "~2.0.3" @@ -6664,12 +6765,12 @@ protobufjs-no-cli@^5.0.1: dependencies: bytebuffer "~5" -proxy-addr@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" +proxy-addr@~1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918" dependencies: forwarded "~0.1.0" - ipaddr.js "1.3.0" + ipaddr.js "1.4.0" prr@~0.0.0: version "0.0.0" @@ -6711,6 +6812,10 @@ qs@6.4.0, qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" +qs@6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" + qs@~6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/qs/-/qs-6.0.4.tgz#51019d84720c939b82737e84556a782338ecea7b" @@ -6776,8 +6881,8 @@ raven-js@^3.14.0: resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.17.0.tgz#779457ac7910512c3c2cc9bb6d0a9eeb59a969ec" raven@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/raven/-/raven-2.1.0.tgz#1b624e56374d9c9d93c74448461a2a356ce37527" + version "2.1.2" + resolved "https://registry.yarnpkg.com/raven/-/raven-2.1.2.tgz#4aa7a72c4b3061d7fde06bfc62d669a74a651e27" dependencies: cookie "0.3.1" json-stringify-safe "5.0.1" @@ -6808,51 +6913,48 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: strip-json-comments "~2.0.1" react-apollo@^1.2.0: - version "1.4.6" - resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-1.4.6.tgz#b63002879680d0ebdcfb7623acf9df75a0e43bb7" + version "1.4.15" + resolved "https://registry.yarnpkg.com/react-apollo/-/react-apollo-1.4.15.tgz#3a213d11b847da7db03c4619ac640df734f9c4b5" dependencies: apollo-client "^1.4.0" - graphql-anywhere "^3.0.0" graphql-tag "^2.0.0" hoist-non-react-statics "^2.2.0" invariant "^2.2.1" - lodash.flatten "^4.2.0" - lodash.isequal "^4.1.1" - lodash.isobject "^3.0.2" lodash.pick "^4.4.0" object-assign "^4.0.1" prop-types "^15.5.8" -react-app-rewire-styled-components@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-app-rewire-styled-components/-/react-app-rewire-styled-components-2.0.0.tgz#7ebdb1033993da98c853e623fe52b8a75025db6a" +react-app-rewire-styled-components@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-app-rewire-styled-components/-/react-app-rewire-styled-components-3.0.0.tgz#0dd37b9ee1bd5245ccc5fb8d6fc93971019d8036" dependencies: babel-plugin-styled-components "^1.1.4" + react-app-rewired "^1.2.0" -react-app-rewired@^1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-1.0.11.tgz#321ee7ce8bafe53ca797b0b5536cf9576bd089a4" +react-app-rewired@^1.0.5, react-app-rewired@^1.2.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-1.2.4.tgz#f009de42dbd64a19a3d7d533277e325d7992e397" dependencies: cross-spawn "^5.1.0" dotenv "^4.0.0" -react-dev-utils@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-3.0.2.tgz#1a42263e9b6aa11dcb45d69dfe5eb1b354bd5531" +react-dev-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-4.0.0.tgz#76467b380946197e738aab5683336b5439e979ba" dependencies: address "1.0.2" - anser "1.4.1" babel-code-frame "6.22.0" chalk "1.1.3" - cross-spawn "4.0.2" + cross-spawn "5.1.0" detect-port-alt "1.1.3" escape-string-regexp "1.0.5" - filesize "3.3.0" + filesize "3.5.10" + global-modules "1.0.0" gzip-size "3.0.0" - html-entities "1.2.1" - inquirer "3.1.1" + inquirer "3.2.1" is-root "1.0.0" opn "5.1.0" + react-error-overlay "^2.0.0" recursive-readdir "2.2.1" shell-quote "1.6.1" sockjs-client "1.1.4" @@ -6860,10 +6962,10 @@ react-dev-utils@^3.0.2: text-table "0.2.0" react-dom-factories@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/react-dom-factories/-/react-dom-factories-1.0.0.tgz#f43c05e5051b304f33251618d5bc859b29e46b6d" + version "1.0.1" + resolved "https://registry.yarnpkg.com/react-dom-factories/-/react-dom-factories-1.0.1.tgz#c50692ac5ff1adb39d86dfe6dbe3485dacf58455" -react-dom@^15.4.1: +"react-dom@^15 || ^16", react-dom@^15.4.1: version "15.6.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.1.tgz#2cb0ed4191038e53c209eb3a79a23e2a4cf99470" dependencies: @@ -6872,20 +6974,22 @@ react-dom@^15.4.1: object-assign "^4.1.0" prop-types "^15.5.10" -react-error-overlay@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-1.0.9.tgz#988e48f6f343afa97a719c4ddae51b8fe8ccfee8" +react-error-overlay@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-2.0.0.tgz#0251951eb6315dee45f532f3f59f854086c1462e" dependencies: - anser "1.2.5" + anser "1.4.1" babel-code-frame "6.22.0" - babel-runtime "6.23.0" - react-dev-utils "^3.0.2" + babel-runtime "6.26.0" + html-entities "1.2.1" + react "^15 || ^16" + react-dom "^15 || ^16" settle-promise "1.0.0" source-map "0.5.6" react-helmet@5.x: - version "5.1.3" - resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-5.1.3.tgz#cd40626593a29eecf684b6d38d711f44c48188af" + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-5.2.0.tgz#a81811df21313a6d55c5f058c4aeba5d6f3d97a7" dependencies: deep-equal "^1.0.1" object-assign "^4.1.1" @@ -6914,11 +7018,10 @@ react-portal@^3.1.0: prop-types "^15.5.8" react-redux@^5.0.2: - version "5.0.5" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.5.tgz#f8e8c7b239422576e52d6b7db06439469be9846a" + version "5.0.6" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.6.tgz#23ed3a4f986359d68b5212eaaa681e60d6574946" dependencies: - create-react-class "^15.5.3" - hoist-non-react-statics "^1.0.3" + hoist-non-react-statics "^2.2.1" invariant "^2.0.0" lodash "^4.2.0" lodash-es "^4.2.0" @@ -6932,65 +7035,66 @@ react-remarkable@^1.1.1: remarkable "^1.4.1" react-router-dom@^4.0.0-beta.7: - version "4.1.2" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.1.2.tgz#7f8a7ca868d32acadd19ca09543b40d26df8ec37" + version "4.2.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.2.2.tgz#c8a81df3adc58bba8a76782e946cbd4eae649b8d" dependencies: - history "^4.5.1" + history "^4.7.2" + invariant "^2.2.2" loose-envify "^1.3.1" prop-types "^15.5.4" - react-router "^4.1.1" + react-router "^4.2.0" + warning "^3.0.0" -react-router@^4.0.0-beta.7, react-router@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.1.2.tgz#7ae027341abc42eb08ad9f7a8cac08d0563672ce" +react-router@^4.0.0-beta.7, react-router@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.2.0.tgz#61f7b3e3770daeb24062dae3eedef1b054155986" dependencies: - history "^4.6.0" - hoist-non-react-statics "^1.2.0" + history "^4.7.2" + hoist-non-react-statics "^2.3.0" invariant "^2.2.2" loose-envify "^1.3.1" - path-to-regexp "^1.5.3" + path-to-regexp "^1.7.0" prop-types "^15.5.4" warning "^3.0.0" react-scripts@^1.0.0: - version "1.0.10" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-1.0.10.tgz#876035594742220f40ffb865a4c7e8dc0fa7ae23" + version "1.0.12" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-1.0.12.tgz#a08a8214431c45db7424246d6f5510cc19b42927" dependencies: - autoprefixer "7.1.1" + autoprefixer "7.1.2" babel-core "6.25.0" babel-eslint "7.2.3" babel-jest "20.0.3" - babel-loader "7.0.0" - babel-preset-react-app "^3.0.1" - babel-runtime "6.23.0" + babel-loader "7.1.1" + babel-preset-react-app "^3.0.2" + babel-runtime "6.26.0" case-sensitive-paths-webpack-plugin "2.1.1" chalk "1.1.3" css-loader "0.28.4" dotenv "4.0.0" - eslint "3.19.0" - eslint-config-react-app "^1.0.5" - eslint-loader "1.7.1" - eslint-plugin-flowtype "2.34.0" - eslint-plugin-import "2.2.0" - eslint-plugin-jsx-a11y "5.0.3" + eslint "4.4.1" + eslint-config-react-app "^2.0.0" + eslint-loader "1.9.0" + eslint-plugin-flowtype "2.35.0" + eslint-plugin-import "2.7.0" + eslint-plugin-jsx-a11y "5.1.1" eslint-plugin-react "7.1.0" - extract-text-webpack-plugin "2.1.2" + extract-text-webpack-plugin "3.0.0" file-loader "0.11.2" fs-extra "3.0.1" html-webpack-plugin "2.29.0" jest "20.0.4" object-assign "4.1.1" - postcss-flexbugs-fixes "3.0.0" + postcss-flexbugs-fixes "3.2.0" postcss-loader "2.0.6" - promise "7.1.1" - react-dev-utils "^3.0.2" - react-error-overlay "^1.0.9" + promise "8.0.1" + react-dev-utils "^4.0.0" style-loader "0.18.2" - sw-precache-webpack-plugin "0.11.3" + sw-precache-webpack-plugin "0.11.4" url-loader "0.5.9" - webpack "2.6.1" - webpack-dev-server "2.5.0" - webpack-manifest-plugin "1.1.0" + webpack "3.5.1" + webpack-dev-server "2.7.1" + webpack-manifest-plugin "1.2.1" whatwg-fetch "2.0.3" optionalDependencies: fsevents "1.1.2" @@ -7003,8 +7107,8 @@ react-side-effect@^1.1.0: shallowequal "^1.0.1" react-stripe-checkout@^2.2.5: - version "2.4.0" - resolved "https://registry.yarnpkg.com/react-stripe-checkout/-/react-stripe-checkout-2.4.0.tgz#1b9cdcc79ef131199cc39e944b34e1e81a00cd10" + version "2.6.3" + resolved "https://registry.yarnpkg.com/react-stripe-checkout/-/react-stripe-checkout-2.6.3.tgz#3173a870b04e5a3c321a06d24cd53c6030111c45" react-textarea-autosize@^4.0.5: version "4.3.2" @@ -7029,7 +7133,7 @@ react-trend@^1.2.4: dependencies: prop-types "^15.5.8" -"react@^0.14.0 || ^15.0.0", react@^15.4.1: +"react@^0.14.0 || ^15.0.0", "react@^15 || ^16", react@^15.4.1: version "15.6.1" resolved "https://registry.yarnpkg.com/react/-/react-15.6.1.tgz#baa8434ec6780bde997cdc380b79cd33b96393df" dependencies: @@ -7106,20 +7210,6 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - dependencies: - resolve "^1.1.6" - recompose@^0.23.1: version "0.23.5" resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.23.5.tgz#72ac8261246bec378235d187467d02a721e8b1de" @@ -7181,10 +7271,14 @@ regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" -regenerator-runtime@^0.10.0: +regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + regenerator-transform@0.9.11: version "0.9.11" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" @@ -7193,6 +7287,14 @@ regenerator-transform@0.9.11: babel-types "^6.19.0" private "^0.1.6" +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -7261,8 +7363,8 @@ remarkable@^1.4.1: autolinker "~0.15.0" remove-trailing-separator@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" renderkid@^2.0.1: version "2.0.1" @@ -7333,7 +7435,7 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -require-uncached@^1.0.2: +require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" dependencies: @@ -7344,13 +7446,20 @@ requires-port@1.0.x, requires-port@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + 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" -resolve-pathname@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.1.0.tgz#e8358801b86b83b17560d4e3c382d7aef2100944" +resolve-pathname@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" resolve-url@^0.2.1: version "0.2.1" @@ -7360,9 +7469,9 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" +resolve@^1.2.0, resolve@^1.3.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" dependencies: path-parse "^1.0.5" @@ -7381,8 +7490,8 @@ restore-cursor@^2.0.0: signal-exit "^3.0.2" rethinkdb-migrate@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/rethinkdb-migrate/-/rethinkdb-migrate-1.2.0.tgz#16d87f33439a034aa44216c8fe579753c409aec3" + version "1.2.1" + resolved "https://registry.yarnpkg.com/rethinkdb-migrate/-/rethinkdb-migrate-1.2.1.tgz#cef077c67fc8fb79356b2ac1b9ee44a415c4f2c6" dependencies: fs-extra "^2.0.0" joi "^10.1.0" @@ -7399,8 +7508,8 @@ rethinkdb@^2.3.3: bluebird ">= 2.3.2 < 3" rethinkdbdash@^2.3.27, rethinkdbdash@^2.3.29: - version "2.3.29" - resolved "https://registry.yarnpkg.com/rethinkdbdash/-/rethinkdbdash-2.3.29.tgz#252e454c89a86783301eb4171959386bdb268c0c" + version "2.3.31" + resolved "https://registry.yarnpkg.com/rethinkdbdash/-/rethinkdbdash-2.3.31.tgz#fe2f73d1fa6e6f5d96d8e881292013cf6dca914d" dependencies: bluebird ">= 3.0.1" @@ -7427,12 +7536,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^2.0.0" inherits "^2.0.1" -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - dependencies: - once "^1.3.0" - run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -7449,13 +7552,9 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - rxjs@^5.0.0-beta.11: - version "5.4.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.2.tgz#2a3236fcbf03df57bae06fd6972fd99e5c08fcf7" + version "5.4.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.3.tgz#0758cddee6033d68e0fd53676f0f3596ce3d483f" dependencies: symbol-observable "^1.0.1" @@ -7481,14 +7580,10 @@ s3@~4.2.0: pend "~1.1.2" rimraf "~2.2.8" -safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -safe-buffer@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" - sane@~1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/sane/-/sane-1.6.0.tgz#9610c452307a135d29c1fdfe2547034180c46775" @@ -7528,8 +7623,8 @@ selection-is-backward@^1.0.0: resolved "https://registry.yarnpkg.com/selection-is-backward/-/selection-is-backward-1.0.0.tgz#97a54633188a511aba6419fc5c1fa91b467e6be1" selfsigned@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.9.1.tgz#cdda4492d70d486570f87c65546023558e1dfa5a" + version "1.10.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52" dependencies: node-forge "0.6.33" @@ -7539,32 +7634,32 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -semver@^5.4.1: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" -send@0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/send/-/send-0.15.3.tgz#5013f9f99023df50d1bd9892c19e3defd1d53309" +send@0.15.4: + version "0.15.4" + resolved "https://registry.yarnpkg.com/send/-/send-0.15.4.tgz#985faa3e284b0273c793364a35c6737bd93905b9" dependencies: - debug "2.6.7" - depd "~1.1.0" + debug "2.6.8" + depd "~1.1.1" destroy "~1.0.4" encodeurl "~1.0.1" escape-html "~1.0.3" etag "~1.8.0" fresh "0.5.0" - http-errors "~1.6.1" + http-errors "~1.6.2" mime "1.3.4" ms "2.0.0" on-finished "~2.3.0" range-parser "~1.2.0" statuses "~1.3.1" +serialize-javascript@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" + serve-index@^1.7.2: version "1.9.0" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.0.tgz#d2b280fc560d616ee81b48bf0fa82abed2485ce7" @@ -7577,14 +7672,14 @@ serve-index@^1.7.2: mime-types "~2.1.15" parseurl "~1.3.1" -serve-static@1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.3.tgz#9f4ba19e2f3030c547f8af99107838ec38d5b1e2" +serve-static@1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.4.tgz#9b6aa98eeb7253c4eedc4c1f6fdbca609901a961" dependencies: encodeurl "~1.0.1" escape-html "~1.0.3" parseurl "~1.3.1" - send "0.15.3" + send "0.15.4" serviceworker-cache-polyfill@^4.0.0: version "4.0.0" @@ -7660,17 +7755,9 @@ shell-quote@1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" -shelljs@^0.7.5: - version "0.7.8" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - shellwords@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14" + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" @@ -7689,8 +7776,8 @@ slate-markdown@0.1.0: styled-components "^2.0.0" slate@^0.20.1: - version "0.20.6" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.20.6.tgz#c9b7825ece8e6d26c16543fdbbd3b9999f3b3ac6" + version "0.20.7" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.20.7.tgz#083ca9074dc7fd3ad8863985e6d92ed76bdc9eff" dependencies: cheerio "^0.22.0" debug "^2.3.2" @@ -7753,17 +7840,6 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -sockjs-client@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.2.tgz#f0212a8550e4c9468c8cceaeefd2e3493c033ad5" - dependencies: - debug "^2.2.0" - eventsource "0.1.6" - faye-websocket "~0.11.0" - inherits "^2.0.1" - json3 "^3.3.2" - url-parse "^1.1.1" - sockjs-client@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" @@ -7792,10 +7868,6 @@ source-list-map@^0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" -source-list-map@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.2.tgz#9889019d1024cce55cdc069498337ef6186a11a1" - source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" @@ -7809,26 +7881,24 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -"source-map-support@0.3.2 - 1.0.0": +"source-map-support@0.3.2 - 1.0.0", source-map-support@^0.4.15: version "0.4.16" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.16.tgz#16fecf98212467d017d586a2af68d628b9421cd8" dependencies: source-map "^0.5.6" -source-map-support@^0.4.15, source-map-support@^0.4.2: - version "0.4.15" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" - dependencies: - source-map "^0.5.6" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" -source-map@0.5.6, source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: +source-map@0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1, source-map@~0.5.3: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + source-map@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" @@ -7920,8 +7990,8 @@ stack-trace@0.0.9: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695" stackframe@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.3.tgz#fe64ab20b170e4ce49044b126c119dfa0e5dc7cc" + version "1.0.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" staged-git-files@0.0.4: version "0.0.4" @@ -7999,7 +8069,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@^2.0.0: +string-width@^2.0.0, string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: @@ -8057,8 +8127,8 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" stripe@^4.15.0: - version "4.23.1" - resolved "https://registry.yarnpkg.com/stripe/-/stripe-4.23.1.tgz#df52977323d3ee887a07ac5905703fcdc045d2ee" + version "4.24.1" + resolved "https://registry.yarnpkg.com/stripe/-/stripe-4.24.1.tgz#b177079e132d2f71cd28a010f5cfb0572e13dbd0" dependencies: bluebird "^2.10.2" lodash.isplainobject "^4.0.6" @@ -8076,9 +8146,9 @@ style-loader@0.18.2: loader-utils "^1.0.2" schema-utils "^0.3.0" -styled-components@2.x, styled-components@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-2.1.1.tgz#7e9b5bc319ee3963b47aebb74f4658119ea9d484" +styled-components@2.1.2, styled-components@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-2.1.2.tgz#bb419978e1287c5d0d88fa9106b2dd75f66a324c" dependencies: buffer "^5.0.3" css-to-react-native "^2.0.3" @@ -8091,8 +8161,8 @@ styled-components@2.x, styled-components@^2.0.0: supports-color "^3.2.3" stylis@^3.2.1: - version "3.2.6" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.2.6.tgz#6291df64aae62e9f537ab24b7d8a62b2428a34e9" + version "3.2.14" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.2.14.tgz#30700e0507b7a804c03d7e2c28d8ee865697fb50" subscriptions-transport-ws@^0.7.0: version "0.7.3" @@ -8113,15 +8183,15 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3: +supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: has-flag "^1.0.0" -supports-color@^4.0.0, supports-color@^4.2.0, supports-color@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" +supports-color@^4.0.0, supports-color@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" dependencies: has-flag "^2.0.0" @@ -8137,9 +8207,9 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" -sw-precache-webpack-plugin@0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.11.3.tgz#4b5308eaf64f8afc8b0e9528a6f50a8f9cd9edac" +sw-precache-webpack-plugin@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.11.4.tgz#a695017e54eed575551493a519dc1da8da2dc5e0" dependencies: del "^2.2.2" sw-precache "^5.1.1" @@ -8175,9 +8245,9 @@ symbol-tree@^3.2.1: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" +table@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" dependencies: ajv "^4.7.0" ajv-keywords "^1.0.0" @@ -8186,7 +8256,7 @@ table@^3.7.8: slice-ansi "0.0.4" string-width "^2.0.0" -tapable@^0.2.7, tapable@~0.2.5: +tapable@^0.2.7: version "0.2.8" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" @@ -8237,6 +8307,10 @@ thunky@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" +time-stamp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" + timed-out@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -8250,14 +8324,14 @@ timed-out@^3.0.0: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" timers-browserify@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" + version "2.0.4" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" dependencies: setimmediate "^1.0.4" tiny-emitter@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.1.tgz#e65919d91e488e2a78f7ebe827a56c6b188d51af" + version "2.0.2" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c" tinycolor@0.x: version "0.0.1" @@ -8277,7 +8351,7 @@ to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" -to-fast-properties@^1.0.1: +to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -8392,13 +8466,13 @@ uc.micro@^1.0.1: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.3.tgz#7ed50d5e0f9a9fb0a573379259f2a77458d50192" uglify-js@3.0.x, uglify-js@^3.0.13: - version "3.0.25" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.25.tgz#3dc190b0ee437497e449bc6f785665b06afbe052" + version "3.0.28" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.28.tgz#96b8495f0272944787b5843a1679aa326640d5f7" dependencies: - commander "~2.9.0" + commander "~2.11.0" source-map "~0.5.1" -uglify-js@^2.6, uglify-js@^2.8.27, uglify-js@^2.8.29: +uglify-js@^2.6, uglify-js@^2.8.29: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" dependencies: @@ -8424,8 +8498,8 @@ uid-number@^0.0.6: resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" uid-safe@~2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.4.tgz#3ad6f38368c6d4c8c75ec17623fb79aa1d071d81" + version "2.1.5" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" dependencies: random-bytes "~1.0.0" @@ -8473,8 +8547,8 @@ uniqs@^2.0.0: resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" universalify@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778" + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" @@ -8521,8 +8595,8 @@ upper-case@^1.1.1: resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" urijs@^1.16.1: - version "1.18.10" - resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.18.10.tgz#b94463eaba59a1a796036a467bb633c667f221ab" + version "1.18.12" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.18.12.tgz#f04d91e1fabb29c16fc842f9a14ee8ddc3fda64e" urix@^0.1.0: version "0.1.0" @@ -8548,7 +8622,7 @@ url-parse@1.0.x: querystringify "0.0.x" requires-port "1.0.x" -url-parse@^1.1.1, url-parse@^1.1.8: +url-parse@^1.1.8: version "1.1.9" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.9.tgz#c67f1d775d51f0a18911dd7b3ffad27bb9e5bd19" dependencies: @@ -8578,12 +8652,6 @@ user-home@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - dependencies: - os-homedir "^1.0.0" - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -8618,7 +8686,7 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" -v8flags@^2.0.10: +v8flags@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" dependencies: @@ -8631,9 +8699,9 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" -value-equal@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.2.1.tgz#c220a304361fce6994dbbedaa3c7e1a1b895871d" +value-equal@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" vary@^1, vary@~1.1.1: version "1.1.1" @@ -8643,11 +8711,13 @@ vendors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" dependencies: - extsprintf "1.0.2" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" vm-browserify@0.0.4: version "0.0.4" @@ -8671,7 +8741,7 @@ watch@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" -watchpack@^1.3.1, watchpack@^1.4.0: +watchpack@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" dependencies: @@ -8700,21 +8770,22 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" webidl-conversions@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0" + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" -webpack-dev-middleware@^1.10.2: - version "1.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz#09691d0973a30ad1f82ac73a12e2087f0a4754f9" +webpack-dev-middleware@^1.11.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" dependencies: memory-fs "~0.4.1" mime "^1.3.4" path-is-absolute "^1.0.0" range-parser "^1.0.3" + time-stamp "^2.0.0" -webpack-dev-server@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.5.0.tgz#4d36a728b03b8b2afa48ed302428847cea2840ad" +webpack-dev-server@2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.7.1.tgz#21580f5a08cd065c71144cf6f61c345bca59a8b8" dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -8726,21 +8797,23 @@ webpack-dev-server@2.5.0: html-entities "^1.2.0" http-proxy-middleware "~0.17.4" internal-ip "^1.2.0" + ip "^1.1.5" + loglevel "^1.4.1" opn "4.0.2" portfinder "^1.0.9" selfsigned "^1.9.1" serve-index "^1.7.2" sockjs "0.3.18" - sockjs-client "1.1.2" + sockjs-client "1.1.4" spdy "^3.4.1" strip-ansi "^3.0.0" supports-color "^3.1.1" - webpack-dev-middleware "^1.10.2" + webpack-dev-middleware "^1.11.0" yargs "^6.0.0" -webpack-manifest-plugin@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-1.1.0.tgz#6b6c718aade8a2537995784b46bd2e9836057caa" +webpack-manifest-plugin@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-1.2.1.tgz#e02f0846834ce98dca516946ee3ee679745e7db1" dependencies: fs-extra "^0.30.0" lodash ">=3.5 <5" @@ -8749,13 +8822,6 @@ webpack-node-externals@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz#232c62ec6092b100635a3d29d83c1747128df9bd" -webpack-sources@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb" - dependencies: - source-list-map "^1.1.1" - source-map "~0.5.3" - webpack-sources@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf" @@ -8763,35 +8829,36 @@ webpack-sources@^1.0.1: source-list-map "^2.0.0" source-map "~0.5.3" -webpack@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.6.1.tgz#2e0457f0abb1ac5df3ab106c69c672f236785f07" +webpack@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.5.1.tgz#b749ee3d2b5a118dad53e8e41585b3f71e75499a" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" - ajv "^4.7.0" - ajv-keywords "^1.1.1" + ajv "^5.1.5" + ajv-keywords "^2.0.0" async "^2.1.2" - enhanced-resolve "^3.0.0" + enhanced-resolve "^3.4.0" + escope "^3.6.0" interpret "^1.0.0" json-loader "^0.5.4" json5 "^0.5.1" loader-runner "^2.3.0" - loader-utils "^0.2.16" + loader-utils "^1.1.0" memory-fs "~0.4.1" mkdirp "~0.5.0" node-libs-browser "^2.0.0" source-map "^0.5.3" - supports-color "^3.1.0" - tapable "~0.2.5" - uglify-js "^2.8.27" - watchpack "^1.3.1" - webpack-sources "^0.2.3" - yargs "^6.0.0" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" webpack@^3.0.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.4.1.tgz#4c3f4f3fb318155a4db0cb6a36ff05c5697418f4" + version "3.5.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.5.5.tgz#3226f09fc8b3e435ff781e7af34f82b68b26996c" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" @@ -8855,12 +8922,18 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@1.2.x, which@^1.2.10, which@^1.2.12, which@^1.2.9: +which@1.2.x: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" dependencies: isexe "^2.0.0" +which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" @@ -8877,17 +8950,21 @@ window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" -wordwrap@0.0.2, wordwrap@~0.0.2: +wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" worker-farm@^1.3.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.4.1.tgz#a438bc993a7a7d133bcb6547c95eca7cff4897d8" + version "1.5.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.0.tgz#adfdf0cd40581465ed0a1f648f9735722afd5c8d" dependencies: errno "^0.1.4" xtend "^4.0.1" @@ -8903,7 +8980,7 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^1.1.2: +write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: version "1.3.4" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" dependencies: @@ -8911,6 +8988,17 @@ write-file-atomic@^1.1.2: imurmurhash "^0.1.4" slide "^1.1.5" +write-file-webpack-plugin@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/write-file-webpack-plugin/-/write-file-webpack-plugin-4.1.0.tgz#ed6ae9b54b68719c4ef4899fba70ce7cbdad0154" + dependencies: + chalk "^1.1.1" + debug "^2.6.8" + filesize "^3.2.1" + lodash "^4.5.1" + mkdirp "^0.5.1" + moment "^2.11.2" + write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" @@ -8918,10 +9006,10 @@ write@^0.2.1: mkdirp "^0.5.1" ws@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.0.0.tgz#98ddb00056c8390cb751e7788788497f99103b6c" + version "3.1.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.1.0.tgz#8afafecdeab46d572e5397ee880739367aa2f41c" dependencies: - safe-buffer "~5.0.1" + safe-buffer "~5.1.0" ultron "~1.1.0" ws@~0.4.32: @@ -9059,3 +9147,7 @@ yargs@~3.10.0: cliui "^2.1.0" decamelize "^1.0.0" window-size "0.1.0" + +zen-observable-ts@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.4.0.tgz#a74bc9fe59747948a577bd513d438e70fcfae7e2"