├── .babelrc
├── .eslintrc.json
├── .gitignore
├── .npmignore
├── .nycrc
├── .travis.yml
├── CHANGELOG.md
├── LICENSE
├── README.md
├── example
├── .editorconfig
├── .eslintrc.json
├── .gitignore
├── .stylelintrc.json
├── README.md
├── kyt.config.js
├── package.json
├── src
│ ├── client
│ │ └── index.js
│ ├── components
│ │ ├── App
│ │ │ ├── App.test.js
│ │ │ └── index.js
│ │ ├── Button
│ │ │ └── index.js
│ │ ├── Code
│ │ │ └── index.js
│ │ ├── Header
│ │ │ └── index.js
│ │ └── HelloWorld
│ │ │ ├── HelloWorld.style.js
│ │ │ └── index.js
│ └── server
│ │ └── index.js
└── yarn.lock
├── package.json
├── src
├── dom
│ └── index.js
├── index.js
├── insert-style.js
└── server
│ └── index.js
├── test
├── .eslintrc.json
├── .setup.js
├── components
│ ├── DecoratedButton.js
│ ├── TaggedDecoratedButton.js
│ └── WrappedButton.js
├── dom.test.js
├── insertStyle.test.js
├── mocha.opts
├── server.test.js
├── testUtil.js
└── withStyles.test.js
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "test": {
4 | "plugins": [
5 | "istanbul",
6 | "rewire",
7 | "transform-decorators-legacy"
8 | ]
9 | }
10 | },
11 | "plugins": ["transform-runtime"],
12 | "presets": ["es2015", "react", "stage-0"]
13 | }
14 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "extends": "eslint-config-airbnb",
4 | "env": {
5 | "browser": true
6 | },
7 | "rules": {
8 | "react/jsx-filename-extension": [1, {
9 | "extensions": [".js", ".jsx"]
10 | }]
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | lib
2 |
3 | # Logs
4 | logs
5 | *.log
6 | npm-debug.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 |
13 | # Directory for instrumented libs generated by jscoverage/JSCover
14 | lib-cov
15 |
16 | # Coverage directory used by tools like istanbul
17 | coverage
18 |
19 | # nyc test coverage
20 | .nyc_output
21 |
22 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
23 | .grunt
24 |
25 | # node-waf configuration
26 | .lock-wscript
27 |
28 | # Compiled binary addons (http://nodejs.org/api/addons.html)
29 | build/Release
30 |
31 | # Dependency directories
32 | node_modules
33 | jspm_packages
34 |
35 | # Optional npm cache directory
36 | .npm
37 |
38 | # Optional REPL history
39 | .node_repl_history
40 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | src
2 | example
3 | test
4 | yarn.lock
5 |
--------------------------------------------------------------------------------
/.nycrc:
--------------------------------------------------------------------------------
1 | {
2 | "include": [
3 | "**/src/**"
4 | ],
5 | "require": [
6 | "babel-register"
7 | ],
8 | "sourceMap": false,
9 | "instrument": false
10 | }
11 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 | language: node_js
3 | node_js:
4 | - "node"
5 | before_script:
6 | - npm run lint
7 | after_success:
8 | - "nyc report --reporter=text-lcov | coveralls"
9 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## Please see the [releases page](https://github.com/tizmagik/react-csjs/releases)
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Jeremy Gayed
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 CSJS
2 |
3 | React Higher Order Component for [CSJS](https://github.com/rtsao/csjs). Automatically mounts/unmounts styles, works with React Hot Loader. _Inspired by the JSS-equivalent, [react-jss](https://github.com/jsstyles/react-jss)._
4 |
5 | [](https://www.npmjs.com/package/react-csjs)
6 | [](https://travis-ci.org/tizmagik/react-csjs)
7 | [](https://coveralls.io/github/tizmagik/react-csjs)
8 |
9 | ### Auto-mount/unmounting of styles
10 |
11 | The benefit of using react-csjs instead of using CSJS directly is auto-mount/unmount so that only the styles relevant to which components are currently rendered into the DOM will be mounted; and then once those components are removed/unmounted, so will their styles.
12 |
13 | ### Installation
14 |
15 | You'll need to install both `csjs` and `react-csjs` like so:
16 |
17 | ```
18 | npm install --save csjs react-csjs
19 | ```
20 |
21 | ## Usage
22 |
23 | ##### tagged `@decorator` syntax
24 |
25 | You can use react-csjs as a higher order component via the decorators syntax (which you'll need something like [babel-plugin-transform-decorators-legacy](https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy) for it to work).
26 |
27 | Simply pass the CSS as a string literal. If CSJS plugins like [babel-plugin-csjs-postcss](https://github.com/rtsao/babel-plugin-csjs-postcss) are used, they will apply their transforms as usual as long as the default export is named "csjs".
28 |
29 | ```js
30 | import React from 'react';
31 | import csjs from 'react-csjs';
32 |
33 | @csjs`
34 | .button {
35 | background-color: purple
36 | }
37 | .label {
38 | color: blue
39 | }`
40 | export default class Button extends React.Component {
41 | render() {
42 | return (
43 |
44 |
45 | {this.props.children}
46 |
47 |
48 | )
49 | }
50 | }
51 | ```
52 |
53 | ##### `@decorator` syntax
54 |
55 | You can also use react-csjs as a higher order component in combination with CSJS via the decorators syntax. The decorator can be exported under any name, in this case "withStyles."
56 |
57 | ```js
58 | import React from 'react';
59 | import csjs from 'csjs';
60 | import withStyles from 'react-csjs';
61 |
62 | const styles = csjs`
63 | .button {
64 | background-color: purple
65 | }
66 | .label {
67 | color: blue
68 | }`;
69 |
70 | @withStyles(styles)
71 | export default class Button extends React.Component {
72 | render() {
73 | return (
74 |
75 |
76 | {this.props.children}
77 |
78 |
79 | )
80 | }
81 | }
82 | ```
83 |
84 | ##### Default export wrapper
85 |
86 | _Or_ you can wrap your default export if you'd prefer not to use the decorator syntax, or you're applying to a stateless functional component, like so:
87 |
88 | ```js
89 | import React from 'react';
90 | import csjs from 'csjs';
91 | import withStyles from 'react-csjs';
92 |
93 | const styles = csjs`
94 | .button {
95 | background-color: purple
96 | }
97 | .label {
98 | color: blue
99 | }`;
100 |
101 | const Button = ({classes, children}) => (
102 |
103 |
104 | {children}
105 |
106 |
107 | );
108 |
109 | export default withStyles(styles)(Button);
110 | ```
111 |
112 | ### The `classes` property
113 |
114 | react-csjs adds its own `classes` prop to the higher order component which contains the same CSJS object that was passed in through `withStyles`. You are welcome to use `classes` or the original styles object if it is still in scope, but in some circumstances the `classes` prop may be your only option.
115 |
116 | Popular linting rules such as [`react/prop-types`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prop-types.md) from [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) will complain that the `classes` prop is missing from props validation. There are several ways to address this:
117 |
118 | 1. Add the `classes` prop to your component's propTypes:
119 |
120 | ```js
121 | Button.propTypes = {
122 | classes: React.PropTypes.objectOf(React.PropTypes.object).isRequired,
123 | };
124 | ```
125 |
126 | 2. Tweak the lint rule to ignore the `classes` prop:
127 |
128 | ```json
129 | "prop-types": [2, { "ignore": ["classes"] }]
130 | ```
131 |
132 | ## Server-side Rendering
133 |
134 | `react-csjs` fully supports isomorphic/universal apps out of the box. You simply call the provided `getStyle()` method to grab all of your app's styles after rendering your app to string, like so:
135 |
136 | ```js
137 | /* server.js */
138 |
139 | import React from 'react';
140 | import ReactDOM from 'react-dom/server';
141 | import express from 'express';
142 | import App from './App';
143 | import { getStyle } from 'react-csjs';
144 |
145 | const server = express();
146 |
147 | // Render the app
148 | const renderedApp = ReactDOM.renderToString( );
149 | // Gather the generated styles
150 | const renderedStyles = getStyle();
151 |
152 | server.get('/', (req, res) => {
153 | res.send(`
154 |
155 |
156 |
157 |
158 |
159 | ${renderedApp}
160 |
161 |
162 |
163 | `);
164 | });
165 |
166 | server.listen(3000);
167 | ```
168 |
169 | You can then remove the SSR styles after rendering on the client.
170 |
171 | > NOTE: Although this step is not strictly necessary, without removing the SSR styles, you'll effectively have 2 declarations for every style definition: one for the server rendered and one for the auto-mounted styles on the client.
172 |
173 | ```js
174 | /* client.js */
175 |
176 | import React from 'react';
177 | import ReactDOM from 'react-dom';
178 | import App from './App';
179 | import { removeStyle } from 'react-csjs';
180 |
181 | const root = document.getElementById('root');
182 | const ssrStyles = document.getElementById('ssr-styles');
183 |
184 | // Render the app client-side
185 | ReactDOM.render( , root);
186 |
187 | // Can now safely remove the SSR styles since from here on,
188 | // styles will be auto-mounted by react-csjs
189 | removeStyle(ssrStyles);
190 | ```
191 |
192 | ## Example App
193 |
194 | You can see a fully working example of an isomorphic/universal React app using `react-csjs` in the [/example](/example) directory.
195 |
--------------------------------------------------------------------------------
/example/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/example/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "./node_modules/kyt/config/.eslintrc.base.json"
4 | ],
5 |
6 | "env": {
7 | },
8 |
9 | "plugins": [
10 | ],
11 |
12 | "rules": {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 |
6 | # Runtime data
7 | pids
8 | *.pid
9 | *.seed
10 |
11 | # Directory for instrumented libs generated by jscoverage/JSCover
12 | lib-cov
13 |
14 | # Coverage directory used by tools like istanbul
15 | coverage
16 |
17 | # node-waf configuration
18 | .lock-wscript
19 |
20 | # Dependency directory
21 | node_modules
22 |
23 | # build directory
24 | build
25 |
26 | # Optional npm cache directory
27 | .npm
28 |
29 | # Optional REPL history
30 | .node_repl_history
31 |
32 | # OS-specific temporary files
33 | Thumbs.db
34 | .DS_Store
35 |
--------------------------------------------------------------------------------
/example/.stylelintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./node_modules/kyt/config/.stylelintrc.base.json",
3 | "rules": {
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | # React CSJS Example
2 |
3 | This is a fully working React app (using [kyt](https://github.com/NYTimes/kyt)) that shows some example `react-csjs` usage.
4 |
5 | You can use this as a reference or as a place to test out changes to `react-csjs` for local development before submitting a PR. The `react-csjs` module referenced in this example repo is aliased to `../src`, so any changes made there will be reflected.
6 |
7 | ## Example usage
8 |
9 | The various [components](./src/components) in this app show example usage patterns in react-csjs. The patterns shown in [`
`](./src/components/Code/index.js) and [``](./src/components/Header/index.js) components are recommended.
10 |
11 | ## Installation
12 |
13 | From within the `/example` directory:
14 |
15 | ```
16 | npm i
17 | ```
18 |
19 | Or, if using [Yarn](https://github.com/yarnpkg/yarn):
20 |
21 | ```
22 | yarn
23 | ```
24 |
25 | ## Running
26 |
27 | ```
28 | npm run dev
29 | ```
30 |
31 | Then the app will be running on http://localhost:3000
32 |
--------------------------------------------------------------------------------
/example/kyt.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 |
3 | module.exports = {
4 | reactHotLoader: true,
5 | modifyWebpackConfig: (kytConfig, options) => {
6 | kytConfig.resolve.alias = {
7 | 'react-csjs': path.resolve('../src')
8 | }
9 |
10 | const babelLoader = kytConfig.module.loaders.find(loader => loader.loader === 'babel-loader');
11 | babelLoader.query.presets = ["es2015", "react", "stage-0"];
12 | babelLoader.query.plugins.push(require.resolve('babel-plugin-transform-decorators-legacy'));
13 |
14 | return kytConfig;
15 | }
16 | };
17 |
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-csjs-example",
3 | "version": "1.0.0",
4 | "description": "Example app showing simple react-csjs use",
5 | "scripts": {
6 | "dev": "kyt dev",
7 | "test": "kyt test"
8 | },
9 | "author": "Jeremy Gayed (http://github.com/tizmagik)",
10 | "license": "MIT",
11 | "dependencies": {
12 | "csjs": "^1.0.6",
13 | "express": "^4.14.0",
14 | "kyt": "^0.2.2",
15 | "react": "^15.3.0",
16 | "react-dom": "^15.3.0",
17 | "react-hot-loader": "3.0.0-beta.5"
18 | },
19 | "devDependencies": {
20 | "babel-preset-es2015": "^6.9.0",
21 | "babel-preset-react": "^6.11.1",
22 | "babel-preset-stage-0": "^6.5.0",
23 | "babel-plugin-transform-decorators-legacy": "^1.3.4",
24 | "enzyme": "^2.4.1",
25 | "react-addons-test-utils": "^15.3.0"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/example/src/client/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { render } from 'react-dom';
3 | import { AppContainer } from 'react-hot-loader';
4 | import App from './../components/App';
5 | import { removeStyle } from 'react-csjs';
6 |
7 | const root = document.getElementById('root');
8 | const ssrStyles = document.getElementById('ssr-styles');
9 |
10 | const mount = RootComponent => render(
11 |
12 |
13 | ,
14 | root
15 | );
16 |
17 | if (module.hot) {
18 | module.hot.accept('./../components/App', () => {
19 | const RootComponent = require('./../components/App').default; // eslint-disable-line
20 | mount(RootComponent);
21 | });
22 | }
23 |
24 | mount(App);
25 | // We can safely remove SSR styles once we've rendered on the client
26 | // since from here on, styles will be auto-mounted/unmounted
27 | removeStyle(ssrStyles);
28 |
--------------------------------------------------------------------------------
/example/src/components/App/App.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { shallow } from 'enzyme';
3 | import App from './index';
4 | import HelloWorld from '../HelloWorld';
5 |
6 | it('Tests that the App renders.', () => {
7 | const wrapper = shallow( );
8 | expect(wrapper.contains( )).toBeTruthy();
9 | });
10 |
--------------------------------------------------------------------------------
/example/src/components/App/index.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 |
4 | This is just a top-level thin wrapper.
5 |
6 | All react-csjs usage starts in ` `
7 | */
8 |
9 | import React from 'react';
10 | import HelloWorld from '../HelloWorld';
11 |
12 | const App = () => (
13 |
14 |
15 |
16 | );
17 |
18 | export default App;
19 |
--------------------------------------------------------------------------------
/example/src/components/Button/index.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 |
4 | This file shows the pattern of calling csjs
5 | first with the styles, then using the `styles`
6 | object in the @decorator around a React class.
7 |
8 | In this particular case we use the `classes` prop
9 | provided by react-csjs but we could just as easily
10 | have used the `styles` object which is still in scope.
11 | */
12 |
13 | import React, {Component} from 'react';
14 | import csjs from 'csjs';
15 | import withStyles from 'react-csjs';
16 |
17 | const styles = csjs`
18 | .button {
19 | background-color: rgba(135, 206, 235, 0.8);
20 | border: 0;
21 | padding: 0.7em 1.5em;
22 | margin: 5px;
23 | font-size: 1.1em;
24 | border-radius: 10px;
25 | color: #fefefe;
26 | cursor: pointer;
27 | }
28 |
29 | .button:hover {
30 | background-color: rgba(135, 206, 235, 0.9);
31 | }
32 | `;
33 |
34 | @withStyles(styles)
35 | export default class Button extends Component {
36 | state = {
37 | clicks: 0
38 | };
39 |
40 | handleClick = () => {
41 | this.setState(prevState => ({
42 | clicks: prevState.clicks + 1
43 | }));
44 | }
45 |
46 | render() {
47 | /* could also use `styles` object which is still in scope */
48 | return (
49 |
53 | Clicked {this.state.clicks} time{this.state.clicks===1?'':'s'}
54 |
55 | );
56 | }
57 | };
58 |
--------------------------------------------------------------------------------
/example/src/components/Code/index.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 |
4 | This file shows the pattern of using the tagged template
5 | wrapper around the default export of a stateless functional
6 | component.
7 | */
8 |
9 | import React, {Component} from 'react';
10 | import csjs from 'react-csjs';
11 |
12 | const Code =
13 | ({ classes, children }) => {children}
;
14 |
15 | export default csjs`
16 | .code {
17 | display: inline-block;
18 | color: crimson;
19 | }
20 | `(Code);
21 |
--------------------------------------------------------------------------------
/example/src/components/Header/index.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 |
4 | This file shows using the tagged template @decorator pattern.
5 | */
6 |
7 | import React, { Component } from 'react';
8 | import csjs from 'react-csjs';
9 |
10 | const crimson = 'crimson';
11 | const lineHeight = '1.8em';
12 |
13 | @csjs`
14 | .header {
15 | color: ${crimson};
16 | line-height: ${lineHeight};
17 | }
18 | `
19 | export default class Header extends Component {
20 | render() {
21 | /*
22 | no `styles` object in scope,
23 | so we use `classes` prop provided by react-csjs
24 | */
25 | return {this.props.children} ;
26 | }
27 | };
28 |
--------------------------------------------------------------------------------
/example/src/components/HelloWorld/HelloWorld.style.js:
--------------------------------------------------------------------------------
1 | import csjs from 'csjs';
2 |
3 | export default csjs`
4 | body {
5 | font-family: Helvetica, Arial, sans-serif;
6 | }
7 |
8 | p {
9 | padding: 10px 0;
10 | }
11 |
12 | .hello {
13 | background: whitesmoke;
14 | padding: 20px;
15 | }
16 |
17 | hr {
18 | margin-top: 50px;
19 | border: 1px dotted silver;
20 | }
21 |
22 | .footer {
23 | margin: 20px;
24 | color: #777;
25 | font-size: small;
26 | }
27 | `
28 |
--------------------------------------------------------------------------------
/example/src/components/HelloWorld/index.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 |
4 | This component shows the pattern of moving
5 | styles to an adjacent file, HelloWorld.style.js
6 | and then wrapping the default export with withStyles()
7 |
8 | See the other components imported here for more sample usage.
9 | */
10 |
11 | import React from 'react';
12 | import csjs from 'csjs';
13 | import withStyles from 'react-csjs';
14 | import Header from '../Header';
15 | import Button from '../Button';
16 | import Code from '../Code';
17 | import styles from './HelloWorld.style.js';
18 |
19 | const HelloWorld = ({ classes }) => (
20 |
21 |
22 |
Hello World from react-csjs
23 |
24 | View the source for this in the /example
directory.
25 |
26 |
27 | Here is a styled button:
28 |
29 |
30 |
31 |
32 |
33 | View this project on Github
34 |
35 |
36 |
37 | );
38 |
39 | export default withStyles(styles)(HelloWorld);
40 |
--------------------------------------------------------------------------------
/example/src/server/index.js:
--------------------------------------------------------------------------------
1 | import path from 'path';
2 | import express from 'express';
3 | import React from 'react';
4 | import ReactDOM from 'react-dom/server';
5 | import App from '../components/App';
6 | import { getStyle } from 'react-csjs';
7 |
8 | const server = express();
9 | const clientAssets = require(KYT.ASSETS_MANIFEST);
10 | server.use(express.static(path.join(process.cwd(), KYT.PUBLIC_DIR)));
11 |
12 | // Render the app
13 | const renderedApp = ReactDOM.renderToString( );
14 | // Gather the generated CSS
15 | const renderedStyles = getStyle();
16 |
17 | server.get('/', (req, res) => {
18 | res.send(`
19 |
20 |
21 |
22 | react-csjs example app
23 |
24 |
25 | ${renderedApp}
26 |
27 |
28 |
29 | `);
30 | });
31 |
32 | server.listen(parseInt(KYT.SERVER_PORT, 10));
33 |
--------------------------------------------------------------------------------
/example/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 | abab@^1.0.0:
4 | version "1.0.3"
5 | resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
6 |
7 | accepts@~1.3.3:
8 | version "1.3.3"
9 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
10 | dependencies:
11 | mime-types "~2.1.11"
12 | negotiator "0.6.1"
13 |
14 | acorn-globals@^1.0.4:
15 | version "1.0.9"
16 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf"
17 | dependencies:
18 | acorn "^2.1.0"
19 |
20 | acorn@^2.1.0, acorn@^2.4.0:
21 | version "2.7.0"
22 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
23 |
24 | amdefine@>=0.0.4:
25 | version "1.0.0"
26 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.0.tgz#fd17474700cb5cc9c2b709f0be9d23ce3c198c33"
27 |
28 | ansi-regex@^2.0.0:
29 | version "2.0.0"
30 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
31 |
32 | ansi-styles@^2.2.1:
33 | version "2.2.1"
34 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
35 |
36 | array-flatten@1.1.1:
37 | version "1.1.1"
38 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
39 |
40 | asap@~2.0.3:
41 | version "2.0.5"
42 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f"
43 |
44 | asn1@~0.2.3:
45 | version "0.2.3"
46 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
47 |
48 | assert-plus@^0.2.0:
49 | version "0.2.0"
50 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
51 |
52 | assert-plus@^1.0.0:
53 | version "1.0.0"
54 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
55 |
56 | asynckit@^0.4.0:
57 | version "0.4.0"
58 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
59 |
60 | aws-sign2@~0.6.0:
61 | version "0.6.0"
62 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
63 |
64 | aws4@^1.2.1:
65 | version "1.4.1"
66 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.4.1.tgz#fde7d5292466d230e5ee0f4e038d9dfaab08fc61"
67 |
68 | babel-code-frame@^6.16.0:
69 | version "6.16.0"
70 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de"
71 | dependencies:
72 | chalk "^1.1.0"
73 | esutils "^2.0.2"
74 | js-tokens "^2.0.0"
75 |
76 | babel-helper-bindify-decorators@^6.8.0:
77 | version "6.8.0"
78 | resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.8.0.tgz#b34805a30b1433cc0042f7054f88a7133c144909"
79 | dependencies:
80 | babel-runtime "^6.0.0"
81 | babel-traverse "^6.8.0"
82 | babel-types "^6.8.0"
83 |
84 | babel-helper-builder-binary-assignment-operator-visitor@^6.8.0:
85 | version "6.15.0"
86 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.15.0.tgz#39e9ee143f797b642262e4646c681c32089ef1ab"
87 | dependencies:
88 | babel-helper-explode-assignable-expression "^6.8.0"
89 | babel-runtime "^6.0.0"
90 | babel-types "^6.15.0"
91 |
92 | babel-helper-builder-react-jsx@^6.8.0:
93 | version "6.9.0"
94 | resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.9.0.tgz#a633978d669c4c9dcad716cc577ee3e0bb8ae723"
95 | dependencies:
96 | babel-runtime "^6.9.0"
97 | babel-types "^6.9.0"
98 | esutils "^2.0.0"
99 | lodash "^4.2.0"
100 |
101 | babel-helper-call-delegate@^6.8.0:
102 | version "6.8.0"
103 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.8.0.tgz#9d283e7486779b6b0481864a11b371ea5c01fa64"
104 | dependencies:
105 | babel-helper-hoist-variables "^6.8.0"
106 | babel-runtime "^6.0.0"
107 | babel-traverse "^6.8.0"
108 | babel-types "^6.8.0"
109 |
110 | babel-helper-define-map@^6.8.0, babel-helper-define-map@^6.9.0:
111 | version "6.9.0"
112 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.9.0.tgz#6629f9b2a7e58e18e8379a57d1e6fbb2969902fb"
113 | dependencies:
114 | babel-helper-function-name "^6.8.0"
115 | babel-runtime "^6.9.0"
116 | babel-types "^6.9.0"
117 | lodash "^4.2.0"
118 |
119 | babel-helper-explode-assignable-expression@^6.8.0:
120 | version "6.8.0"
121 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.8.0.tgz#9b3525e05b761c3b88919d730a28bad1967e6556"
122 | dependencies:
123 | babel-runtime "^6.0.0"
124 | babel-traverse "^6.8.0"
125 | babel-types "^6.8.0"
126 |
127 | babel-helper-explode-class@^6.8.0:
128 | version "6.8.0"
129 | resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.8.0.tgz#196a228cc69ea57308695e4ebd1a36cf3f8eca3d"
130 | dependencies:
131 | babel-helper-bindify-decorators "^6.8.0"
132 | babel-runtime "^6.0.0"
133 | babel-traverse "^6.8.0"
134 | babel-types "^6.8.0"
135 |
136 | babel-helper-function-name@^6.8.0:
137 | version "6.8.0"
138 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.8.0.tgz#a0336ba14526a075cdf502fc52d3fe84b12f7a34"
139 | dependencies:
140 | babel-helper-get-function-arity "^6.8.0"
141 | babel-runtime "^6.0.0"
142 | babel-template "^6.8.0"
143 | babel-traverse "^6.8.0"
144 | babel-types "^6.8.0"
145 |
146 | babel-helper-get-function-arity@^6.8.0:
147 | version "6.8.0"
148 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.8.0.tgz#88276c24bd251cdf6f61b6f89f745f486ced92af"
149 | dependencies:
150 | babel-runtime "^6.0.0"
151 | babel-types "^6.8.0"
152 |
153 | babel-helper-hoist-variables@^6.8.0:
154 | version "6.8.0"
155 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.8.0.tgz#8b0766dc026ea9ea423bc2b34e665a4da7373aaf"
156 | dependencies:
157 | babel-runtime "^6.0.0"
158 | babel-types "^6.8.0"
159 |
160 | babel-helper-optimise-call-expression@^6.8.0:
161 | version "6.8.0"
162 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.8.0.tgz#4175628e9c89fc36174904f27070f29d38567f06"
163 | dependencies:
164 | babel-runtime "^6.0.0"
165 | babel-types "^6.8.0"
166 |
167 | babel-helper-regex@^6.8.0:
168 | version "6.9.0"
169 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.9.0.tgz#c74265fde180ff9a16735fee05e63cadb9e0b057"
170 | dependencies:
171 | babel-runtime "^6.9.0"
172 | babel-types "^6.9.0"
173 | lodash "^4.2.0"
174 |
175 | babel-helper-remap-async-to-generator@^6.16.0, babel-helper-remap-async-to-generator@^6.16.2:
176 | version "6.16.2"
177 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.16.2.tgz#24315bde8326c60022dc053cce84cfe38d724b82"
178 | dependencies:
179 | babel-helper-function-name "^6.8.0"
180 | babel-runtime "^6.0.0"
181 | babel-template "^6.16.0"
182 | babel-traverse "^6.16.0"
183 | babel-types "^6.16.0"
184 |
185 | babel-helper-replace-supers@^6.14.0, babel-helper-replace-supers@^6.8.0:
186 | version "6.16.0"
187 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.16.0.tgz#21c97623cc7e430855753f252740122626a39e6b"
188 | dependencies:
189 | babel-helper-optimise-call-expression "^6.8.0"
190 | babel-messages "^6.8.0"
191 | babel-runtime "^6.0.0"
192 | babel-template "^6.16.0"
193 | babel-traverse "^6.16.0"
194 | babel-types "^6.16.0"
195 |
196 | babel-messages@^6.8.0:
197 | version "6.8.0"
198 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9"
199 | dependencies:
200 | babel-runtime "^6.0.0"
201 |
202 | babel-plugin-check-es2015-constants@^6.3.13:
203 | version "6.8.0"
204 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.8.0.tgz#dbf024c32ed37bfda8dee1e76da02386a8d26fe7"
205 | dependencies:
206 | babel-runtime "^6.0.0"
207 |
208 | babel-plugin-syntax-async-functions@^6.8.0:
209 | version "6.13.0"
210 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
211 |
212 | babel-plugin-syntax-async-generators@^6.5.0:
213 | version "6.13.0"
214 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a"
215 |
216 | babel-plugin-syntax-class-constructor-call@^6.8.0:
217 | version "6.13.0"
218 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.13.0.tgz#96fb2e9f177dca22824065de4392f2fe3486b765"
219 |
220 | babel-plugin-syntax-class-properties@^6.8.0:
221 | version "6.13.0"
222 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
223 |
224 | babel-plugin-syntax-decorators@^6.1.18, babel-plugin-syntax-decorators@^6.13.0:
225 | version "6.13.0"
226 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b"
227 |
228 | babel-plugin-syntax-do-expressions@^6.8.0:
229 | version "6.13.0"
230 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d"
231 |
232 | babel-plugin-syntax-exponentiation-operator@^6.8.0:
233 | version "6.13.0"
234 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
235 |
236 | babel-plugin-syntax-export-extensions@^6.8.0:
237 | version "6.13.0"
238 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
239 |
240 | babel-plugin-syntax-flow@^6.3.13, babel-plugin-syntax-flow@^6.8.0:
241 | version "6.13.0"
242 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.13.0.tgz#9af0cd396087bf7677053e1afa52f206c0416f17"
243 |
244 | babel-plugin-syntax-function-bind@^6.8.0:
245 | version "6.13.0"
246 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46"
247 |
248 | babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
249 | version "6.13.0"
250 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.13.0.tgz#e741ff3992c578310be45c571bcd90a2f9c5586e"
251 |
252 | babel-plugin-syntax-object-rest-spread@^6.8.0:
253 | version "6.13.0"
254 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
255 |
256 | babel-plugin-syntax-trailing-function-commas@^6.3.13:
257 | version "6.13.0"
258 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.13.0.tgz#2b84b7d53dd744f94ff1fad7669406274b23f541"
259 |
260 | babel-plugin-transform-async-generator-functions@^6.17.0:
261 | version "6.17.0"
262 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.17.0.tgz#d0b5a2b2f0940f2b245fa20a00519ed7bc6cae54"
263 | dependencies:
264 | babel-helper-remap-async-to-generator "^6.16.2"
265 | babel-plugin-syntax-async-generators "^6.5.0"
266 | babel-runtime "^6.0.0"
267 |
268 | babel-plugin-transform-async-to-generator@^6.16.0:
269 | version "6.16.0"
270 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz#19ec36cb1486b59f9f468adfa42ce13908ca2999"
271 | dependencies:
272 | babel-helper-remap-async-to-generator "^6.16.0"
273 | babel-plugin-syntax-async-functions "^6.8.0"
274 | babel-runtime "^6.0.0"
275 |
276 | babel-plugin-transform-class-constructor-call@^6.3.13:
277 | version "6.8.0"
278 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.8.0.tgz#6e740bc80f16d295fa598d92518666020a906192"
279 | dependencies:
280 | babel-plugin-syntax-class-constructor-call "^6.8.0"
281 | babel-runtime "^6.0.0"
282 | babel-template "^6.8.0"
283 |
284 | babel-plugin-transform-class-properties@^6.16.0:
285 | version "6.16.0"
286 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.16.0.tgz#969bca24d34e401d214f36b8af5c1346859bc904"
287 | dependencies:
288 | babel-helper-function-name "^6.8.0"
289 | babel-plugin-syntax-class-properties "^6.8.0"
290 | babel-runtime "^6.9.1"
291 |
292 | babel-plugin-transform-decorators-legacy:
293 | version "1.3.4"
294 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925"
295 | dependencies:
296 | babel-plugin-syntax-decorators "^6.1.18"
297 | babel-runtime "^6.2.0"
298 | babel-template "^6.3.0"
299 |
300 | babel-plugin-transform-decorators@^6.13.0:
301 | version "6.13.0"
302 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.13.0.tgz#82d65c1470ae83e2d13eebecb0a1c2476d62da9d"
303 | dependencies:
304 | babel-helper-define-map "^6.8.0"
305 | babel-helper-explode-class "^6.8.0"
306 | babel-plugin-syntax-decorators "^6.13.0"
307 | babel-runtime "^6.0.0"
308 | babel-template "^6.8.0"
309 | babel-types "^6.13.0"
310 |
311 | babel-plugin-transform-do-expressions@^6.3.13:
312 | version "6.8.0"
313 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.8.0.tgz#fda692af339835cc255bb7544efb8f7c1306c273"
314 | dependencies:
315 | babel-plugin-syntax-do-expressions "^6.8.0"
316 | babel-runtime "^6.0.0"
317 |
318 | babel-plugin-transform-es2015-arrow-functions@^6.3.13:
319 | version "6.8.0"
320 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.8.0.tgz#5b63afc3181bdc9a8c4d481b5a4f3f7d7fef3d9d"
321 | dependencies:
322 | babel-runtime "^6.0.0"
323 |
324 | babel-plugin-transform-es2015-block-scoped-functions@^6.3.13:
325 | version "6.8.0"
326 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.8.0.tgz#ed95d629c4b5a71ae29682b998f70d9833eb366d"
327 | dependencies:
328 | babel-runtime "^6.0.0"
329 |
330 | babel-plugin-transform-es2015-block-scoping@^6.14.0:
331 | version "6.15.0"
332 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.15.0.tgz#5b443ca142be8d1db6a8c2ae42f51958b66b70f6"
333 | dependencies:
334 | babel-runtime "^6.9.0"
335 | babel-template "^6.15.0"
336 | babel-traverse "^6.15.0"
337 | babel-types "^6.15.0"
338 | lodash "^4.2.0"
339 |
340 | babel-plugin-transform-es2015-classes@^6.14.0:
341 | version "6.14.0"
342 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.14.0.tgz#87d5149ee91fb475922409f9af5b2ba5d1e39287"
343 | dependencies:
344 | babel-helper-define-map "^6.9.0"
345 | babel-helper-function-name "^6.8.0"
346 | babel-helper-optimise-call-expression "^6.8.0"
347 | babel-helper-replace-supers "^6.14.0"
348 | babel-messages "^6.8.0"
349 | babel-runtime "^6.9.0"
350 | babel-template "^6.14.0"
351 | babel-traverse "^6.14.0"
352 | babel-types "^6.14.0"
353 |
354 | babel-plugin-transform-es2015-computed-properties@^6.3.13:
355 | version "6.8.0"
356 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.8.0.tgz#f51010fd61b3bd7b6b60a5fdfd307bb7a5279870"
357 | dependencies:
358 | babel-helper-define-map "^6.8.0"
359 | babel-runtime "^6.0.0"
360 | babel-template "^6.8.0"
361 |
362 | babel-plugin-transform-es2015-destructuring@^6.16.0:
363 | version "6.16.0"
364 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.16.0.tgz#050fe0866f5d53b36062ee10cdf5bfe64f929627"
365 | dependencies:
366 | babel-runtime "^6.9.0"
367 |
368 | babel-plugin-transform-es2015-duplicate-keys@^6.6.0:
369 | version "6.8.0"
370 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.8.0.tgz#fd8f7f7171fc108cc1c70c3164b9f15a81c25f7d"
371 | dependencies:
372 | babel-runtime "^6.0.0"
373 | babel-types "^6.8.0"
374 |
375 | babel-plugin-transform-es2015-for-of@^6.6.0:
376 | version "6.8.0"
377 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.8.0.tgz#82eda139ba4270dda135c3ec1b1f2813fa62f23c"
378 | dependencies:
379 | babel-runtime "^6.0.0"
380 |
381 | babel-plugin-transform-es2015-function-name@^6.9.0:
382 | version "6.9.0"
383 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.9.0.tgz#8c135b17dbd064e5bba56ec511baaee2fca82719"
384 | dependencies:
385 | babel-helper-function-name "^6.8.0"
386 | babel-runtime "^6.9.0"
387 | babel-types "^6.9.0"
388 |
389 | babel-plugin-transform-es2015-literals@^6.3.13:
390 | version "6.8.0"
391 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.8.0.tgz#50aa2e5c7958fc2ab25d74ec117e0cc98f046468"
392 | dependencies:
393 | babel-runtime "^6.0.0"
394 |
395 | babel-plugin-transform-es2015-modules-amd@^6.8.0:
396 | version "6.8.0"
397 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.8.0.tgz#25d954aa0bf04031fc46d2a8e6230bb1abbde4a3"
398 | dependencies:
399 | babel-plugin-transform-es2015-modules-commonjs "^6.8.0"
400 | babel-runtime "^6.0.0"
401 | babel-template "^6.8.0"
402 |
403 | babel-plugin-transform-es2015-modules-commonjs@^6.16.0, babel-plugin-transform-es2015-modules-commonjs@^6.8.0:
404 | version "6.16.0"
405 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.16.0.tgz#0a34b447bc88ad1a70988b6d199cca6d0b96c892"
406 | dependencies:
407 | babel-plugin-transform-strict-mode "^6.8.0"
408 | babel-runtime "^6.0.0"
409 | babel-template "^6.16.0"
410 | babel-types "^6.16.0"
411 |
412 | babel-plugin-transform-es2015-modules-systemjs@^6.14.0:
413 | version "6.14.0"
414 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.14.0.tgz#c519b5c73e32388e679c9b1edf41b2fc23dc3303"
415 | dependencies:
416 | babel-helper-hoist-variables "^6.8.0"
417 | babel-runtime "^6.11.6"
418 | babel-template "^6.14.0"
419 |
420 | babel-plugin-transform-es2015-modules-umd@^6.12.0:
421 | version "6.12.0"
422 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.12.0.tgz#5d73559eb49266775ed281c40be88a421bd371a3"
423 | dependencies:
424 | babel-plugin-transform-es2015-modules-amd "^6.8.0"
425 | babel-runtime "^6.0.0"
426 | babel-template "^6.8.0"
427 |
428 | babel-plugin-transform-es2015-object-super@^6.3.13:
429 | version "6.8.0"
430 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.8.0.tgz#1b858740a5a4400887c23dcff6f4d56eea4a24c5"
431 | dependencies:
432 | babel-helper-replace-supers "^6.8.0"
433 | babel-runtime "^6.0.0"
434 |
435 | babel-plugin-transform-es2015-parameters@^6.16.0:
436 | version "6.17.0"
437 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.17.0.tgz#e06d30cef897f46adb4734707bbe128a0d427d58"
438 | dependencies:
439 | babel-helper-call-delegate "^6.8.0"
440 | babel-helper-get-function-arity "^6.8.0"
441 | babel-runtime "^6.9.0"
442 | babel-template "^6.16.0"
443 | babel-traverse "^6.16.0"
444 | babel-types "^6.16.0"
445 |
446 | babel-plugin-transform-es2015-shorthand-properties@^6.3.13:
447 | version "6.8.0"
448 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.8.0.tgz#f0a4c5fd471630acf333c2d99c3d677bf0952149"
449 | dependencies:
450 | babel-runtime "^6.0.0"
451 | babel-types "^6.8.0"
452 |
453 | babel-plugin-transform-es2015-spread@^6.3.13:
454 | version "6.8.0"
455 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.8.0.tgz#0217f737e3b821fa5a669f187c6ed59205f05e9c"
456 | dependencies:
457 | babel-runtime "^6.0.0"
458 |
459 | babel-plugin-transform-es2015-sticky-regex@^6.3.13:
460 | version "6.8.0"
461 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.8.0.tgz#e73d300a440a35d5c64f5c2a344dc236e3df47be"
462 | dependencies:
463 | babel-helper-regex "^6.8.0"
464 | babel-runtime "^6.0.0"
465 | babel-types "^6.8.0"
466 |
467 | babel-plugin-transform-es2015-template-literals@^6.6.0:
468 | version "6.8.0"
469 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.8.0.tgz#86eb876d0a2c635da4ec048b4f7de9dfc897e66b"
470 | dependencies:
471 | babel-runtime "^6.0.0"
472 |
473 | babel-plugin-transform-es2015-typeof-symbol@^6.6.0:
474 | version "6.8.0"
475 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.8.0.tgz#84c29eb1219372480955a020fef7a65c44f30533"
476 | dependencies:
477 | babel-runtime "^6.0.0"
478 |
479 | babel-plugin-transform-es2015-unicode-regex@^6.3.13:
480 | version "6.11.0"
481 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.11.0.tgz#6298ceabaad88d50a3f4f392d8de997260f6ef2c"
482 | dependencies:
483 | babel-helper-regex "^6.8.0"
484 | babel-runtime "^6.0.0"
485 | regexpu-core "^2.0.0"
486 |
487 | babel-plugin-transform-exponentiation-operator@^6.3.13:
488 | version "6.8.0"
489 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.8.0.tgz#db25742e9339eade676ca9acec46f955599a68a4"
490 | dependencies:
491 | babel-helper-builder-binary-assignment-operator-visitor "^6.8.0"
492 | babel-plugin-syntax-exponentiation-operator "^6.8.0"
493 | babel-runtime "^6.0.0"
494 |
495 | babel-plugin-transform-export-extensions@^6.3.13:
496 | version "6.8.0"
497 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.8.0.tgz#fa80ff655b636549431bfd38f6b817bd82e47f5b"
498 | dependencies:
499 | babel-plugin-syntax-export-extensions "^6.8.0"
500 | babel-runtime "^6.0.0"
501 |
502 | babel-plugin-transform-flow-strip-types@^6.3.13:
503 | version "6.14.0"
504 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.14.0.tgz#35ceb03f8770934044bab1a76f7e4ee0aa9220f9"
505 | dependencies:
506 | babel-plugin-syntax-flow "^6.8.0"
507 | babel-runtime "^6.0.0"
508 |
509 | babel-plugin-transform-function-bind@^6.3.13:
510 | version "6.8.0"
511 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.8.0.tgz#e7f334ce69f50d28fe850a822eaaab9fa4f4d821"
512 | dependencies:
513 | babel-plugin-syntax-function-bind "^6.8.0"
514 | babel-runtime "^6.0.0"
515 |
516 | babel-plugin-transform-object-rest-spread@^6.16.0:
517 | version "6.16.0"
518 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.16.0.tgz#db441d56fffc1999052fdebe2e2f25ebd28e36a9"
519 | dependencies:
520 | babel-plugin-syntax-object-rest-spread "^6.8.0"
521 | babel-runtime "^6.0.0"
522 |
523 | babel-plugin-transform-react-display-name@^6.3.13:
524 | version "6.8.0"
525 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.8.0.tgz#f7a084977383d728bdbdc2835bba0159577f660e"
526 | dependencies:
527 | babel-runtime "^6.0.0"
528 |
529 | babel-plugin-transform-react-jsx-self@^6.11.0:
530 | version "6.11.0"
531 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.11.0.tgz#605c9450c1429f97a930f7e1dfe3f0d9d0dbd0f4"
532 | dependencies:
533 | babel-plugin-syntax-jsx "^6.8.0"
534 | babel-runtime "^6.9.0"
535 |
536 | babel-plugin-transform-react-jsx-source@^6.3.13:
537 | version "6.9.0"
538 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.9.0.tgz#af684a05c2067a86e0957d4f343295ccf5dccf00"
539 | dependencies:
540 | babel-plugin-syntax-jsx "^6.8.0"
541 | babel-runtime "^6.9.0"
542 |
543 | babel-plugin-transform-react-jsx@^6.3.13:
544 | version "6.8.0"
545 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.8.0.tgz#94759942f70af18c617189aa7f3593f1644a71ab"
546 | dependencies:
547 | babel-helper-builder-react-jsx "^6.8.0"
548 | babel-plugin-syntax-jsx "^6.8.0"
549 | babel-runtime "^6.0.0"
550 |
551 | babel-plugin-transform-regenerator@^6.16.0:
552 | version "6.16.1"
553 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.16.1.tgz#a75de6b048a14154aae14b0122756c5bed392f59"
554 | dependencies:
555 | babel-runtime "^6.9.0"
556 | babel-types "^6.16.0"
557 | private "~0.1.5"
558 |
559 | babel-plugin-transform-strict-mode@^6.8.0:
560 | version "6.11.3"
561 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.11.3.tgz#183741325126bc7ec9cf4c0fc257d3e7ca5afd40"
562 | dependencies:
563 | babel-runtime "^6.0.0"
564 | babel-types "^6.8.0"
565 |
566 | babel-preset-es2015@^6.9.0:
567 | version "6.16.0"
568 | resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.16.0.tgz#59acecd1efbebaf48f89404840f2fe78c4d2ad5c"
569 | dependencies:
570 | babel-plugin-check-es2015-constants "^6.3.13"
571 | babel-plugin-transform-es2015-arrow-functions "^6.3.13"
572 | babel-plugin-transform-es2015-block-scoped-functions "^6.3.13"
573 | babel-plugin-transform-es2015-block-scoping "^6.14.0"
574 | babel-plugin-transform-es2015-classes "^6.14.0"
575 | babel-plugin-transform-es2015-computed-properties "^6.3.13"
576 | babel-plugin-transform-es2015-destructuring "^6.16.0"
577 | babel-plugin-transform-es2015-duplicate-keys "^6.6.0"
578 | babel-plugin-transform-es2015-for-of "^6.6.0"
579 | babel-plugin-transform-es2015-function-name "^6.9.0"
580 | babel-plugin-transform-es2015-literals "^6.3.13"
581 | babel-plugin-transform-es2015-modules-amd "^6.8.0"
582 | babel-plugin-transform-es2015-modules-commonjs "^6.16.0"
583 | babel-plugin-transform-es2015-modules-systemjs "^6.14.0"
584 | babel-plugin-transform-es2015-modules-umd "^6.12.0"
585 | babel-plugin-transform-es2015-object-super "^6.3.13"
586 | babel-plugin-transform-es2015-parameters "^6.16.0"
587 | babel-plugin-transform-es2015-shorthand-properties "^6.3.13"
588 | babel-plugin-transform-es2015-spread "^6.3.13"
589 | babel-plugin-transform-es2015-sticky-regex "^6.3.13"
590 | babel-plugin-transform-es2015-template-literals "^6.6.0"
591 | babel-plugin-transform-es2015-typeof-symbol "^6.6.0"
592 | babel-plugin-transform-es2015-unicode-regex "^6.3.13"
593 | babel-plugin-transform-regenerator "^6.16.0"
594 |
595 | babel-preset-react@^6.11.1:
596 | version "6.16.0"
597 | resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.16.0.tgz#aa117d60de0928607e343c4828906e4661824316"
598 | dependencies:
599 | babel-plugin-syntax-flow "^6.3.13"
600 | babel-plugin-syntax-jsx "^6.3.13"
601 | babel-plugin-transform-flow-strip-types "^6.3.13"
602 | babel-plugin-transform-react-display-name "^6.3.13"
603 | babel-plugin-transform-react-jsx "^6.3.13"
604 | babel-plugin-transform-react-jsx-self "^6.11.0"
605 | babel-plugin-transform-react-jsx-source "^6.3.13"
606 |
607 | babel-preset-stage-0@^6.5.0:
608 | version "6.16.0"
609 | resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.16.0.tgz#f5a263c420532fd57491f1a7315b3036e428f823"
610 | dependencies:
611 | babel-plugin-transform-do-expressions "^6.3.13"
612 | babel-plugin-transform-function-bind "^6.3.13"
613 | babel-preset-stage-1 "^6.16.0"
614 |
615 | babel-preset-stage-1@^6.16.0:
616 | version "6.16.0"
617 | resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.16.0.tgz#9d31fbbdae7b17c549fd3ac93e3cf6902695e479"
618 | dependencies:
619 | babel-plugin-transform-class-constructor-call "^6.3.13"
620 | babel-plugin-transform-export-extensions "^6.3.13"
621 | babel-preset-stage-2 "^6.16.0"
622 |
623 | babel-preset-stage-2@^6.16.0:
624 | version "6.17.0"
625 | resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.17.0.tgz#dc4f84582781353cef36c41247eae5e36c4cae0d"
626 | dependencies:
627 | babel-plugin-transform-class-properties "^6.16.0"
628 | babel-plugin-transform-decorators "^6.13.0"
629 | babel-preset-stage-3 "^6.17.0"
630 |
631 | babel-preset-stage-3@^6.17.0:
632 | version "6.17.0"
633 | resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.17.0.tgz#b6638e46db6e91e3f889013d8ce143917c685e39"
634 | dependencies:
635 | babel-plugin-syntax-trailing-function-commas "^6.3.13"
636 | babel-plugin-transform-async-generator-functions "^6.17.0"
637 | babel-plugin-transform-async-to-generator "^6.16.0"
638 | babel-plugin-transform-exponentiation-operator "^6.3.13"
639 | babel-plugin-transform-object-rest-spread "^6.16.0"
640 |
641 | babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.2.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1:
642 | version "6.11.6"
643 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.11.6.tgz#6db707fef2d49c49bfa3cb64efdb436b518b8222"
644 | dependencies:
645 | core-js "^2.4.0"
646 | regenerator-runtime "^0.9.5"
647 |
648 | babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.3.0, babel-template@^6.8.0:
649 | version "6.16.0"
650 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca"
651 | dependencies:
652 | babel-runtime "^6.9.0"
653 | babel-traverse "^6.16.0"
654 | babel-types "^6.16.0"
655 | babylon "^6.11.0"
656 | lodash "^4.2.0"
657 |
658 | babel-traverse@^6.14.0, babel-traverse@^6.15.0, babel-traverse@^6.16.0, babel-traverse@^6.8.0:
659 | version "6.16.0"
660 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.16.0.tgz#fba85ae1fd4d107de9ce003149cc57f53bef0c4f"
661 | dependencies:
662 | babel-code-frame "^6.16.0"
663 | babel-messages "^6.8.0"
664 | babel-runtime "^6.9.0"
665 | babel-types "^6.16.0"
666 | babylon "^6.11.0"
667 | debug "^2.2.0"
668 | globals "^8.3.0"
669 | invariant "^2.2.0"
670 | lodash "^4.2.0"
671 |
672 | babel-types@^6.13.0, babel-types@^6.14.0, babel-types@^6.15.0, babel-types@^6.16.0, babel-types@^6.8.0, babel-types@^6.9.0:
673 | version "6.16.0"
674 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.16.0.tgz#71cca1dbe5337766225c5c193071e8ebcbcffcfe"
675 | dependencies:
676 | babel-runtime "^6.9.1"
677 | esutils "^2.0.2"
678 | lodash "^4.2.0"
679 | to-fast-properties "^1.0.1"
680 |
681 | babylon@^6.11.0:
682 | version "6.11.4"
683 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.11.4.tgz#75e1f52187efa0cde5a541a7f7fdda38f6eb5bd2"
684 |
685 | bcrypt-pbkdf@^1.0.0:
686 | version "1.0.0"
687 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
688 | dependencies:
689 | tweetnacl "^0.14.3"
690 |
691 | bl@~1.1.2:
692 | version "1.1.2"
693 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
694 | dependencies:
695 | readable-stream "~2.0.5"
696 |
697 | boolbase@~1.0.0:
698 | version "1.0.0"
699 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
700 |
701 | boom@2.x.x:
702 | version "2.10.1"
703 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
704 | dependencies:
705 | hoek "2.x.x"
706 |
707 | caseless@~0.11.0:
708 | version "0.11.0"
709 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
710 |
711 | chalk@^1.1.0, chalk@^1.1.1:
712 | version "1.1.3"
713 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
714 | dependencies:
715 | ansi-styles "^2.2.1"
716 | escape-string-regexp "^1.0.2"
717 | has-ansi "^2.0.0"
718 | strip-ansi "^3.0.0"
719 | supports-color "^2.0.0"
720 |
721 | cheerio@^0.20.0:
722 | version "0.20.0"
723 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35"
724 | dependencies:
725 | css-select "~1.2.0"
726 | dom-serializer "~0.1.0"
727 | entities "~1.1.1"
728 | htmlparser2 "~3.8.1"
729 | lodash "^4.1.0"
730 | optionalDependencies:
731 | jsdom "^7.0.2"
732 |
733 | combined-stream@^1.0.5, combined-stream@~1.0.5:
734 | version "1.0.5"
735 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
736 | dependencies:
737 | delayed-stream "~1.0.0"
738 |
739 | commander@^2.9.0:
740 | version "2.9.0"
741 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
742 | dependencies:
743 | graceful-readlink ">= 1.0.0"
744 |
745 | content-disposition@0.5.1:
746 | version "0.5.1"
747 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b"
748 |
749 | content-type@~1.0.2:
750 | version "1.0.2"
751 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed"
752 |
753 | cookie-signature@1.0.6:
754 | version "1.0.6"
755 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
756 |
757 | cookie@0.3.1:
758 | version "0.3.1"
759 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
760 |
761 | core-js@^1.0.0:
762 | version "1.2.7"
763 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
764 |
765 | core-js@^2.4.0:
766 | version "2.4.1"
767 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
768 |
769 | core-util-is@~1.0.0:
770 | version "1.0.2"
771 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
772 |
773 | cryptiles@2.x.x:
774 | version "2.0.5"
775 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
776 | dependencies:
777 | boom "2.x.x"
778 |
779 | csjs@^1.0.6:
780 | version "1.0.6"
781 | resolved "https://registry.yarnpkg.com/csjs/-/csjs-1.0.6.tgz#43a6a5b87d95a8252f13144eade86e33a8c8564b"
782 |
783 | css-select@~1.2.0:
784 | version "1.2.0"
785 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
786 | dependencies:
787 | boolbase "~1.0.0"
788 | css-what "2.1"
789 | domutils "1.5.1"
790 | nth-check "~1.0.1"
791 |
792 | css-what@2.1:
793 | version "2.1.0"
794 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
795 |
796 | "cssom@>= 0.3.0 < 0.4.0", cssom@0.3.x:
797 | version "0.3.1"
798 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.1.tgz#c9e37ef2490e64f6d1baa10fda852257082c25d3"
799 |
800 | "cssstyle@>= 0.2.29 < 0.3.0":
801 | version "0.2.37"
802 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
803 | dependencies:
804 | cssom "0.3.x"
805 |
806 | dashdash@^1.12.0:
807 | version "1.14.0"
808 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.0.tgz#29e486c5418bf0f356034a993d51686a33e84141"
809 | dependencies:
810 | assert-plus "^1.0.0"
811 |
812 | debug@^2.2.0, debug@~2.2.0:
813 | version "2.2.0"
814 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
815 | dependencies:
816 | ms "0.7.1"
817 |
818 | deep-is@~0.1.3:
819 | version "0.1.3"
820 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
821 |
822 | define-properties@^1.1.1, define-properties@^1.1.2:
823 | version "1.1.2"
824 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
825 | dependencies:
826 | foreach "^2.0.5"
827 | object-keys "^1.0.8"
828 |
829 | delayed-stream@~1.0.0:
830 | version "1.0.0"
831 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
832 |
833 | depd@~1.1.0:
834 | version "1.1.0"
835 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
836 |
837 | destroy@~1.0.4:
838 | version "1.0.4"
839 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
840 |
841 | dom-serializer@~0.1.0, dom-serializer@0:
842 | version "0.1.0"
843 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
844 | dependencies:
845 | domelementtype "~1.1.1"
846 | entities "~1.1.1"
847 |
848 | domelementtype@~1.1.1:
849 | version "1.1.3"
850 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
851 |
852 | domelementtype@1:
853 | version "1.3.0"
854 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
855 |
856 | domhandler@2.3:
857 | version "2.3.0"
858 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738"
859 | dependencies:
860 | domelementtype "1"
861 |
862 | domutils@1.5, domutils@1.5.1:
863 | version "1.5.1"
864 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
865 | dependencies:
866 | dom-serializer "0"
867 | domelementtype "1"
868 |
869 | ecc-jsbn@~0.1.1:
870 | version "0.1.1"
871 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
872 | dependencies:
873 | jsbn "~0.1.0"
874 |
875 | ee-first@1.1.1:
876 | version "1.1.1"
877 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
878 |
879 | encodeurl@~1.0.1:
880 | version "1.0.1"
881 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
882 |
883 | encoding@^0.1.11:
884 | version "0.1.12"
885 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
886 | dependencies:
887 | iconv-lite "~0.4.13"
888 |
889 | entities@~1.1.1:
890 | version "1.1.1"
891 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
892 |
893 | entities@1.0:
894 | version "1.0.0"
895 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26"
896 |
897 | enzyme@^2.4.1:
898 | version "2.4.1"
899 | resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.4.1.tgz#90fa9861d982d0ceb92a9fd57e38426a2f74d3b1"
900 | dependencies:
901 | cheerio "^0.20.0"
902 | is-subset "^0.1.1"
903 | lodash "^4.13.1"
904 | object-is "^1.0.1"
905 | object.assign "^4.0.3"
906 | object.values "^1.0.3"
907 |
908 | es-abstract@^1.3.2:
909 | version "1.6.1"
910 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.6.1.tgz#bb8a2064120abcf928a086ea3d9043114285ec99"
911 | dependencies:
912 | es-to-primitive "^1.1.1"
913 | function-bind "^1.1.0"
914 | is-callable "^1.1.3"
915 | is-regex "^1.0.3"
916 |
917 | es-to-primitive@^1.1.1:
918 | version "1.1.1"
919 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
920 | dependencies:
921 | is-callable "^1.1.1"
922 | is-date-object "^1.0.1"
923 | is-symbol "^1.0.1"
924 |
925 | escape-html@~1.0.3:
926 | version "1.0.3"
927 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
928 |
929 | escape-string-regexp@^1.0.2:
930 | version "1.0.5"
931 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
932 |
933 | escodegen@^1.6.1:
934 | version "1.8.1"
935 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
936 | dependencies:
937 | esprima "^2.7.1"
938 | estraverse "^1.9.1"
939 | esutils "^2.0.2"
940 | optionator "^0.8.1"
941 | optionalDependencies:
942 | source-map "~0.2.0"
943 |
944 | esprima@^2.7.1:
945 | version "2.7.3"
946 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
947 |
948 | estraverse@^1.9.1:
949 | version "1.9.3"
950 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
951 |
952 | esutils@^2.0.0, esutils@^2.0.2:
953 | version "2.0.2"
954 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
955 |
956 | etag@~1.7.0:
957 | version "1.7.0"
958 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8"
959 |
960 | express@^4.14.0:
961 | version "4.14.0"
962 | resolved "https://registry.yarnpkg.com/express/-/express-4.14.0.tgz#c1ee3f42cdc891fb3dc650a8922d51ec847d0d66"
963 | dependencies:
964 | accepts "~1.3.3"
965 | array-flatten "1.1.1"
966 | content-disposition "0.5.1"
967 | content-type "~1.0.2"
968 | cookie "0.3.1"
969 | cookie-signature "1.0.6"
970 | debug "~2.2.0"
971 | depd "~1.1.0"
972 | encodeurl "~1.0.1"
973 | escape-html "~1.0.3"
974 | etag "~1.7.0"
975 | finalhandler "0.5.0"
976 | fresh "0.3.0"
977 | merge-descriptors "1.0.1"
978 | methods "~1.1.2"
979 | on-finished "~2.3.0"
980 | parseurl "~1.3.1"
981 | path-to-regexp "0.1.7"
982 | proxy-addr "~1.1.2"
983 | qs "6.2.0"
984 | range-parser "~1.2.0"
985 | send "0.14.1"
986 | serve-static "~1.11.1"
987 | type-is "~1.6.13"
988 | utils-merge "1.0.0"
989 | vary "~1.1.0"
990 |
991 | extend@~3.0.0:
992 | version "3.0.0"
993 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
994 |
995 | extsprintf@1.0.2:
996 | version "1.0.2"
997 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
998 |
999 | fast-levenshtein@~2.0.4:
1000 | version "2.0.5"
1001 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2"
1002 |
1003 | fbjs@^0.8.4:
1004 | version "0.8.5"
1005 | resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.5.tgz#f69ba8a876096cb1b9bffe4d7c1e71c19d39d008"
1006 | dependencies:
1007 | core-js "^1.0.0"
1008 | immutable "^3.7.6"
1009 | isomorphic-fetch "^2.1.1"
1010 | loose-envify "^1.0.0"
1011 | object-assign "^4.1.0"
1012 | promise "^7.1.1"
1013 | ua-parser-js "^0.7.9"
1014 |
1015 | finalhandler@0.5.0:
1016 | version "0.5.0"
1017 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7"
1018 | dependencies:
1019 | debug "~2.2.0"
1020 | escape-html "~1.0.3"
1021 | on-finished "~2.3.0"
1022 | statuses "~1.3.0"
1023 | unpipe "~1.0.0"
1024 |
1025 | foreach@^2.0.5:
1026 | version "2.0.5"
1027 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
1028 |
1029 | forever-agent@~0.6.1:
1030 | version "0.6.1"
1031 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
1032 |
1033 | form-data@~2.0.0:
1034 | version "2.0.0"
1035 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25"
1036 | dependencies:
1037 | asynckit "^0.4.0"
1038 | combined-stream "^1.0.5"
1039 | mime-types "^2.1.11"
1040 |
1041 | forwarded@~0.1.0:
1042 | version "0.1.0"
1043 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363"
1044 |
1045 | fresh@0.3.0:
1046 | version "0.3.0"
1047 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f"
1048 |
1049 | function-bind@^1.0.2, function-bind@^1.1.0:
1050 | version "1.1.0"
1051 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
1052 |
1053 | generate-function@^2.0.0:
1054 | version "2.0.0"
1055 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
1056 |
1057 | generate-object-property@^1.1.0:
1058 | version "1.2.0"
1059 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
1060 | dependencies:
1061 | is-property "^1.0.0"
1062 |
1063 | getpass@^0.1.1:
1064 | version "0.1.6"
1065 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
1066 | dependencies:
1067 | assert-plus "^1.0.0"
1068 |
1069 | globals@^8.3.0:
1070 | version "8.18.0"
1071 | resolved "https://registry.yarnpkg.com/globals/-/globals-8.18.0.tgz#93d4a62bdcac38cfafafc47d6b034768cb0ffcb4"
1072 |
1073 | "graceful-readlink@>= 1.0.0":
1074 | version "1.0.1"
1075 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
1076 |
1077 | har-validator@~2.0.6:
1078 | version "2.0.6"
1079 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
1080 | dependencies:
1081 | chalk "^1.1.1"
1082 | commander "^2.9.0"
1083 | is-my-json-valid "^2.12.4"
1084 | pinkie-promise "^2.0.0"
1085 |
1086 | has-ansi@^2.0.0:
1087 | version "2.0.0"
1088 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
1089 | dependencies:
1090 | ansi-regex "^2.0.0"
1091 |
1092 | has@^1.0.1:
1093 | version "1.0.1"
1094 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
1095 | dependencies:
1096 | function-bind "^1.0.2"
1097 |
1098 | hawk@~3.1.3:
1099 | version "3.1.3"
1100 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
1101 | dependencies:
1102 | boom "2.x.x"
1103 | cryptiles "2.x.x"
1104 | hoek "2.x.x"
1105 | sntp "1.x.x"
1106 |
1107 | hoek@2.x.x:
1108 | version "2.16.3"
1109 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
1110 |
1111 | htmlparser2@~3.8.1:
1112 | version "3.8.3"
1113 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068"
1114 | dependencies:
1115 | domelementtype "1"
1116 | domhandler "2.3"
1117 | domutils "1.5"
1118 | entities "1.0"
1119 | readable-stream "1.1"
1120 |
1121 | http-errors@~1.5.0:
1122 | version "1.5.0"
1123 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.0.tgz#b1cb3d8260fd8e2386cad3189045943372d48211"
1124 | dependencies:
1125 | inherits "2.0.1"
1126 | setprototypeof "1.0.1"
1127 | statuses ">= 1.3.0 < 2"
1128 |
1129 | http-signature@~1.1.0:
1130 | version "1.1.1"
1131 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
1132 | dependencies:
1133 | assert-plus "^0.2.0"
1134 | jsprim "^1.2.2"
1135 | sshpk "^1.7.0"
1136 |
1137 | iconv-lite@~0.4.13:
1138 | version "0.4.13"
1139 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
1140 |
1141 | immutable@^3.7.6:
1142 | version "3.8.1"
1143 | resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2"
1144 |
1145 | inherits@~2.0.1:
1146 | version "2.0.3"
1147 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1148 |
1149 | inherits@2.0.1:
1150 | version "2.0.1"
1151 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
1152 |
1153 | invariant@^2.2.0:
1154 | version "2.2.1"
1155 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.1.tgz#b097010547668c7e337028ebe816ebe36c8a8d54"
1156 | dependencies:
1157 | loose-envify "^1.0.0"
1158 |
1159 | ipaddr.js@1.1.1:
1160 | version "1.1.1"
1161 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.1.1.tgz#c791d95f52b29c1247d5df80ada39b8a73647230"
1162 |
1163 | is-callable@^1.1.1, is-callable@^1.1.3:
1164 | version "1.1.3"
1165 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
1166 |
1167 | is-date-object@^1.0.1:
1168 | version "1.0.1"
1169 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
1170 |
1171 | is-my-json-valid@^2.12.4:
1172 | version "2.15.0"
1173 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
1174 | dependencies:
1175 | generate-function "^2.0.0"
1176 | generate-object-property "^1.1.0"
1177 | jsonpointer "^4.0.0"
1178 | xtend "^4.0.0"
1179 |
1180 | is-property@^1.0.0:
1181 | version "1.0.2"
1182 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
1183 |
1184 | is-regex@^1.0.3:
1185 | version "1.0.3"
1186 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.3.tgz#0d55182bddf9f2fde278220aec3a75642c908637"
1187 |
1188 | is-stream@^1.0.1:
1189 | version "1.1.0"
1190 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
1191 |
1192 | is-subset@^0.1.1:
1193 | version "0.1.1"
1194 | resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
1195 |
1196 | is-symbol@^1.0.1:
1197 | version "1.0.1"
1198 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
1199 |
1200 | is-typedarray@~1.0.0:
1201 | version "1.0.0"
1202 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
1203 |
1204 | isarray@~1.0.0:
1205 | version "1.0.0"
1206 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1207 |
1208 | isarray@0.0.1:
1209 | version "0.0.1"
1210 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
1211 |
1212 | isomorphic-fetch@^2.1.1:
1213 | version "2.2.1"
1214 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
1215 | dependencies:
1216 | node-fetch "^1.0.1"
1217 | whatwg-fetch ">=0.10.0"
1218 |
1219 | isstream@~0.1.2:
1220 | version "0.1.2"
1221 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
1222 |
1223 | jodid25519@^1.0.0:
1224 | version "1.0.2"
1225 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
1226 | dependencies:
1227 | jsbn "~0.1.0"
1228 |
1229 | js-tokens@^1.0.1:
1230 | version "1.0.3"
1231 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-1.0.3.tgz#14e56eb68c8f1a92c43d59f5014ec29dc20f2ae1"
1232 |
1233 | js-tokens@^2.0.0:
1234 | version "2.0.0"
1235 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5"
1236 |
1237 | jsbn@~0.1.0:
1238 | version "0.1.0"
1239 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
1240 |
1241 | jsdom@^7.0.2:
1242 | version "7.2.2"
1243 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e"
1244 | dependencies:
1245 | abab "^1.0.0"
1246 | acorn "^2.4.0"
1247 | acorn-globals "^1.0.4"
1248 | cssom ">= 0.3.0 < 0.4.0"
1249 | cssstyle ">= 0.2.29 < 0.3.0"
1250 | escodegen "^1.6.1"
1251 | nwmatcher ">= 1.3.7 < 2.0.0"
1252 | parse5 "^1.5.1"
1253 | request "^2.55.0"
1254 | sax "^1.1.4"
1255 | symbol-tree ">= 3.1.0 < 4.0.0"
1256 | tough-cookie "^2.2.0"
1257 | webidl-conversions "^2.0.0"
1258 | whatwg-url-compat "~0.6.5"
1259 | xml-name-validator ">= 2.0.1 < 3.0.0"
1260 |
1261 | jsesc@~0.5.0:
1262 | version "0.5.0"
1263 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1264 |
1265 | json-schema@0.2.3:
1266 | version "0.2.3"
1267 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
1268 |
1269 | json-stringify-safe@~5.0.1:
1270 | version "5.0.1"
1271 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
1272 |
1273 | jsonpointer@^4.0.0:
1274 | version "4.0.0"
1275 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5"
1276 |
1277 | jsprim@^1.2.2:
1278 | version "1.3.1"
1279 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
1280 | dependencies:
1281 | extsprintf "1.0.2"
1282 | json-schema "0.2.3"
1283 | verror "1.3.6"
1284 |
1285 | levn@~0.3.0:
1286 | version "0.3.0"
1287 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
1288 | dependencies:
1289 | prelude-ls "~1.1.2"
1290 | type-check "~0.3.2"
1291 |
1292 | lodash@^4.1.0, lodash@^4.13.1, lodash@^4.2.0:
1293 | version "4.16.4"
1294 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.4.tgz#01ce306b9bad1319f2a5528674f88297aeb70127"
1295 |
1296 | loose-envify@^1.0.0, loose-envify@^1.1.0:
1297 | version "1.2.0"
1298 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.2.0.tgz#69a65aad3de542cf4ee0f4fe74e8e33c709ccb0f"
1299 | dependencies:
1300 | js-tokens "^1.0.1"
1301 |
1302 | media-typer@0.3.0:
1303 | version "0.3.0"
1304 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
1305 |
1306 | merge-descriptors@1.0.1:
1307 | version "1.0.1"
1308 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
1309 |
1310 | methods@~1.1.2:
1311 | version "1.1.2"
1312 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
1313 |
1314 | mime-db@~1.24.0:
1315 | version "1.24.0"
1316 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.24.0.tgz#e2d13f939f0016c6e4e9ad25a8652f126c467f0c"
1317 |
1318 | mime-types@^2.1.11, mime-types@~2.1.11, mime-types@~2.1.7:
1319 | version "2.1.12"
1320 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.12.tgz#152ba256777020dd4663f54c2e7bc26381e71729"
1321 | dependencies:
1322 | mime-db "~1.24.0"
1323 |
1324 | mime@1.3.4:
1325 | version "1.3.4"
1326 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
1327 |
1328 | ms@0.7.1:
1329 | version "0.7.1"
1330 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
1331 |
1332 | negotiator@0.6.1:
1333 | version "0.6.1"
1334 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
1335 |
1336 | node-fetch@^1.0.1:
1337 | version "1.6.3"
1338 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
1339 | dependencies:
1340 | encoding "^0.1.11"
1341 | is-stream "^1.0.1"
1342 |
1343 | node-uuid@~1.4.7:
1344 | version "1.4.7"
1345 | resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f"
1346 |
1347 | nth-check@~1.0.1:
1348 | version "1.0.1"
1349 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
1350 | dependencies:
1351 | boolbase "~1.0.0"
1352 |
1353 | "nwmatcher@>= 1.3.7 < 2.0.0":
1354 | version "1.3.8"
1355 | resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.8.tgz#34edb93de1aa6cb4448b573c9f2a059300241157"
1356 |
1357 | oauth-sign@~0.8.1:
1358 | version "0.8.2"
1359 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
1360 |
1361 | object-assign@^4.1.0:
1362 | version "4.1.0"
1363 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
1364 |
1365 | object-is@^1.0.1:
1366 | version "1.0.1"
1367 | resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6"
1368 |
1369 | object-keys@^1.0.10, object-keys@^1.0.8:
1370 | version "1.0.11"
1371 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
1372 |
1373 | object.assign@^4.0.3:
1374 | version "4.0.4"
1375 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
1376 | dependencies:
1377 | define-properties "^1.1.2"
1378 | function-bind "^1.1.0"
1379 | object-keys "^1.0.10"
1380 |
1381 | object.values@^1.0.3:
1382 | version "1.0.3"
1383 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.3.tgz#a7774ba050893fe6a5d5958acd05823e0f426bef"
1384 | dependencies:
1385 | define-properties "^1.1.1"
1386 | es-abstract "^1.3.2"
1387 | function-bind "^1.0.2"
1388 | has "^1.0.1"
1389 |
1390 | on-finished@~2.3.0:
1391 | version "2.3.0"
1392 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
1393 | dependencies:
1394 | ee-first "1.1.1"
1395 |
1396 | optionator@^0.8.1:
1397 | version "0.8.2"
1398 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
1399 | dependencies:
1400 | deep-is "~0.1.3"
1401 | fast-levenshtein "~2.0.4"
1402 | levn "~0.3.0"
1403 | prelude-ls "~1.1.2"
1404 | type-check "~0.3.2"
1405 | wordwrap "~1.0.0"
1406 |
1407 | parse5@^1.5.1:
1408 | version "1.5.1"
1409 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
1410 |
1411 | parseurl@~1.3.1:
1412 | version "1.3.1"
1413 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56"
1414 |
1415 | path-to-regexp@0.1.7:
1416 | version "0.1.7"
1417 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
1418 |
1419 | pinkie-promise@^2.0.0:
1420 | version "2.0.1"
1421 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
1422 | dependencies:
1423 | pinkie "^2.0.0"
1424 |
1425 | pinkie@^2.0.0:
1426 | version "2.0.4"
1427 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
1428 |
1429 | prelude-ls@~1.1.2:
1430 | version "1.1.2"
1431 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
1432 |
1433 | private@~0.1.5:
1434 | version "0.1.6"
1435 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1"
1436 |
1437 | process-nextick-args@~1.0.6:
1438 | version "1.0.7"
1439 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
1440 |
1441 | promise@^7.1.1:
1442 | version "7.1.1"
1443 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf"
1444 | dependencies:
1445 | asap "~2.0.3"
1446 |
1447 | proxy-addr@~1.1.2:
1448 | version "1.1.2"
1449 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.2.tgz#b4cc5f22610d9535824c123aef9d3cf73c40ba37"
1450 | dependencies:
1451 | forwarded "~0.1.0"
1452 | ipaddr.js "1.1.1"
1453 |
1454 | qs@~6.2.0:
1455 | version "6.2.1"
1456 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625"
1457 |
1458 | qs@6.2.0:
1459 | version "6.2.0"
1460 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b"
1461 |
1462 | range-parser@~1.2.0:
1463 | version "1.2.0"
1464 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
1465 |
1466 | react-addons-test-utils@^15.3.0:
1467 | version "15.3.2"
1468 | resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.3.2.tgz#c09a44f583425a4a9c1b38444d7a6c3e6f0f41f6"
1469 |
1470 | react-dom@^15.3.0:
1471 | version "15.3.2"
1472 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.3.2.tgz#c46b0aa5380d7b838e7a59c4a7beff2ed315531f"
1473 |
1474 | react@^15.3.0:
1475 | version "15.3.2"
1476 | resolved "https://registry.yarnpkg.com/react/-/react-15.3.2.tgz#a7bccd2fee8af126b0317e222c28d1d54528d09e"
1477 | dependencies:
1478 | fbjs "^0.8.4"
1479 | loose-envify "^1.1.0"
1480 | object-assign "^4.1.0"
1481 |
1482 | readable-stream@~2.0.5:
1483 | version "2.0.6"
1484 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
1485 | dependencies:
1486 | core-util-is "~1.0.0"
1487 | inherits "~2.0.1"
1488 | isarray "~1.0.0"
1489 | process-nextick-args "~1.0.6"
1490 | string_decoder "~0.10.x"
1491 | util-deprecate "~1.0.1"
1492 |
1493 | readable-stream@1.1:
1494 | version "1.1.13"
1495 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e"
1496 | dependencies:
1497 | core-util-is "~1.0.0"
1498 | inherits "~2.0.1"
1499 | isarray "0.0.1"
1500 | string_decoder "~0.10.x"
1501 |
1502 | regenerate@^1.2.1:
1503 | version "1.3.1"
1504 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.1.tgz#0300203a5d2fdcf89116dce84275d011f5903f33"
1505 |
1506 | regenerator-runtime@^0.9.5:
1507 | version "0.9.5"
1508 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz#403d6d40a4bdff9c330dd9392dcbb2d9a8bba1fc"
1509 |
1510 | regexpu-core@^2.0.0:
1511 | version "2.0.0"
1512 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
1513 | dependencies:
1514 | regenerate "^1.2.1"
1515 | regjsgen "^0.2.0"
1516 | regjsparser "^0.1.4"
1517 |
1518 | regjsgen@^0.2.0:
1519 | version "0.2.0"
1520 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
1521 |
1522 | regjsparser@^0.1.4:
1523 | version "0.1.5"
1524 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
1525 | dependencies:
1526 | jsesc "~0.5.0"
1527 |
1528 | request@^2.55.0:
1529 | version "2.75.0"
1530 | resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93"
1531 | dependencies:
1532 | aws-sign2 "~0.6.0"
1533 | aws4 "^1.2.1"
1534 | bl "~1.1.2"
1535 | caseless "~0.11.0"
1536 | combined-stream "~1.0.5"
1537 | extend "~3.0.0"
1538 | forever-agent "~0.6.1"
1539 | form-data "~2.0.0"
1540 | har-validator "~2.0.6"
1541 | hawk "~3.1.3"
1542 | http-signature "~1.1.0"
1543 | is-typedarray "~1.0.0"
1544 | isstream "~0.1.2"
1545 | json-stringify-safe "~5.0.1"
1546 | mime-types "~2.1.7"
1547 | node-uuid "~1.4.7"
1548 | oauth-sign "~0.8.1"
1549 | qs "~6.2.0"
1550 | stringstream "~0.0.4"
1551 | tough-cookie "~2.3.0"
1552 | tunnel-agent "~0.4.1"
1553 |
1554 | sax@^1.1.4:
1555 | version "1.2.1"
1556 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
1557 |
1558 | send@0.14.1:
1559 | version "0.14.1"
1560 | resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a"
1561 | dependencies:
1562 | debug "~2.2.0"
1563 | depd "~1.1.0"
1564 | destroy "~1.0.4"
1565 | encodeurl "~1.0.1"
1566 | escape-html "~1.0.3"
1567 | etag "~1.7.0"
1568 | fresh "0.3.0"
1569 | http-errors "~1.5.0"
1570 | mime "1.3.4"
1571 | ms "0.7.1"
1572 | on-finished "~2.3.0"
1573 | range-parser "~1.2.0"
1574 | statuses "~1.3.0"
1575 |
1576 | serve-static@~1.11.1:
1577 | version "1.11.1"
1578 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805"
1579 | dependencies:
1580 | encodeurl "~1.0.1"
1581 | escape-html "~1.0.3"
1582 | parseurl "~1.3.1"
1583 | send "0.14.1"
1584 |
1585 | setprototypeof@1.0.1:
1586 | version "1.0.1"
1587 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.1.tgz#52009b27888c4dc48f591949c0a8275834c1ca7e"
1588 |
1589 | sntp@1.x.x:
1590 | version "1.0.9"
1591 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
1592 | dependencies:
1593 | hoek "2.x.x"
1594 |
1595 | source-map@~0.2.0:
1596 | version "0.2.0"
1597 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
1598 | dependencies:
1599 | amdefine ">=0.0.4"
1600 |
1601 | sshpk@^1.7.0:
1602 | version "1.10.1"
1603 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
1604 | dependencies:
1605 | asn1 "~0.2.3"
1606 | assert-plus "^1.0.0"
1607 | dashdash "^1.12.0"
1608 | getpass "^0.1.1"
1609 | optionalDependencies:
1610 | bcrypt-pbkdf "^1.0.0"
1611 | ecc-jsbn "~0.1.1"
1612 | jodid25519 "^1.0.0"
1613 | jsbn "~0.1.0"
1614 | tweetnacl "~0.14.0"
1615 |
1616 | "statuses@>= 1.3.0 < 2", statuses@~1.3.0:
1617 | version "1.3.0"
1618 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.0.tgz#8e55758cb20e7682c1f4fce8dcab30bf01d1e07a"
1619 |
1620 | string_decoder@~0.10.x:
1621 | version "0.10.31"
1622 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
1623 |
1624 | stringstream@~0.0.4:
1625 | version "0.0.5"
1626 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
1627 |
1628 | strip-ansi@^3.0.0:
1629 | version "3.0.1"
1630 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1631 | dependencies:
1632 | ansi-regex "^2.0.0"
1633 |
1634 | supports-color@^2.0.0:
1635 | version "2.0.0"
1636 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
1637 |
1638 | "symbol-tree@>= 3.1.0 < 4.0.0":
1639 | version "3.1.4"
1640 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.1.4.tgz#02b279348d337debc39694c5c95f882d448a312a"
1641 |
1642 | to-fast-properties@^1.0.1:
1643 | version "1.0.2"
1644 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
1645 |
1646 | tough-cookie@^2.2.0, tough-cookie@~2.3.0:
1647 | version "2.3.1"
1648 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.1.tgz#99c77dfbb7d804249e8a299d4cb0fd81fef083fd"
1649 |
1650 | tr46@~0.0.1:
1651 | version "0.0.3"
1652 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
1653 |
1654 | tunnel-agent@~0.4.1:
1655 | version "0.4.3"
1656 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
1657 |
1658 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
1659 | version "0.14.3"
1660 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d"
1661 |
1662 | type-check@~0.3.2:
1663 | version "0.3.2"
1664 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
1665 | dependencies:
1666 | prelude-ls "~1.1.2"
1667 |
1668 | type-is@~1.6.13:
1669 | version "1.6.13"
1670 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.13.tgz#6e83ba7bc30cd33a7bb0b7fb00737a2085bf9d08"
1671 | dependencies:
1672 | media-typer "0.3.0"
1673 | mime-types "~2.1.11"
1674 |
1675 | ua-parser-js@^0.7.9:
1676 | version "0.7.10"
1677 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.10.tgz#917559ddcce07cbc09ece7d80495e4c268f4ef9f"
1678 |
1679 | unpipe@~1.0.0:
1680 | version "1.0.0"
1681 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
1682 |
1683 | util-deprecate@~1.0.1:
1684 | version "1.0.2"
1685 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1686 |
1687 | utils-merge@1.0.0:
1688 | version "1.0.0"
1689 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
1690 |
1691 | vary@~1.1.0:
1692 | version "1.1.0"
1693 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140"
1694 |
1695 | verror@1.3.6:
1696 | version "1.3.6"
1697 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
1698 | dependencies:
1699 | extsprintf "1.0.2"
1700 |
1701 | webidl-conversions@^2.0.0:
1702 | version "2.0.1"
1703 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506"
1704 |
1705 | whatwg-fetch@>=0.10.0:
1706 | version "1.0.0"
1707 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.0.0.tgz#01c2ac4df40e236aaa18480e3be74bd5c8eb798e"
1708 |
1709 | whatwg-url-compat@~0.6.5:
1710 | version "0.6.5"
1711 | resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf"
1712 | dependencies:
1713 | tr46 "~0.0.1"
1714 |
1715 | wordwrap@~1.0.0:
1716 | version "1.0.0"
1717 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
1718 |
1719 | "xml-name-validator@>= 2.0.1 < 3.0.0":
1720 | version "2.0.1"
1721 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
1722 |
1723 | xtend@^4.0.0:
1724 | version "4.0.1"
1725 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
1726 |
1727 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-csjs",
3 | "version": "2.1.0",
4 | "description": "React Higher Order Component for CSJS",
5 | "main": "lib",
6 | "scripts": {
7 | "build": "cross-env NODE_ENV=production BABEL_ENV=commonjs babel src --out-dir lib",
8 | "test": "cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text mocha",
9 | "prepublish": "npm run lint && npm run test && npm run build",
10 | "lint": "eslint ./src ./test"
11 | },
12 | "repository": {
13 | "type": "git",
14 | "url": "git+https://github.com/tizmagik/react-csjs.git"
15 | },
16 | "keywords": [
17 | "react",
18 | "csjs",
19 | "css",
20 | "style",
21 | "stylesheet",
22 | "hoc",
23 | "decorator"
24 | ],
25 | "peerDependencies": {
26 | "csjs": ">=1.0.0 < 5.0.0",
27 | "react": ">=0.13"
28 | },
29 | "author": "Jeremy Gayed (https://github.com/tizmagik)",
30 | "contributors": [
31 | "Paul Henschel ",
32 | "Justin Hall "
33 | ],
34 | "license": "MIT",
35 | "bugs": {
36 | "url": "https://github.com/tizmagik/react-csjs/issues"
37 | },
38 | "homepage": "https://github.com/tizmagik/react-csjs#readme",
39 | "devDependencies": {
40 | "babel-cli": "^6.18.0",
41 | "babel-core": "^6.18.2",
42 | "babel-eslint": "^7.1.0",
43 | "babel-plugin-istanbul": "^2.0.3",
44 | "babel-plugin-rewire": "^1.0.0",
45 | "babel-plugin-transform-decorators-legacy": "^1.3.4",
46 | "babel-plugin-transform-runtime": "^6.15.0",
47 | "babel-preset-es2015": "^6.18.0",
48 | "babel-preset-react": "^6.11.1",
49 | "babel-preset-stage-0": "^6.5.0",
50 | "babel-register": "^6.18.0",
51 | "babel-runtime": "^6.18.0",
52 | "babel-template": "^6.16.0",
53 | "babel-types": "^6.18.0",
54 | "chai": "^3.5.0",
55 | "coveralls": "^2.11.15",
56 | "cross-env": "^3.1.3",
57 | "csjs": "^1.0.5",
58 | "enzyme": "^2.6.0",
59 | "eslint": "^3.9.1",
60 | "eslint-config-airbnb": "^13.0.0",
61 | "eslint-plugin-import": "^2.2.0",
62 | "eslint-plugin-jsx-a11y": "^2.0.1",
63 | "eslint-plugin-react": "^6.6.0",
64 | "jsdom": "^9.8.3",
65 | "mocha": "^3.1.1",
66 | "nyc": "^8.4.0",
67 | "react": "^15.2.1",
68 | "react-addons-test-utils": "^15.3.2",
69 | "react-dom": "^15.2.1",
70 | "sinon": "^1.17.6",
71 | "source-map-support": "^0.4.6"
72 | },
73 | "dependencies": {}
74 | }
75 |
--------------------------------------------------------------------------------
/src/dom/index.js:
--------------------------------------------------------------------------------
1 | // DOM variant of insert-style
2 | // insertStyle, { getStyle, removeStyle }
3 |
4 |
5 | export const getStyle = (elm) => {
6 | if ('styleSheet' in elm && 'cssText' in elm.styleSheet) {
7 | return elm.styleSheet.cssText; // IE8
8 | }
9 |
10 | return elm.textContent;
11 | };
12 |
13 | export const removeStyle = elm => elm.parentNode.removeChild(elm);
14 |
15 | const insertStyle = (css, options = {}) => {
16 | const elm = options.element || document.createElement('style');
17 | elm.setAttribute('type', 'text/css');
18 |
19 | if ('styleSheet' in elm && 'cssText' in elm.styleSheet) {
20 | elm.styleSheet.cssText = css; // IE8
21 | } else {
22 | elm.textContent = css;
23 | }
24 |
25 | if (!options.element) {
26 | const head = document.getElementsByTagName('head')[0];
27 | if (options && options.prepend) {
28 | head.insertBefore(elm, head.childNodes[0]);
29 | } else {
30 | head.appendChild(elm);
31 | }
32 | }
33 |
34 | return elm;
35 | };
36 |
37 | export default insertStyle;
38 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import csjs from 'csjs';
3 | import scopedName from 'csjs/lib/scoped-name';
4 | import insertStyle, { removeStyle, getStyle } from './insert-style';
5 |
6 | const cache = {};
7 |
8 | export { removeStyle, getStyle };
9 |
10 | export default function (userCss, ...values) {
11 | let css = userCss;
12 |
13 | if (Array.isArray(css)) {
14 | // Forward string literals to csjs
15 | css = csjs(css, ...values);
16 | }
17 |
18 | let cssText = csjs.getCss(css);
19 | const scope = scopedName(cssText)('DecoratedComponent');
20 |
21 | return DecoratedComponent =>
22 | class WithStyleDecorator extends Component {
23 | static displayName = `csjs(${DecoratedComponent.displayName
24 | || DecoratedComponent.name || 'Component'})`
25 |
26 | componentWillMount() {
27 | const refs = cache[scope];
28 | if (!refs) {
29 | this.elm = insertStyle(cssText);
30 | cache[scope] = { style: this.elm, count: 1 };
31 | } else {
32 | this.elm = refs.style;
33 | refs.count += 1;
34 | }
35 | }
36 |
37 | componentWillUpdate() {
38 | if (process.env.NODE_ENV !== 'production') {
39 | // Support React Hot Loader
40 | cssText = csjs.getCss(css);
41 | if (getStyle(this.elm) !== cssText) {
42 | this.elm = insertStyle(cssText, { element: this.elm });
43 | }
44 | }
45 | }
46 |
47 | componentWillUnmount() {
48 | const refs = cache[scope];
49 | if (refs) {
50 | refs.count -= 1;
51 | if (refs.count === 0) {
52 | delete cache[scope];
53 | removeStyle(this.elm);
54 | this.elm = null;
55 | }
56 | }
57 | }
58 |
59 | render() {
60 | return ;
61 | }
62 | };
63 | }
64 |
--------------------------------------------------------------------------------
/src/insert-style.js:
--------------------------------------------------------------------------------
1 | // Depending on environment, we return the proper
2 | // DOM or Node-based version of 'insert-style'
3 | // insertStyle, { getStyle, removeStyle }
4 |
5 | import insertStyleServer,
6 | { getStyle as getStyleServer, removeStyle as removeStyleServer } from './server';
7 | import insertStyleDOM,
8 | { getStyle as getStyleDOM, removeStyle as removeStyleDOM } from './dom';
9 |
10 | const isServer = (typeof document === 'undefined');
11 |
12 | const getStyle = isServer ? getStyleServer : getStyleDOM;
13 | const removeStyle = isServer ? removeStyleServer : removeStyleDOM;
14 | const insertStyle = isServer ? insertStyleServer : insertStyleDOM;
15 |
16 | export { getStyle, removeStyle };
17 | export default insertStyle;
18 |
--------------------------------------------------------------------------------
/src/server/index.js:
--------------------------------------------------------------------------------
1 | // Node variant of insert-style
2 | // insertStyle, { getStyle, removeStyle }
3 |
4 | const serverStyles = new Map();
5 |
6 | export const getStyle = (key) => {
7 | if (key) {
8 | return serverStyles.get(key);
9 | }
10 |
11 | return Array.from(serverStyles.values()).join('\n');
12 | };
13 |
14 | export const removeStyle = key => serverStyles.delete(key);
15 |
16 | const insertStyle = style => serverStyles.set(style, style);
17 | export default insertStyle;
18 |
--------------------------------------------------------------------------------
/test/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "mocha": true
4 | },
5 | "rules": {
6 | "no-underscore-dangle": "off",
7 | "no-unused-expressions": "off",
8 | "react/prefer-stateless-function": "off",
9 | "react/prop-types": "off"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/test/.setup.js:
--------------------------------------------------------------------------------
1 | /**
2 | * This file is used to initialize a DOM for the test environment. It MUST be
3 | * loaded prior to React, Enzyme, etc., so we require it with mocha directly.
4 | */
5 | import { jsdom } from 'jsdom';
6 |
7 | const exposedProperties = ['window', 'navigator', 'document'];
8 | const emptyDom = '';
9 |
10 | global.document = jsdom(emptyDom);
11 | global.window = document.defaultView;
12 | Object.keys(document.defaultView).forEach((property) => {
13 | if (typeof global[property] === 'undefined') {
14 | exposedProperties.push(property);
15 | global[property] = document.defaultView[property];
16 | }
17 | });
18 |
19 | global.navigator = window.navigator;
20 |
--------------------------------------------------------------------------------
/test/components/DecoratedButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { testStyles } from '../testUtil';
3 | import withStyles from '../../src';
4 |
5 | // Decorator Syntax
6 | @withStyles(testStyles)
7 | export default class extends React.Component {
8 | render() {
9 | return (
10 |
11 |
12 | {this.props.children}
13 |
14 |
15 | );
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/test/components/TaggedDecoratedButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { testCss } from '../testUtil';
3 | import csjs from '../../src';
4 |
5 | // Tagged Decorator Syntax
6 | @csjs`${testCss}`
7 | export default class extends React.Component {
8 | render() {
9 | return (
10 |
11 |
12 | {this.props.children}
13 |
14 |
15 | );
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/test/components/WrappedButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { testStyles } from '../testUtil';
3 | import withStyles from '../../src';
4 |
5 | // Wrapped Syntax
6 | const ButtonComponent = ({ classes, children }) => (
7 |
8 |
9 | {children}
10 |
11 |
12 | );
13 |
14 | export default withStyles(testStyles)(ButtonComponent);
15 |
--------------------------------------------------------------------------------
/test/dom.test.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import { testCss, testElm, testElmIe8 } from './testUtil';
3 | import insertStyle, { removeStyle, getStyle } from '../src/dom';
4 |
5 | describe('DOM variant', () => {
6 | describe('insertStyle', () => {
7 | it('should insert a style element with the given CSS (append)', () => {
8 | const elm = insertStyle(testCss);
9 | expect(elm.textContent).to.equal(testCss);
10 | });
11 |
12 | it('should insert a style element with the given CSS (prepend)', () => {
13 | const elm = insertStyle(testCss, { prepend: true });
14 | expect(elm.textContent).to.equal(testCss);
15 | });
16 |
17 | it('should update an existing style element with the given CSS', () => {
18 | const elm = insertStyle(testCss, { element: testElm });
19 | expect(getStyle(elm)).to.equal(testCss);
20 | });
21 |
22 | it('should update an existing IE8 style element with the given CSS', () => {
23 | const elm = insertStyle(testCss, { element: testElmIe8 });
24 | expect(getStyle(elm)).to.equal(testCss);
25 | });
26 | });
27 |
28 | describe('getStyle', () => {
29 | it('should get CSS text from a style element', () => {
30 | const elm = insertStyle(testCss);
31 | expect(getStyle(elm)).to.equal(testCss);
32 | });
33 |
34 | it('should get CSS text from an IE8 style element', () => {
35 | const elm = insertStyle(testCss, { element: testElmIe8 });
36 | expect(getStyle(elm)).to.equal(testCss);
37 | });
38 | });
39 |
40 | describe('removeStyle', () => {
41 | it('should remove an appended style element', () => {
42 | const elm = insertStyle(testCss);
43 | const removedElm = removeStyle(elm);
44 | expect(removedElm).to.equal(elm);
45 | });
46 |
47 | it('should remove a prepended style element', () => {
48 | const elm = insertStyle(testCss, { prepend: true });
49 | const removedElm = removeStyle(elm);
50 | expect(removedElm).to.equal(elm);
51 | });
52 | });
53 | });
54 |
--------------------------------------------------------------------------------
/test/insertStyle.test.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable global-require */
2 | import { expect } from 'chai';
3 |
4 | const cacheKey = require.resolve('../src/insert-style');
5 |
6 | describe('insertStyle', () => {
7 | const document = global.document;
8 |
9 | after(() => {
10 | global.document = document;
11 | });
12 |
13 | beforeEach(() => {
14 | if (require.cache[cacheKey]) {
15 | delete require.cache[cacheKey];
16 | }
17 | });
18 |
19 | describe('when in a browser', () => {
20 | it('should return DOM variant', () => {
21 | global.document = {};
22 | const insertStyle = require('../src/insert-style');
23 |
24 | expect(insertStyle.__get__('isServer')).to.equal(false);
25 | });
26 | });
27 |
28 | describe('when on the server', () => {
29 | it('should return Server variant', () => {
30 | delete global.document;
31 | const insertStyle = require('../src/insert-style');
32 |
33 | expect(insertStyle.__get__('isServer')).to.equal(true);
34 | });
35 | });
36 | });
37 |
--------------------------------------------------------------------------------
/test/mocha.opts:
--------------------------------------------------------------------------------
1 | --require babel-register
2 | --require test/.setup.js
3 |
--------------------------------------------------------------------------------
/test/server.test.js:
--------------------------------------------------------------------------------
1 | import { expect } from 'chai';
2 | import { testCss } from './testUtil';
3 | import insertStyle, { removeStyle, getStyle } from '../src/server';
4 |
5 | describe('Server variant', () => {
6 | describe('insertStyle', () => {
7 | it('should add a style element with the given CSS', () => {
8 | const style = insertStyle(testCss);
9 | expect(style.get(testCss)).to.equal(testCss);
10 | });
11 | });
12 |
13 | describe('getStyle', () => {
14 | it('should get the CSS text for a given key', () => {
15 | insertStyle(testCss);
16 | expect(getStyle(testCss)).to.equal(testCss);
17 | });
18 |
19 | it('should get all the CSS when no key given', () => {
20 | const blah = 'blah';
21 | insertStyle(testCss);
22 | insertStyle(blah);
23 | const expectedStyles = [testCss, blah].join('\n');
24 | expect(getStyle()).to.contain(expectedStyles);
25 | });
26 | });
27 |
28 | describe('removeStyle', () => {
29 | it('should remove a given style key', () => {
30 | const forRemoval = '.removeMe{}';
31 | insertStyle(forRemoval);
32 | const removedSuccessfully = removeStyle(forRemoval);
33 | expect(removedSuccessfully).to.equal(true);
34 | expect(getStyle()).to.not.contain(forRemoval);
35 | });
36 | });
37 | });
38 |
--------------------------------------------------------------------------------
/test/testUtil.js:
--------------------------------------------------------------------------------
1 | import csjs from 'csjs';
2 | import { jsdom } from 'jsdom';
3 |
4 | export const testCss = `
5 | .button {
6 | background-color: purple
7 | }
8 |
9 | .label {
10 | color: blue
11 | }
12 | `;
13 |
14 | export const testStyles = csjs`${testCss}`;
15 |
16 | export const testElm = jsdom().createElement('style');
17 | testElm.setAttribute('type', 'text/css');
18 |
19 | export const testElmIe8 = jsdom().createElement('style');
20 | testElmIe8.setAttribute('type', 'text/css');
21 | testElmIe8.styleSheet = { cssText: testCss };
22 |
--------------------------------------------------------------------------------
/test/withStyles.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import getCss from 'csjs/get-css';
3 | import scopedName from 'csjs/lib/scoped-name';
4 | import { expect } from 'chai';
5 | import { mount, shallow } from 'enzyme';
6 | import sinon from 'sinon';
7 | import { testStyles } from './testUtil';
8 | import TaggedDecoratedButton from './components/TaggedDecoratedButton';
9 | import DecoratedButton from './components/DecoratedButton';
10 | import WrappedButton from './components/WrappedButton';
11 | import withStyles from '../src';
12 |
13 | describe('withStyles', () => {
14 | describe('core', () => {
15 | it('should return a styled React component (tagged decorator)', () => {
16 | const wrapper = shallow( );
17 | expect(wrapper.props().classes).to.be.an.instanceOf(Object);
18 | Object
19 | .keys(testStyles)
20 | .forEach((style) => {
21 | expect(wrapper.html()).to.contain(testStyles[`${style}`].className);
22 | });
23 | });
24 |
25 | it('should return a styled React component (decorator)', () => {
26 | const wrapper = shallow( );
27 | expect(wrapper.props().classes).to.be.an.instanceOf(Object);
28 | Object
29 | .keys(testStyles)
30 | .forEach((style) => {
31 | expect(wrapper.html()).to.contain(testStyles[`${style}`].className);
32 | });
33 | });
34 |
35 | it('should return a styled React component (wrapped)', () => {
36 | const wrapper = shallow( );
37 | expect(wrapper.props().classes).to.be.an.instanceOf(Object);
38 | Object
39 | .keys(testStyles)
40 | .forEach((style) => {
41 | expect(wrapper.html()).to.contain(testStyles[`${style}`].className);
42 | });
43 | });
44 | });
45 |
46 | describe('caching', () => {
47 | const scope = scopedName(getCss(testStyles))('DecoratedComponent');
48 | let cache;
49 |
50 | beforeEach(() => {
51 | cache = {};
52 | withStyles.__Rewire__('cache', cache);
53 | });
54 |
55 | afterEach(() => {
56 | withStyles.__ResetDependency__('cache');
57 | });
58 |
59 | it('should cache styles on subsequent mounts', () => {
60 | expect(cache[scope]).to.be.undefined;
61 | mount( );
62 | mount( );
63 | expect(cache[scope]).to.be.an('object').and.to.have.property('count', 2);
64 | });
65 |
66 | it('should clear styles cache on last component instance dismount', () => {
67 | expect(cache[scope]).to.be.undefined;
68 | const wrapper = mount( );
69 | expect(cache[scope]).to.be.an('object').and.to.have.property('count', 1);
70 | wrapper.unmount();
71 | expect(cache[scope]).to.be.undefined;
72 | });
73 |
74 | it('should not clear styles cache on normal component dismount', () => {
75 | expect(cache[scope]).to.be.undefined;
76 | /**
77 | * Calling mount triggers componentWillMount for the first instance of the
78 | * component being mounted. Mounting again right afterwards triggers
79 | * componentWillMount again, increasing the count to 2. Unmounting the
80 | * second one will trigger componentWillUnmount, but the first one still
81 | * remains, so the cache should not be cleared.
82 | */
83 | mount( );
84 | const wrapper = mount( );
85 | wrapper.unmount();
86 | expect(cache[scope]).to.be.an('object').and.to.have.property('count', 1);
87 | });
88 | });
89 |
90 | describe('hot reload', () => {
91 | const csjs = { getCss: sinon.spy() };
92 | const realNodeEnv = process.env.NODE_ENV;
93 |
94 | beforeEach(() => {
95 | withStyles.__Rewire__('csjs', csjs);
96 | });
97 |
98 | afterEach(() => {
99 | csjs.getCss.reset();
100 | withStyles.__ResetDependency__('csjs');
101 | });
102 |
103 | it('should refresh styles in componentWillUpdate (non-production)', () => {
104 | process.env.NODE_ENV = 'test';
105 | const wrapper = shallow( );
106 | /**
107 | * Calling setProps on the Enzyme wrapper of the shallow render of
108 | * will trigger the componentWillUpdate lifecycle
109 | * method.
110 | */
111 | wrapper.setProps({ foo: 'bar' });
112 | process.env.NODE_ENV = realNodeEnv;
113 | expect(csjs.getCss.called).to.be.true;
114 | });
115 |
116 | it('should not refresh styles in componentWillUpdate (production)', () => {
117 | process.env.NODE_ENV = 'production';
118 | const wrapper = shallow( );
119 | wrapper.setProps({ foo: 'bar' });
120 | process.env.NODE_ENV = realNodeEnv;
121 | expect(csjs.getCss.called).to.be.false;
122 | });
123 | });
124 | });
125 |
--------------------------------------------------------------------------------