├── .babelrc
├── .gitignore
├── .npmignore
├── .nvmrc
├── LICENSE.md
├── README.md
├── example
├── .babelrc
├── README.md
├── actions
│ └── index.js
├── components
│ ├── Layout.js
│ ├── Picker.js
│ └── Posts.js
├── controllers
│ └── App.js
├── index.html
├── index.js
├── package.json
├── reducers
│ └── index.js
├── selectors
│ └── index.js
├── server.js
├── store
│ └── configureStore.js
└── webpack.config.js
├── package.json
├── src
├── index.js
├── selector_utils.js
└── utils.js
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015-loose", "react"],
3 | "plugins": []
4 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | lib
2 | node_modules
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | # Do not publish .babelrc to npm since it can create problems with babel 5 in other projects
2 | .babelrc
3 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 5.1
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Alan Johnson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # react-redux-controller
2 |
3 | **react-redux-controller** is a library that adds some opinion to the [react-redux](https://github.com/rackt/react-redux) binding of [React](https://facebook.github.io/react/index.html) components to the [Redux](http://redux.js.org/) store. It creates the entity of a `Controller`, which is intended to be the single point of integration between React and Redux. The controller passes data and callbacks to the UI components via the [React `context`](https://facebook.github.io/react/docs/context.html). It's one solution to [the question](http://stackoverflow.com/a/34320909/807674) of how to get data and controller-like methods (e.g. event handlers) to the React UI components.
4 |
5 | > **Note** Although _react-redux-controller_ continues to be used in production at Artsy, it is not actively being developed. We may or may not continue to develop it. The issues on the future of the architecture should be considered a doucment on lessons learned, rather than an intention to actually release a future version. Anyone should feel free use this code as-is or develop their own fork.
6 |
7 | ## Philosophy
8 |
9 | This library takes the opinion that React components should solely be focused on the job of rendering and capturing user input, and that Redux actions and reducers should be soley focused on the job of managing the store and providing a view of the state of the store in the form of [selectors](http://redux.js.org/docs/basics/UsageWithReact.html). The plumbing of distributing data to components, as well as deciding what to fetch, when to fetch, how to manage latency, and what to do with error handling, should be vested in an explicit controller layer.
10 |
11 | This differs from alternative methods in a number of ways:
12 |
13 | - The ancestors of a component are not responsible for conveying dependencies to via `props` -- particularly when it comes to dependencies the ancestors don't use themselves.
14 | - The components are not coupled to Redux in any way -- no `connect` distributed throughout the component tree.
15 | - There are no [smart components](https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.m5y0saa0k). Well there's one, but it's hidden inside the Controller.
16 | - Action creators do not perform any fetching. They are only responsible for constructing action objects, as is the case in vanilla Redux, with no middleware needed.
17 |
18 | ## Usage
19 |
20 | The **controller** factory requires 3 parameters:
21 |
22 | - The root component of the UI component tree.
23 | - An object that holds controller generator functions.
24 | - Any number of selector bundles, which are likely simply imported selector modules, each selector annotated a [`propType`](https://facebook.github.io/react/docs/reusable-components.html) that indicates what kind of data it provides.
25 |
26 | The functionality of the controller layer is implemented using [generator functions](http://www.2ality.com/2015/03/es6-generators.html). Within these functions, `yield` may be used await the results of [Promises](http://www.2ality.com/2014/09/es6-promises-foundations.html) and to request selector values and root component properties. As a very rough sketch of how you might use this library:
27 |
28 | ```javascript
29 | // controllers/app_controller.js
30 |
31 | import { controller, getProps } from 'react-redux-controller';
32 | import AppLayout from '../components/app_layout';
33 | import * as actions from '../actions';
34 | import * as mySelectors from '../selectors/my_selectors';
35 |
36 | const controllerGenerators = {
37 | *initialize() {
38 | // ... any code that should run before initial render (like loading actions)
39 | },
40 | *onUserActivity(meaningfulParam) {
41 | const { dispatch, otherData } = yield getProps;
42 | dispatch(actions.fetchingData());
43 | try {
44 | const apiData = yield httpRequest(`http://myapi.com/${otherData}`);
45 | return dispatch(actions.fetchingSuccessful(apiData));
46 | } catch (err) {
47 | return dispatch(actions.errorFetching(err));
48 | }
49 | },
50 | // ... other controller generators follow
51 | };
52 |
53 | const selectorBundles = [
54 | mySelectors,
55 | ];
56 |
57 | export default controller(AppLayout, controllerGenerators, selectorBundles);
58 |
59 | ```
60 |
61 | ## Example
62 |
63 | To see an in-depth example of usage of this library, [the async example from the redux guide](http://redux.js.org/docs/advanced/ExampleRedditAPI.html) is ported to use the controller approach [in this repo](https://github.com/artsy/react-redux-controller/blob/master/example/README.md).
64 |
--------------------------------------------------------------------------------
/example/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["react", "es2015"],
3 | "env": {
4 | "development": {
5 | "plugins": [
6 | ["react-transform", {
7 | "transforms": [{
8 | "transform": "react-transform-hmr",
9 | "imports": ["react"],
10 | "locals": ["module"]
11 | }]
12 | }]
13 | ]
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | # Async example
2 |
3 | This directory contains a port of [the async example from the redux guide](http://redux.js.org/docs/advanced/ExampleRedditAPI.html). Here, we point out some of the points of interest in using react-redux-controller.
4 |
5 | ## Structual differences from original example
6 |
7 | Below are some of the fundamental ways in which the approach here differs from the async example:
8 |
9 | ### Dumb components
10 |
11 | In line with Dan Abramov's [post on Smart and Dumb components](https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.ho45ybvub), it's interesting to note that the controller approach hides the smart components entirely. Here, [all of the components](https://github.com/artsy/react-redux-controller/tree/master/example/components) are stateless functional components, which lets them focus purely on UI structure and I/O. Even up to the root UI component, they are directly coupled only to React itself and other components.
12 |
13 | ### Minimal use of manual `props` passing
14 |
15 | In this paradigm, typical React `props` passing is not used for general dependencies. Instead, it's used for intentional coupling between components. This might be an iterator-iteratee relationship, or configuration of a particular use of a general-purpose subcomponent. When the relationship is simply structural, no `props` are passed. See the [Layout component](https://github.com/artsy/react-redux-controller/blob/master/example/components/Layout.js#L31).
16 |
17 | This small example doesn't really sell the benefits of this decoupling. But in a design with deeply nested components and a lot of user interactions, the branches of the component tree would be vastly simplified.
18 |
19 | ### Context types to declare dependencies
20 |
21 | The `contextTypes` annotation on components is used to formalize the dependencies between the controller and the components. See the [Layout component](https://github.com/artsy/react-redux-controller/blob/master/example/components/Layout.js#L38-L43), for instance.
22 |
23 | ### Use of selectors as the materialize view of the store
24 |
25 | As mentioned in the Redux guide, it's best to keep the store itself normalized. But normalization isn't the ideal way for the controller methods and the views to consume model data, especially when it comes to derived data. By storing all calculations in a [selector layer](https://github.com/artsy/react-redux-controller/blob/master/example/selectors/index.js), components can be written to depend only on the derived data. Note also how the selectors are annotated with the prop types they return.
26 |
27 | In real use, you might use tools like reselect and normalizr, as suggested in the Redux guide.
28 |
29 | ### Mapping of DOM event to domain event
30 |
31 | In this example, the DOM belongs to the view layer, and the view performs any DOM manipulation before invoking controller methods. See the [Layout component](https://github.com/artsy/react-redux-controller/blob/master/example/components/Layout.js#L18)'s handling of the refresh button.
32 |
33 | ### Dumb action creators
34 |
35 | Compared to [redux-thunk](https://github.com/gaearon/redux-thunk) and similar approaches to handling asynchrony, [action creators](https://github.com/artsy/react-redux-controller/blob/master/example/actions/index.js) no longer contain any real logic, which now exists in the explicit controller layer.
36 |
37 | ## Practical usage
38 |
39 | This library offers a number of ways of accomplishing basic controller tasks that differ from other approaches. This example helps to document exactly how it works in practice.
40 |
41 | ### `*initialize` method for startup actions
42 |
43 | This magic generator method can be used to kick off any activity that might need to happen upon launching the application. In a [universal app](https://medium.com/@mjackson/universal-javascript-4761051b7ae9), the initial state would be delivered with the webpage, so that the client could boot right up into it's steady-state. But in a client-side application that needs to be able to make a cold start, like this one, this is the way to initialize. See [the App controller](https://github.com/artsy/react-redux-controller/blob/master/example/controllers/App.js#L10-14).
44 |
45 | ### `yield` to resolve promises
46 |
47 | Use of [co](https://github.com/tj/co) allows ES6 `yield` to be used to suspend controller generators on Promises, which are resumed returning the resolved value of the promise (or throwing exceptions, in the case of rejection). This is used in the example to [fetch from the Reddit API](https://github.com/artsy/react-redux-controller/blob/master/example/controllers/App.js#L46). The upside of this is that regular control flow can be used, interleaved with asynchronicity.
48 |
49 | ### `yield` to get state and dispatch
50 |
51 | [Special symbols](https://github.com/artsy/react-redux-controller/blob/master/example/controllers/App.js#L4) can be used to access the controller's props, as injected by react-redux. These include the raw state from the store and `dispatch` for triggering state changes. [Controller generators use `yield`](https://github.com/artsy/react-redux-controller/blob/master/example/controllers/App.js#L17) to request these dependencies.
52 |
53 | ### `yield` to delegate to other controller methods
54 |
55 | Controller methods are composable. Behind the scenes, they are converted into regular method functions that return promises, and they are bound into a shared `this` context. This means you can call other controller methods and use `yield` await them, as seen in [the App controller](https://github.com/artsy/react-redux-controller/blob/master/example/controllers/App.js#L22).
56 |
--------------------------------------------------------------------------------
/example/actions/index.js:
--------------------------------------------------------------------------------
1 | export const REQUEST_POSTS = 'REQUEST_POSTS'
2 | export const RECEIVE_POSTS = 'RECEIVE_POSTS'
3 | export const SELECT_REDDIT = 'SELECT_REDDIT'
4 | export const INVALIDATE_REDDIT = 'INVALIDATE_REDDIT'
5 |
6 | export function selectReddit(reddit) {
7 | return {
8 | type: SELECT_REDDIT,
9 | reddit
10 | }
11 | }
12 |
13 | export function invalidateReddit(reddit) {
14 | return {
15 | type: INVALIDATE_REDDIT,
16 | reddit
17 | }
18 | }
19 |
20 | export function requestPosts(reddit) {
21 | return {
22 | type: REQUEST_POSTS,
23 | reddit
24 | }
25 | }
26 |
27 | export function receivePosts(reddit, posts) {
28 | return {
29 | type: RECEIVE_POSTS,
30 | reddit,
31 | posts,
32 | receivedAt: Date.now()
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/example/components/Layout.js:
--------------------------------------------------------------------------------
1 | import React, { PropTypes } from 'react'
2 | import Picker from '../components/Picker'
3 | import Posts from '../components/Posts'
4 |
5 | export default function Layout(_, { posts, isFetching, lastUpdated, onRefresh }) {
6 | return (
7 |
8 |
9 |
10 | {lastUpdated &&
11 |
12 | Last updated at {new Date(lastUpdated).toLocaleTimeString()}.
13 | {' '}
14 |
15 | }
16 | {!isFetching &&
17 | { e.preventDefault(); onRefresh() } }>
19 | Refresh
20 |
21 | }
22 |
23 | {isFetching && posts.length === 0 &&
24 |
Loading...
25 | }
26 | {!isFetching && posts.length === 0 &&
27 |
Empty.
28 | }
29 | {posts.length > 0 &&
30 |
33 | }
34 |
35 | )
36 | }
37 |
38 | Layout.contextTypes = {
39 | posts: PropTypes.array.isRequired,
40 | isFetching: PropTypes.bool.isRequired,
41 | lastUpdated: PropTypes.number,
42 | onRefresh: PropTypes.func.isRequired
43 | }
44 |
--------------------------------------------------------------------------------
/example/components/Picker.js:
--------------------------------------------------------------------------------
1 | import React, { PropTypes } from 'react'
2 |
3 | export default function Picker({ options }, { selectedReddit, onSelectReddit }) {
4 | return (
5 |
6 | { selectedReddit }
7 | onSelectReddit(e.target.value) }
8 | value={ selectedReddit }>
9 | { options.map(option =>
10 |
11 | { option }
12 | )
13 | }
14 |
15 |
16 | )
17 | }
18 |
19 | Picker.propTypes = {
20 | options: PropTypes.arrayOf(
21 | PropTypes.string.isRequired
22 | ).isRequired
23 | }
24 |
25 | Picker.contextTypes = {
26 | selectedReddit: PropTypes.string.isRequired,
27 | onSelectReddit: PropTypes.func.isRequired
28 | }
29 |
--------------------------------------------------------------------------------
/example/components/Posts.js:
--------------------------------------------------------------------------------
1 | import React, { PropTypes } from 'react'
2 |
3 | export default function Posts(_, { posts }) {
4 | return (
5 |
6 | { posts.map((post, i) =>
7 | { post.title }
8 | )}
9 |
10 | )
11 | }
12 |
13 | Posts.contextTypes = {
14 | posts: PropTypes.array.isRequired
15 | }
16 |
--------------------------------------------------------------------------------
/example/controllers/App.js:
--------------------------------------------------------------------------------
1 | import 'babel-polyfill'
2 | import fetch from 'isomorphic-fetch'
3 | import { controller, getProps } from 'react-redux-controller'
4 | import * as actions from '../actions'
5 | import * as selectors from '../selectors'
6 | import Layout from '../components/Layout'
7 |
8 | const controllerGenerators = {
9 | *initialize() {
10 | const { selectedReddit } = yield getProps
11 |
12 | yield this.fetchPostsIfNeeded(selectedReddit)
13 | },
14 |
15 | *onSelectReddit(nextReddit) {
16 | const { dispatch, selectedReddit } = yield getProps
17 |
18 | dispatch(actions.selectReddit(nextReddit))
19 |
20 | if (nextReddit !== selectedReddit) {
21 | yield this.fetchPostsIfNeeded(nextReddit)
22 | }
23 | },
24 |
25 | *onRefresh() {
26 | const { dispatch, selectedReddit } = yield getProps
27 |
28 | dispatch(actions.invalidateReddit(selectedReddit))
29 | yield this.fetchPostsIfNeeded(selectedReddit)
30 | },
31 |
32 | *fetchPostsIfNeeded(reddit) {
33 | const { postsByReddit } = yield getProps
34 |
35 | const posts = postsByReddit[reddit]
36 | if (!posts || !posts.isFetching || posts.didInvalidate) {
37 | yield this.fetchPosts(reddit)
38 | }
39 | },
40 |
41 | *fetchPosts(reddit) {
42 | const { dispatch } = yield getProps
43 |
44 | dispatch(actions.requestPosts(reddit))
45 | const response = yield fetch(`http://www.reddit.com/r/${reddit}.json`)
46 | const responseJson = yield response.json()
47 | const newPosts = responseJson.data.children.map(child => child.data)
48 | dispatch(actions.receivePosts(reddit, newPosts))
49 | }
50 | }
51 |
52 | export default controller(Layout, controllerGenerators, selectors)
53 |
--------------------------------------------------------------------------------
/example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Redux async example
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/example/index.js:
--------------------------------------------------------------------------------
1 | import 'babel-polyfill'
2 | import React from 'react'
3 | import { render } from 'react-dom'
4 | import { Provider } from 'react-redux'
5 | import App from './controllers/App'
6 | import configureStore from './store/configureStore'
7 |
8 | const store = configureStore()
9 |
10 | render(
11 |
12 |
13 | ,
14 | document.getElementById('root')
15 | )
16 |
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "redux-async-example",
3 | "version": "0.0.0",
4 | "description": "Redux async example",
5 | "scripts": {
6 | "start": "node server.js"
7 | },
8 | "repository": {
9 | "type": "git",
10 | "url": "https://github.com/rackt/redux.git"
11 | },
12 | "keywords": [
13 | "react",
14 | "reactjs",
15 | "hot",
16 | "reload",
17 | "hmr",
18 | "live",
19 | "edit",
20 | "webpack",
21 | "flux"
22 | ],
23 | "license": "MIT",
24 | "bugs": {
25 | "url": "https://github.com/rackt/redux/issues"
26 | },
27 | "homepage": "http://rackt.github.io/redux",
28 | "dependencies": {
29 | "isomorphic-fetch": "^2.1.1",
30 | "react": "^0.14.0",
31 | "react-dom": "^0.14.0",
32 | "react-redux": "^4.0.0",
33 | "react-redux-controller": "^0.1.1",
34 | "redux": "^3.0.0",
35 | "redux-logger": "^2.0.2",
36 | "redux-thunk": "^0.1.0"
37 | },
38 | "devDependencies": {
39 | "babel-core": "^6.3.21",
40 | "babel-loader": "^6.2.0",
41 | "babel-plugin-react-transform": "^2.0.0-beta1",
42 | "babel-polyfill": "^6.3.14",
43 | "babel-preset-es2015": "^6.3.13",
44 | "babel-preset-react": "^6.3.13",
45 | "expect": "^1.6.0",
46 | "express": "^4.13.3",
47 | "node-libs-browser": "^0.5.2",
48 | "react-transform-hmr": "^1.0.0",
49 | "webpack": "^1.11.0",
50 | "webpack-dev-middleware": "^1.2.0",
51 | "webpack-hot-middleware": "^2.2.0"
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/example/reducers/index.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux'
2 | import {
3 | SELECT_REDDIT, INVALIDATE_REDDIT,
4 | REQUEST_POSTS, RECEIVE_POSTS
5 | } from '../actions'
6 |
7 | function selectedReddit(state = 'reactjs', action) {
8 | switch (action.type) {
9 | case SELECT_REDDIT:
10 | return action.reddit
11 | default:
12 | return state
13 | }
14 | }
15 |
16 | function posts(state = {
17 | isFetching: false,
18 | didInvalidate: false,
19 | items: []
20 | }, action) {
21 | switch (action.type) {
22 | case INVALIDATE_REDDIT:
23 | return Object.assign({}, state, {
24 | didInvalidate: true
25 | })
26 | case REQUEST_POSTS:
27 | return Object.assign({}, state, {
28 | isFetching: true,
29 | didInvalidate: false
30 | })
31 | case RECEIVE_POSTS:
32 | return Object.assign({}, state, {
33 | isFetching: false,
34 | didInvalidate: false,
35 | items: action.posts,
36 | lastUpdated: action.receivedAt
37 | })
38 | default:
39 | return state
40 | }
41 | }
42 |
43 | function postsByReddit(state = { }, action) {
44 | switch (action.type) {
45 | case INVALIDATE_REDDIT:
46 | case RECEIVE_POSTS:
47 | case REQUEST_POSTS:
48 | return Object.assign({}, state, {
49 | [action.reddit]: posts(state[action.reddit], action)
50 | })
51 | default:
52 | return state
53 | }
54 | }
55 |
56 | const rootReducer = combineReducers({
57 | postsByReddit,
58 | selectedReddit
59 | })
60 |
61 | export default rootReducer
62 |
--------------------------------------------------------------------------------
/example/selectors/index.js:
--------------------------------------------------------------------------------
1 | import { PropTypes } from 'react'
2 |
3 | export const selectedReddit = state => state.selectedReddit
4 | selectedReddit.propType = PropTypes.string.isRequired
5 |
6 | export const postsByReddit = state => state.postsByReddit
7 | postsByReddit.propType = PropTypes.object.isRequired
8 |
9 | export const posts = state => {
10 | const p = state.postsByReddit[selectedReddit(state)]
11 | return p && p.items ? p.items : []
12 | }
13 | posts.propType = PropTypes.array.isRequired
14 |
15 | export const isFetching = state => {
16 | const posts = state.postsByReddit[selectedReddit(state)]
17 | return posts ? posts.isFetching : true
18 | }
19 | isFetching.propType = PropTypes.bool.isRequired
20 |
21 | export const lastUpdated = state => {
22 | const posts = state.postsByReddit[selectedReddit(state)]
23 | return posts && posts.lastUpdated
24 | }
25 | lastUpdated.propType = PropTypes.number
26 |
--------------------------------------------------------------------------------
/example/server.js:
--------------------------------------------------------------------------------
1 | var webpack = require('webpack')
2 | var webpackDevMiddleware = require('webpack-dev-middleware')
3 | var webpackHotMiddleware = require('webpack-hot-middleware')
4 | var config = require('./webpack.config')
5 |
6 | var app = new (require('express'))()
7 | var port = 3000
8 |
9 | var compiler = webpack(config)
10 | app.use(webpackDevMiddleware(compiler, { noInfo: true, publicPath: config.output.publicPath }))
11 | app.use(webpackHotMiddleware(compiler))
12 |
13 | app.get("/", function(req, res) {
14 | res.sendFile(__dirname + '/index.html')
15 | })
16 |
17 | app.listen(port, function(error) {
18 | if (error) {
19 | console.error(error)
20 | } else {
21 | console.info("==> 🌎 Listening on port %s. Open up http://localhost:%s/ in your browser.", port, port)
22 | }
23 | })
24 |
--------------------------------------------------------------------------------
/example/store/configureStore.js:
--------------------------------------------------------------------------------
1 | import { createStore, applyMiddleware } from 'redux'
2 | import createLogger from 'redux-logger'
3 | import rootReducer from '../reducers'
4 |
5 | const createStoreWithMiddleware = applyMiddleware(
6 | createLogger()
7 | )(createStore)
8 |
9 | export default function configureStore(initialState) {
10 | const store = createStoreWithMiddleware(rootReducer, initialState)
11 |
12 | if (module.hot) {
13 | // Enable Webpack hot module replacement for reducers
14 | module.hot.accept('../reducers', () => {
15 | const nextRootReducer = require('../reducers')
16 | store.replaceReducer(nextRootReducer)
17 | })
18 | }
19 |
20 | return store
21 | }
22 |
--------------------------------------------------------------------------------
/example/webpack.config.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var webpack = require('webpack')
3 |
4 | module.exports = {
5 | devtool: 'eval',
6 | entry: [
7 | 'webpack-hot-middleware/client',
8 | './index'
9 | ],
10 | output: {
11 | path: path.join(__dirname, 'dist'),
12 | filename: 'bundle.js',
13 | publicPath: '/static/'
14 | },
15 | plugins: [
16 | new webpack.optimize.OccurenceOrderPlugin(),
17 | new webpack.HotModuleReplacementPlugin(),
18 | new webpack.NoErrorsPlugin()
19 | ],
20 | module: {
21 | loaders: [{
22 | test: /\.js$/,
23 | loaders: ['babel'],
24 | exclude: /node_modules/,
25 | include: __dirname
26 | }]
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-redux-controller",
3 | "version": "0.3.0",
4 | "description": "Library for creating a controller layer to link React and Redux.",
5 | "license": "MIT",
6 | "keywords": [
7 | "controller",
8 | "react",
9 | "redux"
10 | ],
11 | "repository": {
12 | "type": "git",
13 | "url": "git://github.com/artsy/react-redux-controller.git"
14 | },
15 | "author": {
16 | "name": "Alan Johnson",
17 | "email": "alan@breakrs.com"
18 | },
19 | "engines": {
20 | "node": ">= 5.1.x"
21 | },
22 | "main": "lib/index.js",
23 | "scripts": {
24 | "build": "mkdir -p lib && babel ./src --out-dir ./lib",
25 | "prepublish": "npm run build"
26 | },
27 | "dependencies": {
28 | "co": "^4.6.0"
29 | },
30 | "devDependencies": {
31 | "babel-cli": "^6.3.17",
32 | "babel-core": "^6.3.21",
33 | "babel-loader": "^6.2.0",
34 | "babel-polyfill": "^6.3.14",
35 | "babel-preset-es2015": "^6.3.13",
36 | "babel-preset-es2015-loose": "^6.1.3",
37 | "babel-preset-react": "^6.3.13",
38 | "co": "^4.6.0",
39 | "mocha": "*",
40 | "prop-types": "^15.6.0",
41 | "react": "^16.1.1",
42 | "react-redux": "^4.0.0",
43 | "redux": "^3.0.0",
44 | "should": "*",
45 | "webpack": "^1.12.9"
46 | },
47 | "files": [
48 | "dist",
49 | "lib",
50 | "src"
51 | ]
52 | }
53 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import PropTypes from 'prop-types';
2 | import React from 'react';
3 | import co from 'co';
4 | import { aggregateSelectors } from './selector_utils';
5 | import { mapObj, pick, merge, mergeAll } from './utils';
6 | import { connect } from 'react-redux';
7 |
8 | const toDispatchSymbol = Symbol('toDispatch');
9 |
10 | /** Request to get the props object at a specific time */
11 | export const getProps = Symbol('getProps');
12 |
13 | /**
14 | * Request to get a function that will return the controller `props` object,
15 | * when called.
16 | */
17 | export const getPropsGetter = Symbol('getPropsGetter');
18 |
19 | /**
20 | * Conveniece request to dispatch an action directly from a controller
21 | * generator.
22 | * @param {*} action a Redux action
23 | * @return {*} the result of dispatching the action
24 | */
25 | export function toDispatch(action) {
26 | return { [toDispatchSymbol]: action };
27 | }
28 |
29 | /**
30 | * The default function for converting the controllerGenerators to methods that
31 | * can be directly called. It resolves `yield` statements in the generators by
32 | * delegating Promise to `co` and processing special values that are used to
33 | * request data from the controller.
34 | * @param {Function} propsGetter gets the current controller props.
35 | * @return {GeneratorToMethod} a function that converts a generator to a method
36 | * forwarding on the arguments the generator receives.
37 | */
38 | export function runControllerGenerator(propsGetter) {
39 | return controllerGenerator => co.wrap(function* coWrapper() {
40 | const gen = controllerGenerator.apply(this, arguments);
41 | let value;
42 | let done;
43 | let toController;
44 |
45 | for ({ value, done } = gen.next(); !done; { value, done } = gen.next(toController)) {
46 | const props = propsGetter();
47 |
48 | // In the special cases that the yielded value has one of our special
49 | // tags, process it, and then we'll send the result on to `co` anyway
50 | // in case whatever we get back is a promise.
51 | if (value && value[toDispatchSymbol]) {
52 | // Dispatch an action
53 | toController = props.dispatch(value[toDispatchSymbol]);
54 | } else if (value === getProps) {
55 | // Return all props
56 | toController = props;
57 | } else if (value === getPropsGetter) {
58 | // Return the propsGetter itself, so the controller can get props
59 | // values in async continuations
60 | toController = propsGetter;
61 | } else {
62 | // Defer to `co`
63 | toController = yield value;
64 | }
65 | }
66 |
67 | return value;
68 | });
69 | }
70 |
71 | /**
72 | * This higher-order component introduces a concept of a Controller, which is a
73 | * component that acts as an interface between the proper view component tree
74 | * and the Redux state modeling, building upon react-redux. It attempts to
75 | * solve a couple problems:
76 | *
77 | * - It provides a way for event handlers and other helpers to access the
78 | * application state and dispatch actions to Redux.
79 | * - It conveys those handlers, along with the data from the react-redux
80 | * selectors, to the component tree, using React's [context](bit.ly/1QWHEfC)
81 | * feature.
82 | *
83 | * It was designed to help keep UI components as simple and domain-focused
84 | * as possible (i.e. [dumb components](bit.ly/1RFh7Ui), while concentrating
85 | * the React-Redux integration point at a single place. It frees intermediate
86 | * components from the concern of routing dependencies to their descendents,
87 | * reducing coupling of components to the UI layout.
88 | *
89 | * @param {React.Component} RootComponent is the root of the app's component
90 | * tree.
91 | * @param {Object} controllerGenerators contains generator methods to be used
92 | * to create controller methods, which are distributed to the component tree.
93 | * These are called from UI components to trigger state changes. These
94 | * generators can `yield` Promises to be resolved via `co`, can `yield`
95 | * requests to receive application state or dispatch actions, and can
96 | * `yield*` to delegate to other controller generators.
97 | * @param {(Object|Object[])} selectorBundles maps property names to selector
98 | * functions, which produce property value from the Redux store.
99 | * @param {Function} [controllerGeneratorRunner = runControllerGenerator] is
100 | * the generator wrapper that will be used to run the generator methods.
101 | * @return {React.Component} a decorated version of RootComponent, with
102 | * `context` set up for its descendents.
103 | */
104 | export function controller(RootComponent, controllerGenerators, selectorBundles, controllerGeneratorRunner = runControllerGenerator) {
105 | // Combine selector bundles into one mapStateToProps function.
106 | const mapStateToProps = aggregateSelectors(mergeAll(selectorBundles));
107 | const selectorPropTypes = mapStateToProps.propTypes;
108 |
109 | // All the controller method propTypes should simply be "function" so we can
110 | // synthensize those.
111 | const controllerMethodPropTypes = mapObj(() => PropTypes.func.isRequired, controllerGenerators);
112 |
113 | // Declare the availability of all of the selectors and controller methods
114 | // in the React context for descendant components.
115 | const contextPropTypes = merge(selectorPropTypes, controllerMethodPropTypes);
116 |
117 | class Controller extends React.Component {
118 | constructor(...constructorArgs) {
119 | super(...constructorArgs);
120 |
121 | const injectedControllerGeneratorRunner = controllerGeneratorRunner(() => this.props);
122 | this.controllerMethods = mapObj(controllerGenerator =>
123 | injectedControllerGeneratorRunner(controllerGenerator)
124 | , controllerGenerators);
125 |
126 | // Ensure controller methods can access each other via `this`
127 | for (const methodName of Object.keys(this.controllerMethods)) {
128 | this.controllerMethods[methodName] = this.controllerMethods[methodName].bind(this.controllerMethods);
129 | }
130 | }
131 |
132 | componentWillMount() {
133 | if (this.controllerMethods.initialize) { this.controllerMethods.initialize(); }
134 | }
135 |
136 | getChildContext() {
137 | // Rather than injecting all of the RootComponent props into the context,
138 | // we only explictly pass selector and controller method props.
139 | const selectorProps = pick(Object.keys(selectorPropTypes), this.props);
140 | const childContext = merge(selectorProps, this.controllerMethods);
141 | return childContext;
142 | }
143 |
144 | render() {
145 | return (
146 |
147 | );
148 | }
149 | }
150 |
151 | Controller.propTypes = merge(selectorPropTypes, RootComponent.propTypes || {});
152 | Controller.childContextTypes = contextPropTypes;
153 |
154 | return connect(mapStateToProps)(Controller);
155 | }
156 |
--------------------------------------------------------------------------------
/src/selector_utils.js:
--------------------------------------------------------------------------------
1 | import { mapObj } from './utils';
2 |
3 | /**
4 | * Combines bundle of selector functions into a single super selector function
5 | * maps the state to extracts a set of property name-value pairs corresponding
6 | * to the selector function outputs. The selectors materialize a view of the
7 | * Redux store, which will be fed to React components as `props`.
8 | *
9 | * A selector bundle looks like:
10 | *
11 | * {
12 | * selectorName: (state) => value,
13 | * ...
14 | * }
15 | *
16 | * , where each selector function should carry a `propType` property,
17 | * describing its result.
18 | *
19 | * The resulting super selector function looks like:
20 | *
21 | * state => {
22 | * selectorName: value,
23 | * ...
24 | * }
25 | *
26 | * , and has a `propTypes` property of the form:
27 | *
28 | * {
29 | * selectorName: propType,
30 | * ...
31 | * }
32 | *
33 | * This property can be merged directly into a `propTypes` or `contextTypes`
34 | * property on a React component.
35 | *
36 | * A bundle is typically created by importing an entire module of exported
37 | * selector functions. To keep track of React prop types, selector functions
38 | * should be annotated by assigning a `propType` property to the function
39 | * within the module where it is declared.
40 | *
41 | * @param {Object.} selectorBundles contains the
42 | * selectors, as explained above.
43 | * @return {Function} a function that, when given the store state, produces all
44 | * of the selector outputs.
45 | */
46 | export function aggregateSelectors(bundle) {
47 | const combinedSelector = state => mapObj(selectorFunction => selectorFunction(state), bundle);
48 | combinedSelector.propTypes = mapObj(selectorFunction => selectorFunction.propType, bundle);
49 | return combinedSelector;
50 | }
51 |
52 | /**
53 | * Does the opposite of [[aggregateSelectors]]
54 | *
55 | * @param {Function} superSelector
56 | * @return {Object.} a selector bundle, with each selector
57 | * annotated with a propType property.
58 | */
59 | export function disaggregateSuperSelector(superSelector) {
60 | return mapObj((propType, propName) => {
61 | const singleSelector = store => superSelector(store)[propName];
62 | singleSelector.propType = propType;
63 | return singleSelector;
64 | }, superSelector.propTypes);
65 | }
66 |
--------------------------------------------------------------------------------
/src/utils.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Map, but for objects. Creates an object with the same keys as `obj` and values
3 | * generated by running each property of `obj` through `fn`. `fn` is passed three arguments: *(value, key, obj)*.
4 | * @param {Function} fn A function called for each property in `obj`. Its return value will
5 | * become a new property on the return object.
6 | * @param {Object} obj The object to iterate over.
7 | * @return {Object} A new object with the same keys as `obj` and values that are the result
8 | * of running each property through `fn`.
9 | */
10 | export function mapObj(fn, obj) {
11 | const result = {};
12 |
13 | const keys = Object.keys(obj);
14 |
15 | for (let i = 0; i < keys.length; ++i) {
16 | result[keys[i]] = fn(obj[keys[i]], keys[i], obj);
17 | }
18 |
19 | return result;
20 | }
21 |
22 | /**
23 | * Returns a partial copy of an object containing only the keys specified. If the key does not exist, the
24 | * property is ignored.
25 | * @param {String[]} keys An array of String property names to copy onto a new object.
26 | * @param {Object} obj The object to copy from.
27 | * @return {Object} A new object with only properties from `keys` on it.
28 | */
29 | export function pick(keys, obj) {
30 | const result = {};
31 |
32 | for (let i = 0; i < keys.length; ++i) {
33 | if (keys[i] in obj) {
34 | result[keys[i]] = obj[keys[i]];
35 | }
36 | }
37 |
38 | return result;
39 | }
40 |
41 | /**
42 | * Create a new object with the own properties of `a`
43 | * merged with the own properties of object `b`.
44 | * @param {Object} a The first object.
45 | * @param {Object} b The second object.
46 | * @return {Object} A merged object.
47 | */
48 | export function merge(a, b) {
49 | const result = {};
50 |
51 | for (let i = 0, keys = Object.keys(a); i < keys.length; ++i) {
52 | result[keys[i]] = a[keys[i]];
53 | }
54 |
55 | for (let i = 0, keys = Object.keys(b); i < keys.length; ++i) {
56 | result[keys[i]] = b[keys[i]];
57 | }
58 |
59 | return result;
60 | }
61 |
62 | /**
63 | * Merges a list of objects together into one object.
64 | * @param {Object|Object[]} objs An array of objects or a single object.
65 | * @return {Object} A merged object.
66 | */
67 | export function mergeAll(objs) {
68 | const list = Array.isArray(objs) ? objs : [objs];
69 |
70 | const result = {};
71 |
72 | for (let i = 0; i < list.length; ++i) {
73 | const keys = Object.keys(list[i]);
74 |
75 | for (let j = 0; j < keys.length; ++j) {
76 | result[keys[j]] = list[i][keys[j]];
77 | }
78 | }
79 |
80 | return result;
81 | }
82 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | abbrev@1:
6 | version "1.1.1"
7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
8 |
9 | acorn@^3.0.0:
10 | version "3.3.0"
11 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
12 |
13 | ajv@^4.9.1:
14 | version "4.11.8"
15 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
16 | dependencies:
17 | co "^4.6.0"
18 | json-stable-stringify "^1.0.1"
19 |
20 | align-text@^0.1.1, align-text@^0.1.3:
21 | version "0.1.4"
22 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
23 | dependencies:
24 | kind-of "^3.0.2"
25 | longest "^1.0.1"
26 | repeat-string "^1.5.2"
27 |
28 | amdefine@>=0.0.4:
29 | version "1.0.1"
30 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
31 |
32 | ansi-regex@^2.0.0:
33 | version "2.1.1"
34 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
35 |
36 | ansi-styles@^2.2.1:
37 | version "2.2.1"
38 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
39 |
40 | anymatch@^1.3.0:
41 | version "1.3.2"
42 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
43 | dependencies:
44 | micromatch "^2.1.5"
45 | normalize-path "^2.0.0"
46 |
47 | aproba@^1.0.3:
48 | version "1.2.0"
49 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
50 |
51 | are-we-there-yet@~1.1.2:
52 | version "1.1.4"
53 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
54 | dependencies:
55 | delegates "^1.0.0"
56 | readable-stream "^2.0.6"
57 |
58 | arr-diff@^2.0.0:
59 | version "2.0.0"
60 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
61 | dependencies:
62 | arr-flatten "^1.0.1"
63 |
64 | arr-flatten@^1.0.1:
65 | version "1.1.0"
66 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
67 |
68 | array-unique@^0.2.1:
69 | version "0.2.1"
70 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
71 |
72 | asap@~2.0.3:
73 | version "2.0.6"
74 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
75 |
76 | asn1@~0.2.3:
77 | version "0.2.3"
78 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
79 |
80 | assert-plus@1.0.0, assert-plus@^1.0.0:
81 | version "1.0.0"
82 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
83 |
84 | assert-plus@^0.2.0:
85 | version "0.2.0"
86 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
87 |
88 | assert@^1.1.1:
89 | version "1.4.1"
90 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
91 | dependencies:
92 | util "0.10.3"
93 |
94 | async-each@^1.0.0:
95 | version "1.0.1"
96 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
97 |
98 | async@^0.9.0:
99 | version "0.9.2"
100 | resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
101 |
102 | async@^1.3.0:
103 | version "1.5.2"
104 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
105 |
106 | async@~0.2.6:
107 | version "0.2.10"
108 | resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
109 |
110 | asynckit@^0.4.0:
111 | version "0.4.0"
112 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
113 |
114 | aws-sign2@~0.6.0:
115 | version "0.6.0"
116 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
117 |
118 | aws4@^1.2.1:
119 | version "1.6.0"
120 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
121 |
122 | babel-cli@^6.3.17:
123 | version "6.26.0"
124 | resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1"
125 | dependencies:
126 | babel-core "^6.26.0"
127 | babel-polyfill "^6.26.0"
128 | babel-register "^6.26.0"
129 | babel-runtime "^6.26.0"
130 | commander "^2.11.0"
131 | convert-source-map "^1.5.0"
132 | fs-readdir-recursive "^1.0.0"
133 | glob "^7.1.2"
134 | lodash "^4.17.4"
135 | output-file-sync "^1.1.2"
136 | path-is-absolute "^1.0.1"
137 | slash "^1.0.0"
138 | source-map "^0.5.6"
139 | v8flags "^2.1.1"
140 | optionalDependencies:
141 | chokidar "^1.6.1"
142 |
143 | babel-code-frame@^6.26.0:
144 | version "6.26.0"
145 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
146 | dependencies:
147 | chalk "^1.1.3"
148 | esutils "^2.0.2"
149 | js-tokens "^3.0.2"
150 |
151 | babel-core@^6.26.0, babel-core@^6.3.21:
152 | version "6.26.0"
153 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
154 | dependencies:
155 | babel-code-frame "^6.26.0"
156 | babel-generator "^6.26.0"
157 | babel-helpers "^6.24.1"
158 | babel-messages "^6.23.0"
159 | babel-register "^6.26.0"
160 | babel-runtime "^6.26.0"
161 | babel-template "^6.26.0"
162 | babel-traverse "^6.26.0"
163 | babel-types "^6.26.0"
164 | babylon "^6.18.0"
165 | convert-source-map "^1.5.0"
166 | debug "^2.6.8"
167 | json5 "^0.5.1"
168 | lodash "^4.17.4"
169 | minimatch "^3.0.4"
170 | path-is-absolute "^1.0.1"
171 | private "^0.1.7"
172 | slash "^1.0.0"
173 | source-map "^0.5.6"
174 |
175 | babel-generator@^6.26.0:
176 | version "6.26.0"
177 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5"
178 | dependencies:
179 | babel-messages "^6.23.0"
180 | babel-runtime "^6.26.0"
181 | babel-types "^6.26.0"
182 | detect-indent "^4.0.0"
183 | jsesc "^1.3.0"
184 | lodash "^4.17.4"
185 | source-map "^0.5.6"
186 | trim-right "^1.0.1"
187 |
188 | babel-helper-builder-react-jsx@^6.24.1:
189 | version "6.26.0"
190 | resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0"
191 | dependencies:
192 | babel-runtime "^6.26.0"
193 | babel-types "^6.26.0"
194 | esutils "^2.0.2"
195 |
196 | babel-helper-call-delegate@^6.24.1:
197 | version "6.24.1"
198 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
199 | dependencies:
200 | babel-helper-hoist-variables "^6.24.1"
201 | babel-runtime "^6.22.0"
202 | babel-traverse "^6.24.1"
203 | babel-types "^6.24.1"
204 |
205 | babel-helper-define-map@^6.24.1:
206 | version "6.26.0"
207 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
208 | dependencies:
209 | babel-helper-function-name "^6.24.1"
210 | babel-runtime "^6.26.0"
211 | babel-types "^6.26.0"
212 | lodash "^4.17.4"
213 |
214 | babel-helper-function-name@^6.24.1:
215 | version "6.24.1"
216 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
217 | dependencies:
218 | babel-helper-get-function-arity "^6.24.1"
219 | babel-runtime "^6.22.0"
220 | babel-template "^6.24.1"
221 | babel-traverse "^6.24.1"
222 | babel-types "^6.24.1"
223 |
224 | babel-helper-get-function-arity@^6.24.1:
225 | version "6.24.1"
226 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
227 | dependencies:
228 | babel-runtime "^6.22.0"
229 | babel-types "^6.24.1"
230 |
231 | babel-helper-hoist-variables@^6.24.1:
232 | version "6.24.1"
233 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
234 | dependencies:
235 | babel-runtime "^6.22.0"
236 | babel-types "^6.24.1"
237 |
238 | babel-helper-optimise-call-expression@^6.24.1:
239 | version "6.24.1"
240 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
241 | dependencies:
242 | babel-runtime "^6.22.0"
243 | babel-types "^6.24.1"
244 |
245 | babel-helper-regex@^6.24.1:
246 | version "6.26.0"
247 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
248 | dependencies:
249 | babel-runtime "^6.26.0"
250 | babel-types "^6.26.0"
251 | lodash "^4.17.4"
252 |
253 | babel-helper-replace-supers@^6.24.1:
254 | version "6.24.1"
255 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
256 | dependencies:
257 | babel-helper-optimise-call-expression "^6.24.1"
258 | babel-messages "^6.23.0"
259 | babel-runtime "^6.22.0"
260 | babel-template "^6.24.1"
261 | babel-traverse "^6.24.1"
262 | babel-types "^6.24.1"
263 |
264 | babel-helpers@^6.24.1:
265 | version "6.24.1"
266 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
267 | dependencies:
268 | babel-runtime "^6.22.0"
269 | babel-template "^6.24.1"
270 |
271 | babel-loader@^6.2.0:
272 | version "6.4.1"
273 | resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca"
274 | dependencies:
275 | find-cache-dir "^0.1.1"
276 | loader-utils "^0.2.16"
277 | mkdirp "^0.5.1"
278 | object-assign "^4.0.1"
279 |
280 | babel-messages@^6.23.0:
281 | version "6.23.0"
282 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
283 | dependencies:
284 | babel-runtime "^6.22.0"
285 |
286 | babel-plugin-check-es2015-constants@^6.22.0:
287 | version "6.22.0"
288 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
289 | dependencies:
290 | babel-runtime "^6.22.0"
291 |
292 | babel-plugin-syntax-flow@^6.18.0:
293 | version "6.18.0"
294 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
295 |
296 | babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
297 | version "6.18.0"
298 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
299 |
300 | babel-plugin-transform-es2015-arrow-functions@^6.22.0, babel-plugin-transform-es2015-arrow-functions@^6.3.13:
301 | version "6.22.0"
302 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
303 | dependencies:
304 | babel-runtime "^6.22.0"
305 |
306 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0, babel-plugin-transform-es2015-block-scoped-functions@^6.3.13:
307 | version "6.22.0"
308 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
309 | dependencies:
310 | babel-runtime "^6.22.0"
311 |
312 | babel-plugin-transform-es2015-block-scoping@^6.24.1, babel-plugin-transform-es2015-block-scoping@^6.3.13:
313 | version "6.26.0"
314 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
315 | dependencies:
316 | babel-runtime "^6.26.0"
317 | babel-template "^6.26.0"
318 | babel-traverse "^6.26.0"
319 | babel-types "^6.26.0"
320 | lodash "^4.17.4"
321 |
322 | babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.3.15:
323 | version "6.24.1"
324 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
325 | dependencies:
326 | babel-helper-define-map "^6.24.1"
327 | babel-helper-function-name "^6.24.1"
328 | babel-helper-optimise-call-expression "^6.24.1"
329 | babel-helper-replace-supers "^6.24.1"
330 | babel-messages "^6.23.0"
331 | babel-runtime "^6.22.0"
332 | babel-template "^6.24.1"
333 | babel-traverse "^6.24.1"
334 | babel-types "^6.24.1"
335 |
336 | babel-plugin-transform-es2015-computed-properties@^6.24.1, babel-plugin-transform-es2015-computed-properties@^6.3.13:
337 | version "6.24.1"
338 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
339 | dependencies:
340 | babel-runtime "^6.22.0"
341 | babel-template "^6.24.1"
342 |
343 | babel-plugin-transform-es2015-constants@^6.1.4:
344 | version "6.1.4"
345 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-constants/-/babel-plugin-transform-es2015-constants-6.1.4.tgz#e4b8c78fb48ab98b0107f329fab6040e79c35a33"
346 | dependencies:
347 | babel-runtime "^5.0.0"
348 |
349 | babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.3.15:
350 | version "6.23.0"
351 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
352 | dependencies:
353 | babel-runtime "^6.22.0"
354 |
355 | babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
356 | version "6.24.1"
357 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
358 | dependencies:
359 | babel-runtime "^6.22.0"
360 | babel-types "^6.24.1"
361 |
362 | babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.3.13:
363 | version "6.23.0"
364 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
365 | dependencies:
366 | babel-runtime "^6.22.0"
367 |
368 | babel-plugin-transform-es2015-function-name@^6.24.1, babel-plugin-transform-es2015-function-name@^6.3.21:
369 | version "6.24.1"
370 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
371 | dependencies:
372 | babel-helper-function-name "^6.24.1"
373 | babel-runtime "^6.22.0"
374 | babel-types "^6.24.1"
375 |
376 | babel-plugin-transform-es2015-literals@^6.22.0, babel-plugin-transform-es2015-literals@^6.3.13:
377 | version "6.22.0"
378 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
379 | dependencies:
380 | babel-runtime "^6.22.0"
381 |
382 | babel-plugin-transform-es2015-modules-amd@^6.24.1:
383 | version "6.24.1"
384 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
385 | dependencies:
386 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
387 | babel-runtime "^6.22.0"
388 | babel-template "^6.24.1"
389 |
390 | babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.3.16:
391 | version "6.26.0"
392 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a"
393 | dependencies:
394 | babel-plugin-transform-strict-mode "^6.24.1"
395 | babel-runtime "^6.26.0"
396 | babel-template "^6.26.0"
397 | babel-types "^6.26.0"
398 |
399 | babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
400 | version "6.24.1"
401 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
402 | dependencies:
403 | babel-helper-hoist-variables "^6.24.1"
404 | babel-runtime "^6.22.0"
405 | babel-template "^6.24.1"
406 |
407 | babel-plugin-transform-es2015-modules-umd@^6.24.1:
408 | version "6.24.1"
409 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
410 | dependencies:
411 | babel-plugin-transform-es2015-modules-amd "^6.24.1"
412 | babel-runtime "^6.22.0"
413 | babel-template "^6.24.1"
414 |
415 | babel-plugin-transform-es2015-object-super@^6.24.1, babel-plugin-transform-es2015-object-super@^6.3.13:
416 | version "6.24.1"
417 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
418 | dependencies:
419 | babel-helper-replace-supers "^6.24.1"
420 | babel-runtime "^6.22.0"
421 |
422 | babel-plugin-transform-es2015-parameters@^6.24.1, babel-plugin-transform-es2015-parameters@^6.3.26:
423 | version "6.24.1"
424 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
425 | dependencies:
426 | babel-helper-call-delegate "^6.24.1"
427 | babel-helper-get-function-arity "^6.24.1"
428 | babel-runtime "^6.22.0"
429 | babel-template "^6.24.1"
430 | babel-traverse "^6.24.1"
431 | babel-types "^6.24.1"
432 |
433 | babel-plugin-transform-es2015-shorthand-properties@^6.24.1, babel-plugin-transform-es2015-shorthand-properties@^6.3.13:
434 | version "6.24.1"
435 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
436 | dependencies:
437 | babel-runtime "^6.22.0"
438 | babel-types "^6.24.1"
439 |
440 | babel-plugin-transform-es2015-spread@^6.22.0, babel-plugin-transform-es2015-spread@^6.3.14:
441 | version "6.22.0"
442 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
443 | dependencies:
444 | babel-runtime "^6.22.0"
445 |
446 | babel-plugin-transform-es2015-sticky-regex@^6.24.1, babel-plugin-transform-es2015-sticky-regex@^6.3.13:
447 | version "6.24.1"
448 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
449 | dependencies:
450 | babel-helper-regex "^6.24.1"
451 | babel-runtime "^6.22.0"
452 | babel-types "^6.24.1"
453 |
454 | babel-plugin-transform-es2015-template-literals@^6.22.0, babel-plugin-transform-es2015-template-literals@^6.3.13:
455 | version "6.22.0"
456 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
457 | dependencies:
458 | babel-runtime "^6.22.0"
459 |
460 | babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.3.13:
461 | version "6.23.0"
462 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
463 | dependencies:
464 | babel-runtime "^6.22.0"
465 |
466 | babel-plugin-transform-es2015-unicode-regex@^6.24.1, babel-plugin-transform-es2015-unicode-regex@^6.3.13:
467 | version "6.24.1"
468 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
469 | dependencies:
470 | babel-helper-regex "^6.24.1"
471 | babel-runtime "^6.22.0"
472 | regexpu-core "^2.0.0"
473 |
474 | babel-plugin-transform-flow-strip-types@^6.22.0:
475 | version "6.22.0"
476 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
477 | dependencies:
478 | babel-plugin-syntax-flow "^6.18.0"
479 | babel-runtime "^6.22.0"
480 |
481 | babel-plugin-transform-react-display-name@^6.23.0:
482 | version "6.25.0"
483 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1"
484 | dependencies:
485 | babel-runtime "^6.22.0"
486 |
487 | babel-plugin-transform-react-jsx-self@^6.22.0:
488 | version "6.22.0"
489 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
490 | dependencies:
491 | babel-plugin-syntax-jsx "^6.8.0"
492 | babel-runtime "^6.22.0"
493 |
494 | babel-plugin-transform-react-jsx-source@^6.22.0:
495 | version "6.22.0"
496 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
497 | dependencies:
498 | babel-plugin-syntax-jsx "^6.8.0"
499 | babel-runtime "^6.22.0"
500 |
501 | babel-plugin-transform-react-jsx@^6.24.1:
502 | version "6.24.1"
503 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
504 | dependencies:
505 | babel-helper-builder-react-jsx "^6.24.1"
506 | babel-plugin-syntax-jsx "^6.8.0"
507 | babel-runtime "^6.22.0"
508 |
509 | babel-plugin-transform-regenerator@^6.24.1, babel-plugin-transform-regenerator@^6.3.26:
510 | version "6.26.0"
511 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
512 | dependencies:
513 | regenerator-transform "^0.10.0"
514 |
515 | babel-plugin-transform-strict-mode@^6.24.1:
516 | version "6.24.1"
517 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
518 | dependencies:
519 | babel-runtime "^6.22.0"
520 | babel-types "^6.24.1"
521 |
522 | babel-polyfill@^6.26.0, babel-polyfill@^6.3.14:
523 | version "6.26.0"
524 | resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
525 | dependencies:
526 | babel-runtime "^6.26.0"
527 | core-js "^2.5.0"
528 | regenerator-runtime "^0.10.5"
529 |
530 | babel-preset-es2015-loose@^6.1.3:
531 | version "6.1.4"
532 | resolved "https://registry.yarnpkg.com/babel-preset-es2015-loose/-/babel-preset-es2015-loose-6.1.4.tgz#33939d9e39c5acf8469fb3c77e325548c93447ff"
533 | dependencies:
534 | babel-plugin-transform-es2015-arrow-functions "^6.3.13"
535 | babel-plugin-transform-es2015-block-scoped-functions "^6.3.13"
536 | babel-plugin-transform-es2015-block-scoping "^6.3.13"
537 | babel-plugin-transform-es2015-classes "^6.3.15"
538 | babel-plugin-transform-es2015-computed-properties "^6.3.13"
539 | babel-plugin-transform-es2015-constants "^6.1.4"
540 | babel-plugin-transform-es2015-destructuring "^6.3.15"
541 | babel-plugin-transform-es2015-for-of "^6.3.13"
542 | babel-plugin-transform-es2015-function-name "^6.3.21"
543 | babel-plugin-transform-es2015-literals "^6.3.13"
544 | babel-plugin-transform-es2015-modules-commonjs "^6.3.16"
545 | babel-plugin-transform-es2015-object-super "^6.3.13"
546 | babel-plugin-transform-es2015-parameters "^6.3.26"
547 | babel-plugin-transform-es2015-shorthand-properties "^6.3.13"
548 | babel-plugin-transform-es2015-spread "^6.3.14"
549 | babel-plugin-transform-es2015-sticky-regex "^6.3.13"
550 | babel-plugin-transform-es2015-template-literals "^6.3.13"
551 | babel-plugin-transform-es2015-typeof-symbol "^6.3.13"
552 | babel-plugin-transform-es2015-unicode-regex "^6.3.13"
553 | babel-plugin-transform-regenerator "^6.3.26"
554 |
555 | babel-preset-es2015@^6.3.13:
556 | version "6.24.1"
557 | resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
558 | dependencies:
559 | babel-plugin-check-es2015-constants "^6.22.0"
560 | babel-plugin-transform-es2015-arrow-functions "^6.22.0"
561 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
562 | babel-plugin-transform-es2015-block-scoping "^6.24.1"
563 | babel-plugin-transform-es2015-classes "^6.24.1"
564 | babel-plugin-transform-es2015-computed-properties "^6.24.1"
565 | babel-plugin-transform-es2015-destructuring "^6.22.0"
566 | babel-plugin-transform-es2015-duplicate-keys "^6.24.1"
567 | babel-plugin-transform-es2015-for-of "^6.22.0"
568 | babel-plugin-transform-es2015-function-name "^6.24.1"
569 | babel-plugin-transform-es2015-literals "^6.22.0"
570 | babel-plugin-transform-es2015-modules-amd "^6.24.1"
571 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
572 | babel-plugin-transform-es2015-modules-systemjs "^6.24.1"
573 | babel-plugin-transform-es2015-modules-umd "^6.24.1"
574 | babel-plugin-transform-es2015-object-super "^6.24.1"
575 | babel-plugin-transform-es2015-parameters "^6.24.1"
576 | babel-plugin-transform-es2015-shorthand-properties "^6.24.1"
577 | babel-plugin-transform-es2015-spread "^6.22.0"
578 | babel-plugin-transform-es2015-sticky-regex "^6.24.1"
579 | babel-plugin-transform-es2015-template-literals "^6.22.0"
580 | babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
581 | babel-plugin-transform-es2015-unicode-regex "^6.24.1"
582 | babel-plugin-transform-regenerator "^6.24.1"
583 |
584 | babel-preset-flow@^6.23.0:
585 | version "6.23.0"
586 | resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
587 | dependencies:
588 | babel-plugin-transform-flow-strip-types "^6.22.0"
589 |
590 | babel-preset-react@^6.3.13:
591 | version "6.24.1"
592 | resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
593 | dependencies:
594 | babel-plugin-syntax-jsx "^6.3.13"
595 | babel-plugin-transform-react-display-name "^6.23.0"
596 | babel-plugin-transform-react-jsx "^6.24.1"
597 | babel-plugin-transform-react-jsx-self "^6.22.0"
598 | babel-plugin-transform-react-jsx-source "^6.22.0"
599 | babel-preset-flow "^6.23.0"
600 |
601 | babel-register@^6.26.0:
602 | version "6.26.0"
603 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
604 | dependencies:
605 | babel-core "^6.26.0"
606 | babel-runtime "^6.26.0"
607 | core-js "^2.5.0"
608 | home-or-tmp "^2.0.0"
609 | lodash "^4.17.4"
610 | mkdirp "^0.5.1"
611 | source-map-support "^0.4.15"
612 |
613 | babel-runtime@^5.0.0:
614 | version "5.8.38"
615 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-5.8.38.tgz#1c0b02eb63312f5f087ff20450827b425c9d4c19"
616 | dependencies:
617 | core-js "^1.0.0"
618 |
619 | babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
620 | version "6.26.0"
621 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
622 | dependencies:
623 | core-js "^2.4.0"
624 | regenerator-runtime "^0.11.0"
625 |
626 | babel-template@^6.24.1, babel-template@^6.26.0:
627 | version "6.26.0"
628 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
629 | dependencies:
630 | babel-runtime "^6.26.0"
631 | babel-traverse "^6.26.0"
632 | babel-types "^6.26.0"
633 | babylon "^6.18.0"
634 | lodash "^4.17.4"
635 |
636 | babel-traverse@^6.24.1, babel-traverse@^6.26.0:
637 | version "6.26.0"
638 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
639 | dependencies:
640 | babel-code-frame "^6.26.0"
641 | babel-messages "^6.23.0"
642 | babel-runtime "^6.26.0"
643 | babel-types "^6.26.0"
644 | babylon "^6.18.0"
645 | debug "^2.6.8"
646 | globals "^9.18.0"
647 | invariant "^2.2.2"
648 | lodash "^4.17.4"
649 |
650 | babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
651 | version "6.26.0"
652 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
653 | dependencies:
654 | babel-runtime "^6.26.0"
655 | esutils "^2.0.2"
656 | lodash "^4.17.4"
657 | to-fast-properties "^1.0.3"
658 |
659 | babylon@^6.18.0:
660 | version "6.18.0"
661 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
662 |
663 | balanced-match@^1.0.0:
664 | version "1.0.2"
665 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
666 |
667 | base64-js@^1.0.2:
668 | version "1.2.1"
669 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
670 |
671 | bcrypt-pbkdf@^1.0.0:
672 | version "1.0.1"
673 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
674 | dependencies:
675 | tweetnacl "^0.14.3"
676 |
677 | big.js@^3.1.3:
678 | version "3.2.0"
679 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
680 |
681 | binary-extensions@^1.0.0:
682 | version "1.10.0"
683 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
684 |
685 | block-stream@*:
686 | version "0.0.9"
687 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
688 | dependencies:
689 | inherits "~2.0.0"
690 |
691 | boom@2.x.x:
692 | version "2.10.1"
693 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
694 | dependencies:
695 | hoek "2.x.x"
696 |
697 | brace-expansion@^1.1.7:
698 | version "1.1.11"
699 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
700 | dependencies:
701 | balanced-match "^1.0.0"
702 | concat-map "0.0.1"
703 |
704 | braces@^1.8.2:
705 | version "1.8.5"
706 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
707 | dependencies:
708 | expand-range "^1.8.1"
709 | preserve "^0.2.0"
710 | repeat-element "^1.1.2"
711 |
712 | browser-stdout@1.3.0:
713 | version "1.3.0"
714 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
715 |
716 | browserify-aes@0.4.0:
717 | version "0.4.0"
718 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c"
719 | dependencies:
720 | inherits "^2.0.1"
721 |
722 | browserify-zlib@^0.1.4:
723 | version "0.1.4"
724 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
725 | dependencies:
726 | pako "~0.2.0"
727 |
728 | buffer@^4.9.0:
729 | version "4.9.1"
730 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
731 | dependencies:
732 | base64-js "^1.0.2"
733 | ieee754 "^1.1.4"
734 | isarray "^1.0.0"
735 |
736 | builtin-status-codes@^3.0.0:
737 | version "3.0.0"
738 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
739 |
740 | camelcase@^1.0.2:
741 | version "1.2.1"
742 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
743 |
744 | caseless@~0.12.0:
745 | version "0.12.0"
746 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
747 |
748 | center-align@^0.1.1:
749 | version "0.1.3"
750 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
751 | dependencies:
752 | align-text "^0.1.3"
753 | lazy-cache "^1.0.3"
754 |
755 | chalk@^1.1.3:
756 | version "1.1.3"
757 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
758 | dependencies:
759 | ansi-styles "^2.2.1"
760 | escape-string-regexp "^1.0.2"
761 | has-ansi "^2.0.0"
762 | strip-ansi "^3.0.0"
763 | supports-color "^2.0.0"
764 |
765 | chokidar@^1.0.0, chokidar@^1.6.1:
766 | version "1.7.0"
767 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
768 | dependencies:
769 | anymatch "^1.3.0"
770 | async-each "^1.0.0"
771 | glob-parent "^2.0.0"
772 | inherits "^2.0.1"
773 | is-binary-path "^1.0.0"
774 | is-glob "^2.0.0"
775 | path-is-absolute "^1.0.0"
776 | readdirp "^2.0.0"
777 | optionalDependencies:
778 | fsevents "^1.0.0"
779 |
780 | cliui@^2.1.0:
781 | version "2.1.0"
782 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
783 | dependencies:
784 | center-align "^0.1.1"
785 | right-align "^0.1.1"
786 | wordwrap "0.0.2"
787 |
788 | clone@^1.0.2:
789 | version "1.0.3"
790 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
791 |
792 | co@^4.6.0:
793 | version "4.6.0"
794 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
795 |
796 | code-point-at@^1.0.0:
797 | version "1.1.0"
798 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
799 |
800 | combined-stream@^1.0.5, combined-stream@~1.0.5:
801 | version "1.0.5"
802 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
803 | dependencies:
804 | delayed-stream "~1.0.0"
805 |
806 | commander@2.11.0, commander@^2.11.0:
807 | version "2.11.0"
808 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
809 |
810 | commondir@^1.0.1:
811 | version "1.0.1"
812 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
813 |
814 | concat-map@0.0.1:
815 | version "0.0.1"
816 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
817 |
818 | console-browserify@^1.1.0:
819 | version "1.1.0"
820 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
821 | dependencies:
822 | date-now "^0.1.4"
823 |
824 | console-control-strings@^1.0.0, console-control-strings@~1.1.0:
825 | version "1.1.0"
826 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
827 |
828 | constants-browserify@^1.0.0:
829 | version "1.0.0"
830 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
831 |
832 | convert-source-map@^1.5.0:
833 | version "1.5.0"
834 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
835 |
836 | core-js@^1.0.0:
837 | version "1.2.7"
838 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
839 |
840 | core-js@^2.4.0, core-js@^2.5.0:
841 | version "2.5.1"
842 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b"
843 |
844 | core-util-is@1.0.2, core-util-is@~1.0.0:
845 | version "1.0.2"
846 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
847 |
848 | create-react-class@^15.5.1:
849 | version "15.6.2"
850 | resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.2.tgz#cf1ed15f12aad7f14ef5f2dfe05e6c42f91ef02a"
851 | dependencies:
852 | fbjs "^0.8.9"
853 | loose-envify "^1.3.1"
854 | object-assign "^4.1.1"
855 |
856 | cryptiles@2.x.x:
857 | version "2.0.5"
858 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
859 | dependencies:
860 | boom "2.x.x"
861 |
862 | crypto-browserify@3.3.0:
863 | version "3.3.0"
864 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c"
865 | dependencies:
866 | browserify-aes "0.4.0"
867 | pbkdf2-compat "2.0.1"
868 | ripemd160 "0.2.0"
869 | sha.js "2.2.6"
870 |
871 | dashdash@^1.12.0:
872 | version "1.14.1"
873 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
874 | dependencies:
875 | assert-plus "^1.0.0"
876 |
877 | date-now@^0.1.4:
878 | version "0.1.4"
879 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
880 |
881 | debug@3.1.0:
882 | version "3.1.0"
883 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
884 | dependencies:
885 | ms "2.0.0"
886 |
887 | debug@^2.2.0, debug@^2.6.8:
888 | version "2.6.9"
889 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
890 | dependencies:
891 | ms "2.0.0"
892 |
893 | decamelize@^1.0.0:
894 | version "1.2.0"
895 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
896 |
897 | deep-extend@~0.4.0:
898 | version "0.4.2"
899 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
900 |
901 | delayed-stream@~1.0.0:
902 | version "1.0.0"
903 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
904 |
905 | delegates@^1.0.0:
906 | version "1.0.0"
907 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
908 |
909 | detect-indent@^4.0.0:
910 | version "4.0.0"
911 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
912 | dependencies:
913 | repeating "^2.0.0"
914 |
915 | detect-libc@^1.0.2:
916 | version "1.0.2"
917 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.2.tgz#71ad5d204bf17a6a6ca8f450c61454066ef461e1"
918 |
919 | diff@3.3.1:
920 | version "3.3.1"
921 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75"
922 |
923 | domain-browser@^1.1.1:
924 | version "1.1.7"
925 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
926 |
927 | ecc-jsbn@~0.1.1:
928 | version "0.1.1"
929 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
930 | dependencies:
931 | jsbn "~0.1.0"
932 |
933 | emojis-list@^2.0.0:
934 | version "2.1.0"
935 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
936 |
937 | encoding@^0.1.11:
938 | version "0.1.12"
939 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
940 | dependencies:
941 | iconv-lite "~0.4.13"
942 |
943 | enhanced-resolve@~0.9.0:
944 | version "0.9.1"
945 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e"
946 | dependencies:
947 | graceful-fs "^4.1.2"
948 | memory-fs "^0.2.0"
949 | tapable "^0.1.8"
950 |
951 | errno@^0.1.3:
952 | version "0.1.4"
953 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
954 | dependencies:
955 | prr "~0.0.0"
956 |
957 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2:
958 | version "1.0.5"
959 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
960 |
961 | esutils@^2.0.2:
962 | version "2.0.2"
963 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
964 |
965 | events@^1.0.0:
966 | version "1.1.1"
967 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
968 |
969 | expand-brackets@^0.1.4:
970 | version "0.1.5"
971 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
972 | dependencies:
973 | is-posix-bracket "^0.1.0"
974 |
975 | expand-range@^1.8.1:
976 | version "1.8.2"
977 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
978 | dependencies:
979 | fill-range "^2.1.0"
980 |
981 | extend@~3.0.0:
982 | version "3.0.1"
983 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
984 |
985 | extglob@^0.3.1:
986 | version "0.3.2"
987 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
988 | dependencies:
989 | is-extglob "^1.0.0"
990 |
991 | extsprintf@1.3.0, extsprintf@^1.2.0:
992 | version "1.3.0"
993 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
994 |
995 | fbjs@^0.8.16, fbjs@^0.8.9:
996 | version "0.8.16"
997 | resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
998 | dependencies:
999 | core-js "^1.0.0"
1000 | isomorphic-fetch "^2.1.1"
1001 | loose-envify "^1.0.0"
1002 | object-assign "^4.1.0"
1003 | promise "^7.1.1"
1004 | setimmediate "^1.0.5"
1005 | ua-parser-js "^0.7.9"
1006 |
1007 | filename-regex@^2.0.0:
1008 | version "2.0.1"
1009 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
1010 |
1011 | fill-range@^2.1.0:
1012 | version "2.2.3"
1013 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
1014 | dependencies:
1015 | is-number "^2.1.0"
1016 | isobject "^2.0.0"
1017 | randomatic "^1.1.3"
1018 | repeat-element "^1.1.2"
1019 | repeat-string "^1.5.2"
1020 |
1021 | find-cache-dir@^0.1.1:
1022 | version "0.1.1"
1023 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
1024 | dependencies:
1025 | commondir "^1.0.1"
1026 | mkdirp "^0.5.1"
1027 | pkg-dir "^1.0.0"
1028 |
1029 | find-up@^1.0.0:
1030 | version "1.1.2"
1031 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
1032 | dependencies:
1033 | path-exists "^2.0.0"
1034 | pinkie-promise "^2.0.0"
1035 |
1036 | for-in@^1.0.1:
1037 | version "1.0.2"
1038 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
1039 |
1040 | for-own@^0.1.4:
1041 | version "0.1.5"
1042 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
1043 | dependencies:
1044 | for-in "^1.0.1"
1045 |
1046 | forever-agent@~0.6.1:
1047 | version "0.6.1"
1048 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
1049 |
1050 | form-data@~2.1.1:
1051 | version "2.1.4"
1052 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
1053 | dependencies:
1054 | asynckit "^0.4.0"
1055 | combined-stream "^1.0.5"
1056 | mime-types "^2.1.12"
1057 |
1058 | fs-readdir-recursive@^1.0.0:
1059 | version "1.1.0"
1060 | resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
1061 |
1062 | fs.realpath@^1.0.0:
1063 | version "1.0.0"
1064 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1065 |
1066 | fsevents@^1.0.0:
1067 | version "1.1.3"
1068 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
1069 | dependencies:
1070 | nan "^2.3.0"
1071 | node-pre-gyp "^0.6.39"
1072 |
1073 | fstream-ignore@^1.0.5:
1074 | version "1.0.5"
1075 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
1076 | dependencies:
1077 | fstream "^1.0.0"
1078 | inherits "2"
1079 | minimatch "^3.0.0"
1080 |
1081 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.12:
1082 | version "1.0.12"
1083 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045"
1084 | dependencies:
1085 | graceful-fs "^4.1.2"
1086 | inherits "~2.0.0"
1087 | mkdirp ">=0.5 0"
1088 | rimraf "2"
1089 |
1090 | gauge@~2.7.3:
1091 | version "2.7.4"
1092 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
1093 | dependencies:
1094 | aproba "^1.0.3"
1095 | console-control-strings "^1.0.0"
1096 | has-unicode "^2.0.0"
1097 | object-assign "^4.1.0"
1098 | signal-exit "^3.0.0"
1099 | string-width "^1.0.1"
1100 | strip-ansi "^3.0.1"
1101 | wide-align "^1.1.0"
1102 |
1103 | getpass@^0.1.1:
1104 | version "0.1.7"
1105 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
1106 | dependencies:
1107 | assert-plus "^1.0.0"
1108 |
1109 | glob-base@^0.3.0:
1110 | version "0.3.0"
1111 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
1112 | dependencies:
1113 | glob-parent "^2.0.0"
1114 | is-glob "^2.0.0"
1115 |
1116 | glob-parent@^2.0.0:
1117 | version "2.0.0"
1118 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
1119 | dependencies:
1120 | is-glob "^2.0.0"
1121 |
1122 | glob@7.1.2, glob@^7.0.5, glob@^7.1.2:
1123 | version "7.1.2"
1124 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
1125 | dependencies:
1126 | fs.realpath "^1.0.0"
1127 | inflight "^1.0.4"
1128 | inherits "2"
1129 | minimatch "^3.0.4"
1130 | once "^1.3.0"
1131 | path-is-absolute "^1.0.0"
1132 |
1133 | glob@^7.1.3:
1134 | version "7.1.7"
1135 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
1136 | dependencies:
1137 | fs.realpath "^1.0.0"
1138 | inflight "^1.0.4"
1139 | inherits "2"
1140 | minimatch "^3.0.4"
1141 | once "^1.3.0"
1142 | path-is-absolute "^1.0.0"
1143 |
1144 | globals@^9.18.0:
1145 | version "9.18.0"
1146 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
1147 |
1148 | graceful-fs@^4.1.2:
1149 | version "4.2.8"
1150 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
1151 |
1152 | graceful-fs@^4.1.4:
1153 | version "4.1.11"
1154 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
1155 |
1156 | growl@1.10.3:
1157 | version "1.10.3"
1158 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f"
1159 |
1160 | har-schema@^1.0.5:
1161 | version "1.0.5"
1162 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
1163 |
1164 | har-validator@~4.2.1:
1165 | version "4.2.1"
1166 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
1167 | dependencies:
1168 | ajv "^4.9.1"
1169 | har-schema "^1.0.5"
1170 |
1171 | has-ansi@^2.0.0:
1172 | version "2.0.0"
1173 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
1174 | dependencies:
1175 | ansi-regex "^2.0.0"
1176 |
1177 | has-flag@^1.0.0:
1178 | version "1.0.0"
1179 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
1180 |
1181 | has-flag@^2.0.0:
1182 | version "2.0.0"
1183 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
1184 |
1185 | has-unicode@^2.0.0:
1186 | version "2.0.1"
1187 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
1188 |
1189 | hawk@3.1.3, hawk@~3.1.3:
1190 | version "3.1.3"
1191 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
1192 | dependencies:
1193 | boom "2.x.x"
1194 | cryptiles "2.x.x"
1195 | hoek "2.x.x"
1196 | sntp "1.x.x"
1197 |
1198 | he@1.1.1:
1199 | version "1.1.1"
1200 | resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
1201 |
1202 | hoek@2.x.x:
1203 | version "2.16.3"
1204 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
1205 |
1206 | hoist-non-react-statics@^1.0.3:
1207 | version "1.2.0"
1208 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb"
1209 |
1210 | home-or-tmp@^2.0.0:
1211 | version "2.0.0"
1212 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
1213 | dependencies:
1214 | os-homedir "^1.0.0"
1215 | os-tmpdir "^1.0.1"
1216 |
1217 | http-signature@~1.1.0:
1218 | version "1.1.1"
1219 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
1220 | dependencies:
1221 | assert-plus "^0.2.0"
1222 | jsprim "^1.2.2"
1223 | sshpk "^1.7.0"
1224 |
1225 | https-browserify@0.0.1:
1226 | version "0.0.1"
1227 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
1228 |
1229 | iconv-lite@~0.4.13:
1230 | version "0.4.19"
1231 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
1232 |
1233 | ieee754@^1.1.4:
1234 | version "1.1.8"
1235 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
1236 |
1237 | indexof@0.0.1:
1238 | version "0.0.1"
1239 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
1240 |
1241 | inflight@^1.0.4:
1242 | version "1.0.6"
1243 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1244 | dependencies:
1245 | once "^1.3.0"
1246 | wrappy "1"
1247 |
1248 | inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
1249 | version "2.0.4"
1250 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1251 |
1252 | inherits@2.0.1:
1253 | version "2.0.1"
1254 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
1255 |
1256 | ini@~1.3.0:
1257 | version "1.3.8"
1258 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
1259 |
1260 | interpret@^0.6.4:
1261 | version "0.6.6"
1262 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
1263 |
1264 | invariant@^2.0.0, invariant@^2.2.2:
1265 | version "2.2.2"
1266 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
1267 | dependencies:
1268 | loose-envify "^1.0.0"
1269 |
1270 | is-binary-path@^1.0.0:
1271 | version "1.0.1"
1272 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
1273 | dependencies:
1274 | binary-extensions "^1.0.0"
1275 |
1276 | is-buffer@^1.1.5:
1277 | version "1.1.6"
1278 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
1279 |
1280 | is-dotfile@^1.0.0:
1281 | version "1.0.3"
1282 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
1283 |
1284 | is-equal-shallow@^0.1.3:
1285 | version "0.1.3"
1286 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
1287 | dependencies:
1288 | is-primitive "^2.0.0"
1289 |
1290 | is-extendable@^0.1.1:
1291 | version "0.1.1"
1292 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
1293 |
1294 | is-extglob@^1.0.0:
1295 | version "1.0.0"
1296 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
1297 |
1298 | is-finite@^1.0.0:
1299 | version "1.0.2"
1300 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
1301 | dependencies:
1302 | number-is-nan "^1.0.0"
1303 |
1304 | is-fullwidth-code-point@^1.0.0:
1305 | version "1.0.0"
1306 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
1307 | dependencies:
1308 | number-is-nan "^1.0.0"
1309 |
1310 | is-glob@^2.0.0, is-glob@^2.0.1:
1311 | version "2.0.1"
1312 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
1313 | dependencies:
1314 | is-extglob "^1.0.0"
1315 |
1316 | is-number@^2.1.0:
1317 | version "2.1.0"
1318 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
1319 | dependencies:
1320 | kind-of "^3.0.2"
1321 |
1322 | is-number@^3.0.0:
1323 | version "3.0.0"
1324 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
1325 | dependencies:
1326 | kind-of "^3.0.2"
1327 |
1328 | is-posix-bracket@^0.1.0:
1329 | version "0.1.1"
1330 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
1331 |
1332 | is-primitive@^2.0.0:
1333 | version "2.0.0"
1334 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
1335 |
1336 | is-stream@^1.0.1:
1337 | version "1.1.0"
1338 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
1339 |
1340 | is-typedarray@~1.0.0:
1341 | version "1.0.0"
1342 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
1343 |
1344 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
1345 | version "1.0.0"
1346 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1347 |
1348 | isobject@^2.0.0:
1349 | version "2.1.0"
1350 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1351 | dependencies:
1352 | isarray "1.0.0"
1353 |
1354 | isomorphic-fetch@^2.1.1:
1355 | version "2.2.1"
1356 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
1357 | dependencies:
1358 | node-fetch "^1.0.1"
1359 | whatwg-fetch ">=0.10.0"
1360 |
1361 | isstream@~0.1.2:
1362 | version "0.1.2"
1363 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
1364 |
1365 | js-tokens@^3.0.0, js-tokens@^3.0.2:
1366 | version "3.0.2"
1367 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
1368 |
1369 | jsbn@~0.1.0:
1370 | version "0.1.1"
1371 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
1372 |
1373 | jsesc@^1.3.0:
1374 | version "1.3.0"
1375 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
1376 |
1377 | jsesc@~0.5.0:
1378 | version "0.5.0"
1379 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1380 |
1381 | json-schema@0.2.3:
1382 | version "0.2.3"
1383 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
1384 |
1385 | json-stable-stringify@^1.0.1:
1386 | version "1.0.1"
1387 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
1388 | dependencies:
1389 | jsonify "~0.0.0"
1390 |
1391 | json-stringify-safe@~5.0.1:
1392 | version "5.0.1"
1393 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
1394 |
1395 | json5@^0.5.0, json5@^0.5.1:
1396 | version "0.5.1"
1397 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
1398 |
1399 | jsonify@~0.0.0:
1400 | version "0.0.0"
1401 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
1402 |
1403 | jsprim@^1.2.2:
1404 | version "1.4.1"
1405 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
1406 | dependencies:
1407 | assert-plus "1.0.0"
1408 | extsprintf "1.3.0"
1409 | json-schema "0.2.3"
1410 | verror "1.10.0"
1411 |
1412 | kind-of@^3.0.2:
1413 | version "3.2.2"
1414 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
1415 | dependencies:
1416 | is-buffer "^1.1.5"
1417 |
1418 | kind-of@^4.0.0:
1419 | version "4.0.0"
1420 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
1421 | dependencies:
1422 | is-buffer "^1.1.5"
1423 |
1424 | lazy-cache@^1.0.3:
1425 | version "1.0.4"
1426 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
1427 |
1428 | loader-utils@^0.2.11, loader-utils@^0.2.16:
1429 | version "0.2.17"
1430 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
1431 | dependencies:
1432 | big.js "^3.1.3"
1433 | emojis-list "^2.0.0"
1434 | json5 "^0.5.0"
1435 | object-assign "^4.0.1"
1436 |
1437 | lodash-es@^4.2.1:
1438 | version "4.17.4"
1439 | resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7"
1440 |
1441 | lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1:
1442 | version "4.17.21"
1443 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
1444 |
1445 | longest@^1.0.1:
1446 | version "1.0.1"
1447 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
1448 |
1449 | loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1:
1450 | version "1.3.1"
1451 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
1452 | dependencies:
1453 | js-tokens "^3.0.0"
1454 |
1455 | memory-fs@^0.2.0:
1456 | version "0.2.0"
1457 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290"
1458 |
1459 | memory-fs@~0.3.0:
1460 | version "0.3.0"
1461 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20"
1462 | dependencies:
1463 | errno "^0.1.3"
1464 | readable-stream "^2.0.1"
1465 |
1466 | micromatch@^2.1.5:
1467 | version "2.3.11"
1468 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
1469 | dependencies:
1470 | arr-diff "^2.0.0"
1471 | array-unique "^0.2.1"
1472 | braces "^1.8.2"
1473 | expand-brackets "^0.1.4"
1474 | extglob "^0.3.1"
1475 | filename-regex "^2.0.0"
1476 | is-extglob "^1.0.0"
1477 | is-glob "^2.0.1"
1478 | kind-of "^3.0.2"
1479 | normalize-path "^2.0.1"
1480 | object.omit "^2.0.0"
1481 | parse-glob "^3.0.4"
1482 | regex-cache "^0.4.2"
1483 |
1484 | mime-db@~1.30.0:
1485 | version "1.30.0"
1486 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
1487 |
1488 | mime-types@^2.1.12, mime-types@~2.1.7:
1489 | version "2.1.17"
1490 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
1491 | dependencies:
1492 | mime-db "~1.30.0"
1493 |
1494 | minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4:
1495 | version "3.1.2"
1496 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
1497 | dependencies:
1498 | brace-expansion "^1.1.7"
1499 |
1500 | minimist@0.0.8:
1501 | version "0.0.8"
1502 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1503 |
1504 | minimist@^1.2.0:
1505 | version "1.2.0"
1506 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
1507 |
1508 | minimist@^1.2.5:
1509 | version "1.2.5"
1510 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
1511 |
1512 | minimist@~0.0.1:
1513 | version "0.0.10"
1514 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
1515 |
1516 | mkdirp@0.5.1, mkdirp@^0.5.1, mkdirp@~0.5.0:
1517 | version "0.5.1"
1518 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
1519 | dependencies:
1520 | minimist "0.0.8"
1521 |
1522 | "mkdirp@>=0.5 0":
1523 | version "0.5.5"
1524 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
1525 | dependencies:
1526 | minimist "^1.2.5"
1527 |
1528 | mocha@*:
1529 | version "4.0.1"
1530 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.0.1.tgz#0aee5a95cf69a4618820f5e51fa31717117daf1b"
1531 | dependencies:
1532 | browser-stdout "1.3.0"
1533 | commander "2.11.0"
1534 | debug "3.1.0"
1535 | diff "3.3.1"
1536 | escape-string-regexp "1.0.5"
1537 | glob "7.1.2"
1538 | growl "1.10.3"
1539 | he "1.1.1"
1540 | mkdirp "0.5.1"
1541 | supports-color "4.4.0"
1542 |
1543 | ms@2.0.0:
1544 | version "2.0.0"
1545 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1546 |
1547 | nan@^2.3.0:
1548 | version "2.7.0"
1549 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46"
1550 |
1551 | node-fetch@^1.0.1:
1552 | version "1.7.3"
1553 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
1554 | dependencies:
1555 | encoding "^0.1.11"
1556 | is-stream "^1.0.1"
1557 |
1558 | node-libs-browser@^0.7.0:
1559 | version "0.7.0"
1560 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.7.0.tgz#3e272c0819e308935e26674408d7af0e1491b83b"
1561 | dependencies:
1562 | assert "^1.1.1"
1563 | browserify-zlib "^0.1.4"
1564 | buffer "^4.9.0"
1565 | console-browserify "^1.1.0"
1566 | constants-browserify "^1.0.0"
1567 | crypto-browserify "3.3.0"
1568 | domain-browser "^1.1.1"
1569 | events "^1.0.0"
1570 | https-browserify "0.0.1"
1571 | os-browserify "^0.2.0"
1572 | path-browserify "0.0.0"
1573 | process "^0.11.0"
1574 | punycode "^1.2.4"
1575 | querystring-es3 "^0.2.0"
1576 | readable-stream "^2.0.5"
1577 | stream-browserify "^2.0.1"
1578 | stream-http "^2.3.1"
1579 | string_decoder "^0.10.25"
1580 | timers-browserify "^2.0.2"
1581 | tty-browserify "0.0.0"
1582 | url "^0.11.0"
1583 | util "^0.10.3"
1584 | vm-browserify "0.0.4"
1585 |
1586 | node-pre-gyp@^0.6.39:
1587 | version "0.6.39"
1588 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
1589 | dependencies:
1590 | detect-libc "^1.0.2"
1591 | hawk "3.1.3"
1592 | mkdirp "^0.5.1"
1593 | nopt "^4.0.1"
1594 | npmlog "^4.0.2"
1595 | rc "^1.1.7"
1596 | request "2.81.0"
1597 | rimraf "^2.6.1"
1598 | semver "^5.3.0"
1599 | tar "^2.2.1"
1600 | tar-pack "^3.4.0"
1601 |
1602 | nopt@^4.0.1:
1603 | version "4.0.1"
1604 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
1605 | dependencies:
1606 | abbrev "1"
1607 | osenv "^0.1.4"
1608 |
1609 | normalize-path@^2.0.0, normalize-path@^2.0.1:
1610 | version "2.1.1"
1611 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
1612 | dependencies:
1613 | remove-trailing-separator "^1.0.1"
1614 |
1615 | npmlog@^4.0.2:
1616 | version "4.1.2"
1617 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
1618 | dependencies:
1619 | are-we-there-yet "~1.1.2"
1620 | console-control-strings "~1.1.0"
1621 | gauge "~2.7.3"
1622 | set-blocking "~2.0.0"
1623 |
1624 | number-is-nan@^1.0.0:
1625 | version "1.0.1"
1626 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1627 |
1628 | oauth-sign@~0.8.1:
1629 | version "0.8.2"
1630 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
1631 |
1632 | object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
1633 | version "4.1.1"
1634 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1635 |
1636 | object.omit@^2.0.0:
1637 | version "2.0.1"
1638 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
1639 | dependencies:
1640 | for-own "^0.1.4"
1641 | is-extendable "^0.1.1"
1642 |
1643 | once@^1.3.0, once@^1.3.3:
1644 | version "1.4.0"
1645 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1646 | dependencies:
1647 | wrappy "1"
1648 |
1649 | optimist@~0.6.0:
1650 | version "0.6.1"
1651 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
1652 | dependencies:
1653 | minimist "~0.0.1"
1654 | wordwrap "~0.0.2"
1655 |
1656 | os-browserify@^0.2.0:
1657 | version "0.2.1"
1658 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
1659 |
1660 | os-homedir@^1.0.0:
1661 | version "1.0.2"
1662 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
1663 |
1664 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
1665 | version "1.0.2"
1666 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1667 |
1668 | osenv@^0.1.4:
1669 | version "0.1.4"
1670 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
1671 | dependencies:
1672 | os-homedir "^1.0.0"
1673 | os-tmpdir "^1.0.0"
1674 |
1675 | output-file-sync@^1.1.2:
1676 | version "1.1.2"
1677 | resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
1678 | dependencies:
1679 | graceful-fs "^4.1.4"
1680 | mkdirp "^0.5.1"
1681 | object-assign "^4.1.0"
1682 |
1683 | pako@~0.2.0:
1684 | version "0.2.9"
1685 | resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
1686 |
1687 | parse-glob@^3.0.4:
1688 | version "3.0.4"
1689 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
1690 | dependencies:
1691 | glob-base "^0.3.0"
1692 | is-dotfile "^1.0.0"
1693 | is-extglob "^1.0.0"
1694 | is-glob "^2.0.0"
1695 |
1696 | path-browserify@0.0.0:
1697 | version "0.0.0"
1698 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
1699 |
1700 | path-exists@^2.0.0:
1701 | version "2.1.0"
1702 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
1703 | dependencies:
1704 | pinkie-promise "^2.0.0"
1705 |
1706 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
1707 | version "1.0.1"
1708 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1709 |
1710 | pbkdf2-compat@2.0.1:
1711 | version "2.0.1"
1712 | resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288"
1713 |
1714 | performance-now@^0.2.0:
1715 | version "0.2.0"
1716 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
1717 |
1718 | pinkie-promise@^2.0.0:
1719 | version "2.0.1"
1720 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
1721 | dependencies:
1722 | pinkie "^2.0.0"
1723 |
1724 | pinkie@^2.0.0:
1725 | version "2.0.4"
1726 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
1727 |
1728 | pkg-dir@^1.0.0:
1729 | version "1.0.0"
1730 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
1731 | dependencies:
1732 | find-up "^1.0.0"
1733 |
1734 | preserve@^0.2.0:
1735 | version "0.2.0"
1736 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
1737 |
1738 | private@^0.1.6, private@^0.1.7:
1739 | version "0.1.8"
1740 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
1741 |
1742 | process-nextick-args@~1.0.6:
1743 | version "1.0.7"
1744 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
1745 |
1746 | process@^0.11.0:
1747 | version "0.11.10"
1748 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
1749 |
1750 | promise@^7.1.1:
1751 | version "7.3.1"
1752 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
1753 | dependencies:
1754 | asap "~2.0.3"
1755 |
1756 | prop-types@^15.5.4, prop-types@^15.6.0:
1757 | version "15.6.0"
1758 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
1759 | dependencies:
1760 | fbjs "^0.8.16"
1761 | loose-envify "^1.3.1"
1762 | object-assign "^4.1.1"
1763 |
1764 | prr@~0.0.0:
1765 | version "0.0.0"
1766 | resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
1767 |
1768 | punycode@1.3.2:
1769 | version "1.3.2"
1770 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
1771 |
1772 | punycode@^1.2.4, punycode@^1.4.1:
1773 | version "1.4.1"
1774 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
1775 |
1776 | qs@~6.4.0:
1777 | version "6.4.0"
1778 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
1779 |
1780 | querystring-es3@^0.2.0:
1781 | version "0.2.1"
1782 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
1783 |
1784 | querystring@0.2.0:
1785 | version "0.2.0"
1786 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
1787 |
1788 | randomatic@^1.1.3:
1789 | version "1.1.7"
1790 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
1791 | dependencies:
1792 | is-number "^3.0.0"
1793 | kind-of "^4.0.0"
1794 |
1795 | rc@^1.1.7:
1796 | version "1.2.2"
1797 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077"
1798 | dependencies:
1799 | deep-extend "~0.4.0"
1800 | ini "~1.3.0"
1801 | minimist "^1.2.0"
1802 | strip-json-comments "~2.0.1"
1803 |
1804 | react-redux@^4.0.0:
1805 | version "4.4.8"
1806 | resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-4.4.8.tgz#e7bc1dd100e8b64e96ac8212db113239b9e2e08f"
1807 | dependencies:
1808 | create-react-class "^15.5.1"
1809 | hoist-non-react-statics "^1.0.3"
1810 | invariant "^2.0.0"
1811 | lodash "^4.2.0"
1812 | loose-envify "^1.1.0"
1813 | prop-types "^15.5.4"
1814 |
1815 | react@^16.1.1:
1816 | version "16.1.1"
1817 | resolved "https://registry.yarnpkg.com/react/-/react-16.1.1.tgz#d5c4ef795507e3012282dd51261ff9c0e824fe1f"
1818 | dependencies:
1819 | fbjs "^0.8.16"
1820 | loose-envify "^1.1.0"
1821 | object-assign "^4.1.1"
1822 | prop-types "^15.6.0"
1823 |
1824 | readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6:
1825 | version "2.3.3"
1826 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
1827 | dependencies:
1828 | core-util-is "~1.0.0"
1829 | inherits "~2.0.3"
1830 | isarray "~1.0.0"
1831 | process-nextick-args "~1.0.6"
1832 | safe-buffer "~5.1.1"
1833 | string_decoder "~1.0.3"
1834 | util-deprecate "~1.0.1"
1835 |
1836 | readdirp@^2.0.0:
1837 | version "2.1.0"
1838 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
1839 | dependencies:
1840 | graceful-fs "^4.1.2"
1841 | minimatch "^3.0.2"
1842 | readable-stream "^2.0.2"
1843 | set-immediate-shim "^1.0.1"
1844 |
1845 | redux@^3.0.0:
1846 | version "3.7.2"
1847 | resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b"
1848 | dependencies:
1849 | lodash "^4.2.1"
1850 | lodash-es "^4.2.1"
1851 | loose-envify "^1.1.0"
1852 | symbol-observable "^1.0.3"
1853 |
1854 | regenerate@^1.2.1:
1855 | version "1.3.3"
1856 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
1857 |
1858 | regenerator-runtime@^0.10.5:
1859 | version "0.10.5"
1860 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
1861 |
1862 | regenerator-runtime@^0.11.0:
1863 | version "0.11.0"
1864 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1"
1865 |
1866 | regenerator-transform@^0.10.0:
1867 | version "0.10.1"
1868 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
1869 | dependencies:
1870 | babel-runtime "^6.18.0"
1871 | babel-types "^6.19.0"
1872 | private "^0.1.6"
1873 |
1874 | regex-cache@^0.4.2:
1875 | version "0.4.4"
1876 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
1877 | dependencies:
1878 | is-equal-shallow "^0.1.3"
1879 |
1880 | regexpu-core@^2.0.0:
1881 | version "2.0.0"
1882 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
1883 | dependencies:
1884 | regenerate "^1.2.1"
1885 | regjsgen "^0.2.0"
1886 | regjsparser "^0.1.4"
1887 |
1888 | regjsgen@^0.2.0:
1889 | version "0.2.0"
1890 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
1891 |
1892 | regjsparser@^0.1.4:
1893 | version "0.1.5"
1894 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
1895 | dependencies:
1896 | jsesc "~0.5.0"
1897 |
1898 | remove-trailing-separator@^1.0.1:
1899 | version "1.1.0"
1900 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
1901 |
1902 | repeat-element@^1.1.2:
1903 | version "1.1.2"
1904 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
1905 |
1906 | repeat-string@^1.5.2:
1907 | version "1.6.1"
1908 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
1909 |
1910 | repeating@^2.0.0:
1911 | version "2.0.1"
1912 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
1913 | dependencies:
1914 | is-finite "^1.0.0"
1915 |
1916 | request@2.81.0:
1917 | version "2.81.0"
1918 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
1919 | dependencies:
1920 | aws-sign2 "~0.6.0"
1921 | aws4 "^1.2.1"
1922 | caseless "~0.12.0"
1923 | combined-stream "~1.0.5"
1924 | extend "~3.0.0"
1925 | forever-agent "~0.6.1"
1926 | form-data "~2.1.1"
1927 | har-validator "~4.2.1"
1928 | hawk "~3.1.3"
1929 | http-signature "~1.1.0"
1930 | is-typedarray "~1.0.0"
1931 | isstream "~0.1.2"
1932 | json-stringify-safe "~5.0.1"
1933 | mime-types "~2.1.7"
1934 | oauth-sign "~0.8.1"
1935 | performance-now "^0.2.0"
1936 | qs "~6.4.0"
1937 | safe-buffer "^5.0.1"
1938 | stringstream "~0.0.4"
1939 | tough-cookie "~2.3.0"
1940 | tunnel-agent "^0.6.0"
1941 | uuid "^3.0.0"
1942 |
1943 | right-align@^0.1.1:
1944 | version "0.1.3"
1945 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
1946 | dependencies:
1947 | align-text "^0.1.1"
1948 |
1949 | rimraf@2:
1950 | version "2.7.1"
1951 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
1952 | dependencies:
1953 | glob "^7.1.3"
1954 |
1955 | rimraf@^2.5.1, rimraf@^2.6.1:
1956 | version "2.6.2"
1957 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
1958 | dependencies:
1959 | glob "^7.0.5"
1960 |
1961 | ripemd160@0.2.0:
1962 | version "0.2.0"
1963 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce"
1964 |
1965 | safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1966 | version "5.1.1"
1967 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
1968 |
1969 | semver@^5.3.0:
1970 | version "5.4.1"
1971 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
1972 |
1973 | set-blocking@~2.0.0:
1974 | version "2.0.0"
1975 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
1976 |
1977 | set-immediate-shim@^1.0.1:
1978 | version "1.0.1"
1979 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
1980 |
1981 | setimmediate@^1.0.4, setimmediate@^1.0.5:
1982 | version "1.0.5"
1983 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
1984 |
1985 | sha.js@2.2.6:
1986 | version "2.2.6"
1987 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba"
1988 |
1989 | should-equal@^2.0.0:
1990 | version "2.0.0"
1991 | resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3"
1992 | dependencies:
1993 | should-type "^1.4.0"
1994 |
1995 | should-format@^3.0.3:
1996 | version "3.0.3"
1997 | resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1"
1998 | dependencies:
1999 | should-type "^1.3.0"
2000 | should-type-adaptors "^1.0.1"
2001 |
2002 | should-type-adaptors@^1.0.1:
2003 | version "1.0.1"
2004 | resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.0.1.tgz#efe5553cdf68cff66e5c5f51b712dc351c77beaa"
2005 | dependencies:
2006 | should-type "^1.3.0"
2007 | should-util "^1.0.0"
2008 |
2009 | should-type@^1.3.0, should-type@^1.4.0:
2010 | version "1.4.0"
2011 | resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3"
2012 |
2013 | should-util@^1.0.0:
2014 | version "1.0.0"
2015 | resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.0.tgz#c98cda374aa6b190df8ba87c9889c2b4db620063"
2016 |
2017 | should@*:
2018 | version "13.1.3"
2019 | resolved "https://registry.yarnpkg.com/should/-/should-13.1.3.tgz#a089bdf7979392a8272a712c8b63acbaafb7948f"
2020 | dependencies:
2021 | should-equal "^2.0.0"
2022 | should-format "^3.0.3"
2023 | should-type "^1.4.0"
2024 | should-type-adaptors "^1.0.1"
2025 | should-util "^1.0.0"
2026 |
2027 | signal-exit@^3.0.0:
2028 | version "3.0.2"
2029 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
2030 |
2031 | slash@^1.0.0:
2032 | version "1.0.0"
2033 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
2034 |
2035 | sntp@1.x.x:
2036 | version "1.0.9"
2037 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
2038 | dependencies:
2039 | hoek "2.x.x"
2040 |
2041 | source-list-map@~0.1.7:
2042 | version "0.1.8"
2043 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
2044 |
2045 | source-map-support@^0.4.15:
2046 | version "0.4.18"
2047 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
2048 | dependencies:
2049 | source-map "^0.5.6"
2050 |
2051 | source-map@^0.5.6, source-map@~0.5.1:
2052 | version "0.5.7"
2053 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
2054 |
2055 | source-map@~0.4.1:
2056 | version "0.4.4"
2057 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
2058 | dependencies:
2059 | amdefine ">=0.0.4"
2060 |
2061 | sshpk@^1.7.0:
2062 | version "1.13.1"
2063 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
2064 | dependencies:
2065 | asn1 "~0.2.3"
2066 | assert-plus "^1.0.0"
2067 | dashdash "^1.12.0"
2068 | getpass "^0.1.1"
2069 | optionalDependencies:
2070 | bcrypt-pbkdf "^1.0.0"
2071 | ecc-jsbn "~0.1.1"
2072 | jsbn "~0.1.0"
2073 | tweetnacl "~0.14.0"
2074 |
2075 | stream-browserify@^2.0.1:
2076 | version "2.0.1"
2077 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
2078 | dependencies:
2079 | inherits "~2.0.1"
2080 | readable-stream "^2.0.2"
2081 |
2082 | stream-http@^2.3.1:
2083 | version "2.7.2"
2084 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad"
2085 | dependencies:
2086 | builtin-status-codes "^3.0.0"
2087 | inherits "^2.0.1"
2088 | readable-stream "^2.2.6"
2089 | to-arraybuffer "^1.0.0"
2090 | xtend "^4.0.0"
2091 |
2092 | string-width@^1.0.1, string-width@^1.0.2:
2093 | version "1.0.2"
2094 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
2095 | dependencies:
2096 | code-point-at "^1.0.0"
2097 | is-fullwidth-code-point "^1.0.0"
2098 | strip-ansi "^3.0.0"
2099 |
2100 | string_decoder@^0.10.25:
2101 | version "0.10.31"
2102 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
2103 |
2104 | string_decoder@~1.0.3:
2105 | version "1.0.3"
2106 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
2107 | dependencies:
2108 | safe-buffer "~5.1.0"
2109 |
2110 | stringstream@~0.0.4:
2111 | version "0.0.5"
2112 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
2113 |
2114 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
2115 | version "3.0.1"
2116 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
2117 | dependencies:
2118 | ansi-regex "^2.0.0"
2119 |
2120 | strip-json-comments@~2.0.1:
2121 | version "2.0.1"
2122 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
2123 |
2124 | supports-color@4.4.0:
2125 | version "4.4.0"
2126 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e"
2127 | dependencies:
2128 | has-flag "^2.0.0"
2129 |
2130 | supports-color@^2.0.0:
2131 | version "2.0.0"
2132 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
2133 |
2134 | supports-color@^3.1.0:
2135 | version "3.2.3"
2136 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
2137 | dependencies:
2138 | has-flag "^1.0.0"
2139 |
2140 | symbol-observable@^1.0.3:
2141 | version "1.0.4"
2142 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
2143 |
2144 | tapable@^0.1.8, tapable@~0.1.8:
2145 | version "0.1.10"
2146 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4"
2147 |
2148 | tar-pack@^3.4.0:
2149 | version "3.4.1"
2150 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
2151 | dependencies:
2152 | debug "^2.2.0"
2153 | fstream "^1.0.10"
2154 | fstream-ignore "^1.0.5"
2155 | once "^1.3.3"
2156 | readable-stream "^2.1.4"
2157 | rimraf "^2.5.1"
2158 | tar "^2.2.1"
2159 | uid-number "^0.0.6"
2160 |
2161 | tar@^2.2.1:
2162 | version "2.2.2"
2163 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40"
2164 | dependencies:
2165 | block-stream "*"
2166 | fstream "^1.0.12"
2167 | inherits "2"
2168 |
2169 | timers-browserify@^2.0.2:
2170 | version "2.0.4"
2171 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6"
2172 | dependencies:
2173 | setimmediate "^1.0.4"
2174 |
2175 | to-arraybuffer@^1.0.0:
2176 | version "1.0.1"
2177 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
2178 |
2179 | to-fast-properties@^1.0.3:
2180 | version "1.0.3"
2181 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
2182 |
2183 | tough-cookie@~2.3.0:
2184 | version "2.3.3"
2185 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
2186 | dependencies:
2187 | punycode "^1.4.1"
2188 |
2189 | trim-right@^1.0.1:
2190 | version "1.0.1"
2191 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
2192 |
2193 | tty-browserify@0.0.0:
2194 | version "0.0.0"
2195 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
2196 |
2197 | tunnel-agent@^0.6.0:
2198 | version "0.6.0"
2199 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
2200 | dependencies:
2201 | safe-buffer "^5.0.1"
2202 |
2203 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
2204 | version "0.14.5"
2205 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
2206 |
2207 | ua-parser-js@^0.7.9:
2208 | version "0.7.33"
2209 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532"
2210 |
2211 | uglify-js@~2.7.3:
2212 | version "2.7.5"
2213 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
2214 | dependencies:
2215 | async "~0.2.6"
2216 | source-map "~0.5.1"
2217 | uglify-to-browserify "~1.0.0"
2218 | yargs "~3.10.0"
2219 |
2220 | uglify-to-browserify@~1.0.0:
2221 | version "1.0.2"
2222 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
2223 |
2224 | uid-number@^0.0.6:
2225 | version "0.0.6"
2226 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
2227 |
2228 | url@^0.11.0:
2229 | version "0.11.0"
2230 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
2231 | dependencies:
2232 | punycode "1.3.2"
2233 | querystring "0.2.0"
2234 |
2235 | user-home@^1.1.1:
2236 | version "1.1.1"
2237 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
2238 |
2239 | util-deprecate@~1.0.1:
2240 | version "1.0.2"
2241 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2242 |
2243 | util@0.10.3, util@^0.10.3:
2244 | version "0.10.3"
2245 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
2246 | dependencies:
2247 | inherits "2.0.1"
2248 |
2249 | uuid@^3.0.0:
2250 | version "3.1.0"
2251 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
2252 |
2253 | v8flags@^2.1.1:
2254 | version "2.1.1"
2255 | resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
2256 | dependencies:
2257 | user-home "^1.1.1"
2258 |
2259 | verror@1.10.0:
2260 | version "1.10.0"
2261 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
2262 | dependencies:
2263 | assert-plus "^1.0.0"
2264 | core-util-is "1.0.2"
2265 | extsprintf "^1.2.0"
2266 |
2267 | vm-browserify@0.0.4:
2268 | version "0.0.4"
2269 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
2270 | dependencies:
2271 | indexof "0.0.1"
2272 |
2273 | watchpack@^0.2.1:
2274 | version "0.2.9"
2275 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b"
2276 | dependencies:
2277 | async "^0.9.0"
2278 | chokidar "^1.0.0"
2279 | graceful-fs "^4.1.2"
2280 |
2281 | webpack-core@~0.6.9:
2282 | version "0.6.9"
2283 | resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2"
2284 | dependencies:
2285 | source-list-map "~0.1.7"
2286 | source-map "~0.4.1"
2287 |
2288 | webpack@^1.12.9:
2289 | version "1.15.0"
2290 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.15.0.tgz#4ff31f53db03339e55164a9d468ee0324968fe98"
2291 | dependencies:
2292 | acorn "^3.0.0"
2293 | async "^1.3.0"
2294 | clone "^1.0.2"
2295 | enhanced-resolve "~0.9.0"
2296 | interpret "^0.6.4"
2297 | loader-utils "^0.2.11"
2298 | memory-fs "~0.3.0"
2299 | mkdirp "~0.5.0"
2300 | node-libs-browser "^0.7.0"
2301 | optimist "~0.6.0"
2302 | supports-color "^3.1.0"
2303 | tapable "~0.1.8"
2304 | uglify-js "~2.7.3"
2305 | watchpack "^0.2.1"
2306 | webpack-core "~0.6.9"
2307 |
2308 | whatwg-fetch@>=0.10.0:
2309 | version "2.0.3"
2310 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
2311 |
2312 | wide-align@^1.1.0:
2313 | version "1.1.2"
2314 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
2315 | dependencies:
2316 | string-width "^1.0.2"
2317 |
2318 | window-size@0.1.0:
2319 | version "0.1.0"
2320 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
2321 |
2322 | wordwrap@0.0.2:
2323 | version "0.0.2"
2324 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
2325 |
2326 | wordwrap@~0.0.2:
2327 | version "0.0.3"
2328 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
2329 |
2330 | wrappy@1:
2331 | version "1.0.2"
2332 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2333 |
2334 | xtend@^4.0.0:
2335 | version "4.0.1"
2336 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
2337 |
2338 | yargs@~3.10.0:
2339 | version "3.10.0"
2340 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
2341 | dependencies:
2342 | camelcase "^1.0.2"
2343 | cliui "^2.1.0"
2344 | decamelize "^1.0.0"
2345 | window-size "0.1.0"
2346 |
--------------------------------------------------------------------------------