diff --git a/.babelrc b/.babelrc
new file mode 100644
index 000000000..38733e673
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,3 @@
+{
+ "presets": ["react", "es2015", "stage-0"]
+}
diff --git a/.eslintrc.js b/.eslintrc.js
index 8c84c06be..9b5b367bf 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,25 +1,34 @@
module.exports = {
- "parser": "babel-eslint",
"extends": [
"eslint:recommended"
],
- "plugins": [
- "standard",
- "promise",
- "react"
- ],
+ "globals": {
+ "document": true,
+ "Reflect": true,
+ "window": true
+ },
+ "parser": "babel-eslint",
"parserOptions": {
+ "ecmaVersion": 6,
"ecmaFeatures": {
"jsx": true
}
},
+ "plugins": [
+ "standard",
+ "promise",
+ "react"
+ ],
"rules": {
"react/jsx-uses-react": "error",
- "react/jsx-uses-vars": "error"
- },
- "globals": {
- "document": true,
- "Reflect": true,
- "window": true
+ "react/jsx-uses-vars": "error",
+ "camelcase": "error",
+ "keyword-spacing": "error",
+ "max-len": ["error", 120, 4, { "ignoreComments": true }],
+ "max-lines": ["error", {"max": 250, "skipComments": true}],
+ "newline-after-var": ["error", "always"],
+ "no-nested-ternary": "error",
+ "no-useless-constructor": "error",
+ "semi": "error"
}
};
diff --git a/.gitignore b/.gitignore
index 8e3d10168..4e1847959 100644
--- a/.gitignore
+++ b/.gitignore
@@ -67,5 +67,6 @@ typings/
dist/
DOCUMENTATION.md
docs
+coverage
sandbox/rd3g.sandbox.bundle.js
sandbox/rd3g.sandbox.bundle.js.map
diff --git a/README.md b/README.md
index d8bd53498..d8236a28e 100644
--- a/README.md
+++ b/README.md
@@ -46,8 +46,16 @@ export default {
```
## TODOs
-This are some ideas to further development:
-- Expose a graph property **background-color** that is applied to the svg graph container.
+This consists in a list of ideas for further development:
+- Expose a graph property **background-color** that is applied to the svg graph container;
+- Expose d3-force values as configurable such as **alphaTarget** simulation value;
+- Improve opacity/highlightBehavior strategy maybe use a global *background: rgba(...)* value and then set a higher
+value on selected nodes;
+- At the moment highlightBehavior is highlighting the mouse hovered node, its 1st degree connections and their 1st
+degree connections. Make **highlightBehaviorDegree** which consists in a *step value* on the depth that we wish to highlight.
+
+#### Sanbox/Playground
+- Improve page layout (optimize space).
## Contributions
Contributions are welcome fell free to submit new features or simply grab something from
diff --git a/package.json b/package.json
index aa67ab83f..c65a7a7dd 100644
--- a/package.json
+++ b/package.json
@@ -4,35 +4,53 @@
"description": "React component to build interactive and configurable graphs with d3 effortlessly",
"author": "Daniel Caldas",
"license": "MIT",
+ "scripts": {
+ "dev": "node_modules/.bin/webpack-dev-server -d --content-base sandbox --inline --hot --port 3002",
+ "dist": "node_modules/.bin/npm-run-all --parallel dist:*",
+ "dist:rd3g": "webpack --config webpack.config.dist.js -p --display-modules",
+ "dist:sandbox": "webpack --config webpack.config.js -p --display-modules",
+ "docs": "node_modules/documentation/bin/documentation.js build src/**/*.js -f html -o docs && node_modules/documentation/bin/documentation.js build src/**/*.js -f md > DOCUMENTATION.md",
+ "lint": "node_modules/eslint/bin/eslint.js --config=.eslintrc.js \"src/**/*.js\"",
+ "test": "jest --verbose --coverage",
+ "test:clean": "jest --no-cache --updateSnapshot --verbose --coverage",
+ "test:watch": "jest --verbose --watchAll"
+ },
"dependencies": {
"d3": "4.7.4",
- "react": "15.4.2"
+ "react": "^15.5.0"
},
"devDependencies": {
"babel-core": "6.24.0",
+ "babel-jest": "19.0.0",
"babel-loader": "6.4.1",
"babel-plugin-add-module-exports": "0.2.1",
"babel-plugin-react-html-attrs": "2.0.0",
"babel-plugin-transform-class-properties": "6.22.0",
"babel-plugin-transform-decorators-legacy": "1.3.4",
- "babel-preset-es2015": "6.16.0",
- "babel-preset-react": "6.16.0",
+ "babel-preset-es2015": "6.24.1",
+ "babel-preset-react": "6.24.1",
"babel-preset-stage-0": "6.16.0",
- "css-loader": "^0.28.0",
+ "css-loader": "0.28.0",
"documentation": "4.0.0-beta.18",
"eslint": "3.18.0",
"eslint-config-recommended": "1.5.0",
"eslint-plugin-promise": "3.5.0",
"eslint-plugin-standard": "2.1.1",
"html-webpack-plugin": "2.28.0",
+ "jest": "19.0.2",
"npm-run-all": "4.0.2",
- "react-dom": "15.4.2",
+ "react-addons-test-utils": "^15.5.0",
+ "react-dom": "^15.5.0",
"react-jsonschema-form": "0.46.0",
"react-router-dom": "4.0.0",
- "style-loader": "^0.16.1",
+ "react-test-renderer": "^15.5.0",
+ "style-loader": "0.16.1",
"webpack": "2.3.2",
"webpack-dev-server": "2.4.2"
},
+ "engines": {
+ "node": ">=6.9.5"
+ },
"repository": {
"type": "git",
"url": "git+https://github.com/danielcaldas/react-d3-graph.git"
@@ -47,14 +65,5 @@
"social-network-analysis",
"social-network-graph",
"visualization"
- ],
- "scripts": {
- "dev": "node_modules/.bin/webpack-dev-server -d --content-base sandbox --inline --hot --port 3002",
- "dist": "node_modules/.bin/npm-run-all --parallel dist:*",
- "dist:rd3g": "webpack --config webpack.config.dist.js -p --display-modules",
- "dist:sandbox": "webpack --config webpack.config.js -p --display-modules",
- "docs": "node_modules/documentation/bin/documentation.js build src/**/*.js -f html -o docs && node_modules/documentation/bin/documentation.js build src/**/*.js -f md > DOCUMENTATION.md",
- "lint": "node_modules/eslint/bin/eslint.js --config=.eslintrc.js \"src/**/*.js\"",
- "test": "echo \"Error: no test specified\" && exit 1"
- }
+ ]
}
diff --git a/sandbox/Sandbox.js b/sandbox/Sandbox.js
index 7c43ffb51..4de14af8b 100644
--- a/sandbox/Sandbox.js
+++ b/sandbox/Sandbox.js
@@ -93,6 +93,8 @@ export default class Sandbox extends React.Component {
}
resetGraphConfig = () => {
+ const generatedConfig = {};
+
const schemaProps = Utils.generateFormSchema(defaultConfig, '', {});
const schema = {
@@ -102,6 +104,7 @@ export default class Sandbox extends React.Component {
this.setState({
config: defaultConfig,
+ generatedConfig,
schema
});
}
@@ -109,7 +112,7 @@ export default class Sandbox extends React.Component {
render() {
const graphProps = {
id: 'graph',
- data: mock,
+ data: JSON.parse(JSON.stringify(mock)),
config: this.state.config,
onClickNode: this.onClickNode,
onClickLink: this.onClickLink,
@@ -130,7 +133,7 @@ export default class Sandbox extends React.Component {
-
Graph configurations
+
react-d3-graph configurations
);
@@ -156,7 +159,7 @@ export default class Sandbox extends React.Component {
class JSONContainer extends React.Component {
shouldComponentUpdate(nextProps, nextState) {
- return JSON.stringify(nextProps.data) !== JSON.stringify(this.props.data);
+ return !this.props.staticData && !ReactD3GraphUtils.isEqual(nextProps.data, this.props.data);
}
render() {
diff --git a/sandbox/miserables.js b/sandbox/miserables.js
index d0c7f2b90..4528bdd3e 100644
--- a/sandbox/miserables.js
+++ b/sandbox/miserables.js
@@ -1,82 +1,82 @@
export default {
nodes: [
- {id: 'Myriel', group: 1},
- {id: 'Napoleon', group: 1},
- {id: 'Mlle.Baptistine', group: 1},
- {id: 'Mme.Magloire', group: 1},
- {id: 'CountessdeLo', group: 1},
- {id: 'Geborand', group: 1},
- {id: 'Champtercier', group: 1},
- {id: 'Cravatte', group: 1},
- {id: 'Count', group: 1},
- {id: 'OldMan', group: 1},
- {id: 'Labarre', group: 2},
- {id: 'Valjean', group: 2},
- {id: 'Marguerite', group: 3},
- {id: 'Mme.deR', group: 2},
- {id: 'Isabeau', group: 2},
- {id: 'Gervais', group: 2},
- {id: 'Tholomyes', group: 3},
- {id: 'Listolier', group: 3},
- {id: 'Fameuil', group: 3},
- {id: 'Blacheville', group: 3},
- {id: 'Favourite', group: 3},
- {id: 'Dahlia', group: 3},
- {id: 'Zephine', group: 3},
- {id: 'Fantine', group: 3},
- {id: 'Mme.Thenardier', group: 4},
- {id: 'Thenardier', group: 4},
- {id: 'Cosette', group: 5},
- {id: 'Javert', group: 4},
- {id: 'Fauchelevent', group: 0},
- {id: 'Bamatabois', group: 2},
- {id: 'Perpetue', group: 3},
- {id: 'Simplice', group: 2},
- {id: 'Scaufflaire', group: 2},
- {id: 'Woman1', group: 2},
- {id: 'Judge', group: 2},
- {id: 'Champmathieu', group: 2},
- {id: 'Brevet', group: 2},
- {id: 'Chenildieu', group: 2},
- {id: 'Cochepaille', group: 2},
- {id: 'Pontmercy', group: 4},
- {id: 'Boulatruelle', group: 6},
- {id: 'Eponine', group: 4},
- {id: 'Anzelma', group: 4},
- {id: 'Woman2', group: 5},
- {id: 'MotherInnocent', group: 0},
- {id: 'Gribier', group: 0},
- {id: 'Jondrette', group: 7},
- {id: 'Mme.Burgon', group: 7},
- {id: 'Gavroche', group: 8},
- {id: 'Gillenormand', group: 5},
- {id: 'Magnon', group: 5},
- {id: 'Mlle.Gillenormand', group: 5},
- {id: 'Mme.Pontmercy', group: 5},
- {id: 'Mlle.Vaubois', group: 5},
- {id: 'Lt.Gillenormand', group: 5},
- {id: 'Marius', group: 8},
- {id: 'BaronessT', group: 5},
- {id: 'Mabeuf', group: 8},
- {id: 'Enjolras', group: 8},
- {id: 'Combeferre', group: 8},
- {id: 'Prouvaire', group: 8},
- {id: 'Feuilly', group: 8},
- {id: 'Courfeyrac', group: 8},
- {id: 'Bahorel', group: 8},
- {id: 'Bossuet', group: 8},
- {id: 'Joly', group: 8},
- {id: 'Grantaire', group: 8},
- {id: 'MotherPlutarch', group: 9},
- {id: 'Gueulemer', group: 4},
- {id: 'Babet', group: 4},
- {id: 'Claquesous', group: 4},
- {id: 'Montparnasse', group: 4},
- {id: 'Toussaint', group: 5},
- {id: 'Child1', group: 10},
- {id: 'Child2', group: 10},
- {id: 'Brujon', group: 4},
- {id: 'Mme.Hucheloup', group: 8}
+ {id: 'Myriel'},
+ {id: 'Napoleon'},
+ {id: 'Mlle.Baptistine'},
+ {id: 'Mme.Magloire'},
+ {id: 'CountessdeLo'},
+ {id: 'Geborand'},
+ {id: 'Champtercier'},
+ {id: 'Cravatte'},
+ {id: 'Count'},
+ {id: 'OldMan'},
+ {id: 'Labarre'},
+ {id: 'Valjean'},
+ {id: 'Marguerite'},
+ {id: 'Mme.deR'},
+ {id: 'Isabeau'},
+ {id: 'Gervais'},
+ {id: 'Tholomyes'},
+ {id: 'Listolier'},
+ {id: 'Fameuil'},
+ {id: 'Blacheville'},
+ {id: 'Favourite'},
+ {id: 'Dahlia'},
+ {id: 'Zephine'},
+ {id: 'Fantine'},
+ {id: 'Mme.Thenardier'},
+ {id: 'Thenardier'},
+ {id: 'Cosette'},
+ {id: 'Javert'},
+ {id: 'Fauchelevent'},
+ {id: 'Bamatabois'},
+ {id: 'Perpetue'},
+ {id: 'Simplice'},
+ {id: 'Scaufflaire'},
+ {id: 'Woman1'},
+ {id: 'Judge'},
+ {id: 'Champmathieu'},
+ {id: 'Brevet'},
+ {id: 'Chenildieu'},
+ {id: 'Cochepaille'},
+ {id: 'Pontmercy'},
+ {id: 'Boulatruelle'},
+ {id: 'Eponine'},
+ {id: 'Anzelma'},
+ {id: 'Woman2'},
+ {id: 'MotherInnocent'},
+ {id: 'Gribier'},
+ {id: 'Jondrette'},
+ {id: 'Mme.Burgon'},
+ {id: 'Gavroche'},
+ {id: 'Gillenormand'},
+ {id: 'Magnon'},
+ {id: 'Mlle.Gillenormand'},
+ {id: 'Mme.Pontmercy'},
+ {id: 'Mlle.Vaubois'},
+ {id: 'Lt.Gillenormand'},
+ {id: 'Marius'},
+ {id: 'BaronessT'},
+ {id: 'Mabeuf'},
+ {id: 'Enjolras'},
+ {id: 'Combeferre'},
+ {id: 'Prouvaire'},
+ {id: 'Feuilly'},
+ {id: 'Courfeyrac'},
+ {id: 'Bahorel'},
+ {id: 'Bossuet'},
+ {id: 'Joly'},
+ {id: 'Grantaire'},
+ {id: 'MotherPlutarch'},
+ {id: 'Gueulemer'},
+ {id: 'Babet'},
+ {id: 'Claquesous'},
+ {id: 'Montparnasse'},
+ {id: 'Toussaint'},
+ {id: 'Child1'},
+ {id: 'Child2'},
+ {id: 'Brujon'},
+ {id: 'Mme.Hucheloup'}
],
links: [
{source: 'Napoleon', target: 'Myriel', value: 1},
diff --git a/src/components/Graph/helper.js b/src/components/Graph/helper.js
index 2051f0640..c90fad318 100644
--- a/src/components/Graph/helper.js
+++ b/src/components/Graph/helper.js
@@ -7,26 +7,78 @@ import CONST from './const';
import Link from '../Link/';
import Node from '../Node/';
-function buildGraph(nodes, nodeCallbacks, links, linkCallbacks, config, someNodeHighlighted) {
- let linksComponents = [];
- let nodesComponents = [];
+function _buildLinkProps(source, target, nodes, links, config, linkCallbacks, someNodeHighlighted) {
+ const x1 = nodes[source] && nodes[source].x || '0';
+ const y1 = nodes[source] && nodes[source].y || '0';
+ const x2 = nodes[target] && nodes[target].x || '0';
+ const y2 = nodes[target] && nodes[target].y || '0';
+
+ let opacity = config.link.opacity;
- for (let node of Object.values(nodes)) {
- const props = buildNodeProps(node, config, nodeCallbacks, someNodeHighlighted);
+ if (someNodeHighlighted) {
+ opacity = (nodes[source].highlighted && nodes[target].highlighted) ? config.link.opacity
+ : config.highlightOpacity;
+ }
- nodesComponents.push();
+ let stroke = config.link.color;
- linksComponents = linksComponents.concat(buildNodeLinks(node, nodes, links, config, linkCallbacks, someNodeHighlighted));
+ if (nodes[source].highlighted && nodes[target].highlighted) {
+ stroke = config.link.highlightColor === CONST.KEYWORDS.SAME ? config.link.color
+ : config.link.highlightColor;
+ }
+
+ const linkValue = links[source][target] || links[target][source];
+
+ let strokeWidth = config.link.strokeWidth;
+
+ if (config.link.semanticStrokeWidth) {
+ strokeWidth += (linkValue * strokeWidth) / 10;
}
return {
- nodes: nodesComponents,
- links: linksComponents
+ source,
+ target,
+ x1,
+ y1,
+ x2,
+ y2,
+ strokeWidth,
+ stroke,
+ className: CONST.LINK_CLASS_NAME,
+ opacity,
+ onClickLink: linkCallbacks.onClickLink
};
}
-function buildNodeProps(node, config, nodeCallbacks, someNodeHighlighted) {
- const opacity = someNodeHighlighted ? (node.highlighted ? config.node.opacity : config.highlightOpacity) : config.node.opacity;
+function _buildNodeLinks(nodeId, nodes, links, config, linkCallbacks, someNodeHighlighted) {
+ let linksComponents = [];
+
+ if (links[nodeId]) {
+ const adjacents = Object.keys(links[nodeId]);
+ const n = adjacents.length;
+
+ for (let j=0; j < n; j++) {
+ const source = nodeId;
+ const target = adjacents[j];
+
+ if (nodes[target]) {
+ const key = `${nodeId}${CONST.COORDS_SEPARATOR}${target}`;
+ const props = _buildLinkProps(source, target, nodes, links, config, linkCallbacks, someNodeHighlighted);
+
+ linksComponents.push();
+ }
+ }
+ }
+
+ return linksComponents;
+}
+
+function _buildNodeProps(node, config, nodeCallbacks, someNodeHighlighted) {
+ let opacity = config.node.opacity;
+
+ if (someNodeHighlighted) {
+ opacity = node.highlighted ? config.node.opacity : config.highlightOpacity;
+ }
let fill = node.color || config.node.color;
@@ -56,57 +108,23 @@ function buildNodeProps(node, config, nodeCallbacks, someNodeHighlighted) {
};
}
-function buildNodeLinks(node, nodes, links, config, linkCallbacks, someNodeHighlighted) {
+function buildGraph(nodes, nodeCallbacks, links, linkCallbacks, config, someNodeHighlighted) {
let linksComponents = [];
+ let nodesComponents = [];
- if (links[node.id]) {
- const x1 = node && node.x || '0';
- const y1 = node && node.y || '0';
-
- const adjacents = Object.keys(links[node.id]);
- const n = adjacents.length;
-
- for (let j=0; j < n; j++) {
- const target = adjacents[j];
-
- if (nodes[target]) {
- const key = `${node.id}${CONST.COORDS_SEPARATOR}${target}`;
- const props = buildLinkProps(node.id, target, x1, y1, nodes, links, config, linkCallbacks, someNodeHighlighted);
-
- linksComponents.push();
- }
- }
- }
-
- return linksComponents;
-}
-
-function buildLinkProps(source, target, x1, y1, nodes, links, config, linkCallbacks, someNodeHighlighted) {
- const opacity = someNodeHighlighted ? (nodes[source].highlighted && nodes[target].highlighted) ? config.link.opacity : config.highlightOpacity : config.link.opacity;
-
- const stroke = (nodes[source].highlighted && nodes[target].highlighted) ?
- (config.link.highlightColor === CONST.KEYWORDS.SAME ? config.link.color : config.link.highlightColor)
- : config.link.color;
+ for (let nodeId in nodes) {
+ const props = _buildNodeProps(nodes[nodeId], config, nodeCallbacks, someNodeHighlighted);
- const linkValue = links[source][target] || links[target][source];
- let strokeWidth = config.link.strokeWidth;
+ nodesComponents.push();
- if (config.link.semanticStrokeWidth) {
- strokeWidth += (linkValue * strokeWidth) / 10;
+ linksComponents = linksComponents.concat(
+ _buildNodeLinks(nodeId, nodes, links, config, linkCallbacks, someNodeHighlighted)
+ );
}
return {
- source,
- target,
- x1,
- y1,
- x2: nodes[target] && nodes[target].x || '0',
- y2: nodes[target] && nodes[target].y || '0',
- strokeWidth,
- stroke,
- className: CONST.LINK_CLASS_NAME,
- opacity,
- onClickLink: linkCallbacks.onClickLink
+ nodes: nodesComponents,
+ links: linksComponents
};
}
@@ -122,6 +140,25 @@ function createForceSimulation(width, height) {
return simulation;
}
+function initializeLinks(graphLinks) {
+ let links = {};
+
+ graphLinks.forEach(l => {
+ if (!links[l.source]) {
+ links[l.source] = {};
+ }
+
+ if (!links[l.target]) {
+ links[l.target] = {};
+ }
+
+ // @TODO: If the graph is directed this should be adapted
+ links[l.source][l.target] = links[l.target][l.source] = l.value || 1;
+ });
+
+ return links;
+}
+
function initializeNodes(graphNodes) {
let nodes = {};
let indexMapping = {};
@@ -144,25 +181,6 @@ function initializeNodes(graphNodes) {
};
}
-function initializeLinks(graphLinks) {
- let links = {};
-
- graphLinks.forEach(l => {
- if (!links[l.source]) {
- links[l.source] = {};
- }
-
- if (!links[l.target]) {
- links[l.target] = {};
- }
-
- // @TODO: If the graph is directed this should not happen
- links[l.source][l.target] = links[l.target][l.source] = l.value || 1;
- });
-
- return links;
-}
-
export default {
buildGraph,
createForceSimulation,
diff --git a/src/components/Graph/index.js b/src/components/Graph/index.js
index 52b88fc73..986e26a69 100644
--- a/src/components/Graph/index.js
+++ b/src/components/Graph/index.js
@@ -40,7 +40,7 @@ export default class Graph extends React.Component {
componentWillReceiveProps(nextProps) {
const config = Utils.merge(DEFAULT_CONFIG, nextProps.config || {});
- if (JSON.stringify(config) !== JSON.stringify(this.state.config)) {
+ if (Utils.isEqual(this.state.config, config) === false) {
this.setState({
config
});
@@ -80,9 +80,9 @@ export default class Graph extends React.Component {
this.state.config.staticGraph && this.simulation.stop();
}
- _zoomConfig = () => {
- d3.select(`#${this.props.id}-${CONST.GRAPH_WRAPPER_ID}`).call(d3.zoom().scaleExtent([this.state.config.minZoom, this.state.config.maxZoom]).on('zoom', this._zoomed));
- }
+ _zoomConfig = () => d3.select(`#${this.props.id}-${CONST.GRAPH_WRAPPER_ID}`)
+ .call(d3.zoom().scaleExtent([this.state.config.minZoom, this.state.config.maxZoom])
+ .on('zoom', this._zoomed));
_tick = () => this.setState(this.state || {});
@@ -146,12 +146,14 @@ export default class Graph extends React.Component {
resetNodesPositions = () => {
if (!this.state.config.staticGraph) {
- Object.values(this.state.nodes).forEach(node => {
+ for (let nodeId in this.state.nodes) {
+ let node = this.state.nodes[nodeId];
+
if (node.fx && node.fy) {
Reflect.deleteProperty(node, 'fx');
Reflect.deleteProperty(node, 'fy');
}
- });
+ }
// @TODO: hardcoded alpha target
this.simulation.alphaTarget(0.08).restart();
@@ -173,7 +175,11 @@ export default class Graph extends React.Component {
render() {
const { nodes, links } = GraphHelper.buildGraph(
this.state.nodes,
- { onClickNode: this.props.onClickNode, onMouseOverNode: this.onMouseOverNode, onMouseOut: this.onMouseOutNode},
+ {
+ onClickNode: this.props.onClickNode,
+ onMouseOverNode: this.onMouseOverNode,
+ onMouseOut: this.onMouseOutNode
+ },
this.state.links,
{ onClickLink: this.props.onClickLink },
this.state.config,
diff --git a/src/components/Link/index.js b/src/components/Link/index.js
index 4a27485d9..7f775df1a 100644
--- a/src/components/Link/index.js
+++ b/src/components/Link/index.js
@@ -1,16 +1,14 @@
import React from 'react';
export default class Link extends React.Component {
- constructor(props) {
- super(props);
- }
-
+ // Properties more likely to mutate are evaluated first to take advantage of short-circuit evaluation
shouldComponentUpdate(nextProps) {
return nextProps.x1 !== this.props.x1 || nextProps.y1 !== this.props.y1
|| nextProps.x2 !== this.props.x2 || nextProps.y2 !== this.props.y2
|| nextProps.opacity !== this.props.opacity
|| nextProps.stroke !== this.props.stroke
|| nextProps.strokeWidth !== this.props.strokeWidth
+ || nextProps.color !== this.props.color
|| nextProps.semanticStrokeWidth !== this.props.semanticStrokeWidth;
}
diff --git a/src/components/Node/index.js b/src/components/Node/index.js
index e85c27df1..153e21343 100644
--- a/src/components/Node/index.js
+++ b/src/components/Node/index.js
@@ -5,10 +5,7 @@ import CONST from './const';
import NodeHelper from './helper';
export default class Node extends React.Component {
- constructor(props) {
- super(props);
- }
-
+ // Properties more likely to mutate are evaluated first to take advantage of short-circuit evaluation
shouldComponentUpdate(nextProps) {
return nextProps.cx !== this.props.cx || nextProps.cy !== this.props.cy
|| nextProps.opacity !== this.props.opacity
@@ -40,7 +37,7 @@ export default class Node extends React.Component {
* Handle mouse out node event.
* @return {undefined}
*/
- handleOnMouseOut = () => this.props.onMouseOut && this.props.onMouseOut(this.props.id);
+ handleOnMouseOutNode = () => this.props.onMouseOut && this.props.onMouseOut(this.props.id);
render() {
const gProps = {
@@ -56,7 +53,7 @@ export default class Node extends React.Component {
d: NodeHelper.buildSvgSymbol(this.props.size, this.props.type),
fill: this.props.fill,
onClick: this.handleOnClickNode,
- onMouseOut: this.handleOnMouseOut,
+ onMouseOut: this.handleOnMouseOutNode,
onMouseOver: this.handleOnMouseOverNode,
opacity: this.props.opacity,
stroke: this.props.stroke,
diff --git a/src/utils.js b/src/utils.js
index 4ed07109c..fadaf2d4d 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -1,26 +1,95 @@
-const MAX_DEPTH = 3;
+// This variable assures that recursive methods such as merge and isEqual do not fall on
+// circular JSON structure evaluation.
+const MAX_DEPTH = 5;
+
+/**
+ * Checks whether a certain object property is from object type and is a non empty object.
+ * @param {Object} o - the object.
+ * @param {number|string} k - the object property.
+ * @return {boolean} returns true if o[k] is an non empty object.
+ */
+function _isPropertyNestedObject(o, k) {
+ return o.hasOwnProperty(k) && typeof o[k] === 'object' && o[k] !== null && !isObjectEmpty(o[k]);
+}
+
+/**
+ * Generic deep comparison between javascript simple or complex objects.
+ * @param {Object} o1 - one of the objects to be compared.
+ * @param {Object} o2 - second object to compare with first.
+ * @param {number} [_depth=0] - this parameter serves only for internal usage.
+ * @return {boolean} returns true if o1 and o2 have exactly the same content, or are exactly the same object (reference).
+ */
+function isEqual(o1, o2, _depth=0) {
+ let diffs = [];
+
+ if (_depth === 0 && o1 === o2) {
+ return true;
+ }
+
+ if (isObjectEmpty(o1) && !isObjectEmpty(o2) || !isObjectEmpty(o1) && isObjectEmpty(o2)) {
+ return false;
+ }
+
+ for (let k of Object.keys(o1)) {
+ const nestedO = _isPropertyNestedObject(o1, k) && _isPropertyNestedObject(o2, k);
+
+ if (nestedO && _depth < MAX_DEPTH) {
+ diffs.push(isEqual(o1[k], o2[k], _depth + 1));
+ } else {
+ const r = isObjectEmpty(o1[k]) && isObjectEmpty(o2[k]) || o2.hasOwnProperty(k) && o2[k] === o1[k];
+
+ diffs.push(r);
+
+ if (!r) {
+ break;
+ }
+ }
+ }
+
+ return diffs.indexOf(false) === -1;
+}
+
+/**
+ * Checks whether or not a certain object is empty.
+ * NOTE: If the passed parameter is not an object the method return false.
+ * @param {Object} o - object whom emptiness we want to check.
+ * @return {boolean} true if the given object is n ft and object and is empty.
+ */
+function isObjectEmpty(o) {
+ return !!o && typeof o === 'object' && !Object.keys(o).length;
+}
/**
* This function merges two objects o1 and o2, where o2 properties override existent o1 properties, and
* if o2 doesn't posses some o1 property the function will fallback to the o1 property.
- * @param {Object} o1 - object.
- * @param {Object} o2 - object that will override o1 properties.
- * @param {int} deepth - the deepth at which we are merging the object.
- * @return {Object} Object that is the result of merging o1 and o2, being o2 properties prioritray overriding
+ * @param {Object} o1 - object.
+ * @param {Object} o2 - object that will override o1 properties.
+ * @param {int} depth - the depth at which we are merging the object.
+ * @return {Object} object that is the result of merging o1 and o2, being o2 properties priority overriding
* existent o1 properties.
*/
-function merge(o1, o2, deepth=0) {
+function merge(o1={}, o2={}, _depth=0) {
let o = {};
for (let k of Object.keys(o1)) {
- const nestedO = o2[k] && typeof o2[k] === 'object' && typeof o1[k] === 'object' && deepth < MAX_DEPTH;
+ const nestedO = o2[k] && typeof o2[k] === 'object' && typeof o1[k] === 'object' && _depth < MAX_DEPTH;
- o[k] = nestedO ? merge(o1[k], o2[k], deepth + 1) : o2.hasOwnProperty(k) ? o2[k] : o1[k];
+ if (nestedO) {
+ o[k] = merge(o1[k], o2[k], _depth + 1);
+ } else {
+ o[k] = o2.hasOwnProperty(k) ? o2[k] : o1[k];
+ }
}
return o;
}
+/**
+ * Helper function for customized error logging.
+ * @param {string} component - the name of the component where the error is to be thrown.
+ * @param {string} msg - the message contain a more detailed explanation about the error.
+ * @return {Error} the thrown error.
+ */
function throwErr(component, msg) {
const error = `react-d3-graph :: ${component} :: ${msg}`;
@@ -28,6 +97,8 @@ function throwErr(component, msg) {
}
export default {
+ isEqual,
+ isObjectEmpty,
merge,
throwErr
};
diff --git a/test/Graph.test.js b/test/Graph.test.js
new file mode 100644
index 000000000..666eeb8b6
--- /dev/null
+++ b/test/Graph.test.js
@@ -0,0 +1,101 @@
+import React from 'react';
+import renderer from 'react-test-renderer';
+
+import Graph from '../src/components/Graph';
+import graphMock from './graph.mock.js'
+
+describe('Graph Component', () => {
+ let that = {};
+
+ that.nodeColor = 'red';
+ that.highlightColor = 'blue';
+ that.svgSize = 600;
+ that.highlightOpacity = 0.1;
+ that.config = {
+ height: that.svgSize,
+ width: that.svgSize,
+ highlightBehavior: true,
+ highlightOpacity: that.highlightOpacity,
+ staticGraph: true,
+ node: {
+ color: that.nodeColor,
+ highlightColor: that.highlightColor,
+ size: 100
+ },
+ link: {
+ highlightColor: that.highlightColor
+ }
+ };
+ that.mouseOverNodeCallback = jest.fn();
+
+ beforeEach(() => {
+ that.graph = renderer.create(
+
+ );
+
+ that.tree = that.graph.toJSON();
+ });
+
+ test('should be properly rendered', () => {
+ expect(that.tree).toMatchSnapshot();
+ });
+
+ describe('when onMouseOverNode is called', () => {
+ const nodeOffset = 1;
+ const nodeAdjOffset = 2;
+ const nodeNotAdjOffset = 10;
+
+ test('should call mouseOverNode callback', () => {
+ const linksNodes = that.tree.children[0].children[0].children;
+ const node = linksNodes[linksNodes.length - 1];
+
+ node.children[0].props.onMouseOver();
+
+ expect(that.mouseOverNodeCallback).toBeCalled();
+ });
+
+ test('node and their adjacent should have opacity equal to 1 and color (fill) equal to that.highlightColor', () => {
+ let linksNodes = that.tree.children[0].children[0].children;
+ let node = linksNodes[linksNodes.length - nodeOffset];
+
+ node.children[0].props.onMouseOver();
+
+ let tree = that.graph.toJSON(); // re-render
+
+ linksNodes = tree.children[0].children[0].children;
+
+ // Mouse overed node
+ node = linksNodes[linksNodes.length - nodeOffset];
+
+ let props = node.children[0].props;
+
+ expect(props.fill).toEqual(that.highlightColor);
+ expect(props.opacity).toEqual(1);
+
+ // Some adjacent node
+ node = linksNodes[linksNodes.length - nodeAdjOffset];
+
+ props = node.children[0].props;
+
+ expect(props.fill).toEqual(that.highlightColor);
+ expect(props.opacity).toEqual(1);
+ });
+
+ test('non selected node and non adjacent should have opacity equal to that.highlightOpacity and color equal to that.nodeColor', () => {
+ let linksNodes = that.tree.children[0].children[0].children;
+ let node = linksNodes[linksNodes.length - nodeOffset];
+
+ node.children[0].props.onMouseOver();
+
+ let tree = that.graph.toJSON(); // re-render
+
+ linksNodes = tree.children[0].children[0].children;
+ node = linksNodes[linksNodes.length - nodeNotAdjOffset];
+
+ const props = node.children[0].props;
+
+ expect(props.fill).toEqual(that.nodeColor);
+ expect(props.opacity).toEqual(that.highlightOpacity);
+ });
+ });
+});
diff --git a/test/Link.test.js b/test/Link.test.js
new file mode 100644
index 000000000..559b930ba
--- /dev/null
+++ b/test/Link.test.js
@@ -0,0 +1,27 @@
+import React from 'react';
+import renderer from 'react-test-renderer';
+
+import Link from '../src/components/Link';
+
+describe('Link Component', () => {
+ let that = {};
+
+ beforeEach(() => {
+ that.callbackMock = jest.fn();
+
+ that.link = renderer.create(
+
+ );
+
+ that.tree = that.link.toJSON();
+ });
+
+ test('should be properly rendered', () => {
+ expect(that.tree).toMatchSnapshot();
+ });
+
+ test('should call callback function when onClick is performed', () => {
+ that.tree.props.onClick();
+ expect(that.callbackMock).toBeCalled();
+ });
+});
diff --git a/test/Node.test.js b/test/Node.test.js
new file mode 100644
index 000000000..71f258e04
--- /dev/null
+++ b/test/Node.test.js
@@ -0,0 +1,48 @@
+import React from 'react';
+import renderer from 'react-test-renderer';
+
+import Node from '../src/components/Node';
+
+describe('Node Component', () => {
+ let that = {};
+
+ beforeEach(() => {
+ that.clickCallback = jest.fn();
+ that.mouseOverCallback = jest.fn();
+ that.mouseOutCallback = jest.fn();
+
+ that.node = renderer.create(
+
+ );
+
+ that.tree = that.node.toJSON();
+ });
+
+ test('should be properly rendered', () => {
+ expect(that.tree).toMatchSnapshot();
+ });
+
+ test('should call callback function when onClick is called', () => {
+ that.tree.children[0].props.onClick();
+ expect(that.clickCallback).toBeCalled();
+ });
+
+ test('should call callback function when onMouseOut is called', () => {
+ that.tree.children[0].props.onMouseOver();
+ expect(that.mouseOverCallback).toBeCalled();
+ });
+
+ test('should call callback function when onMouseOver is called', () => {
+ that.tree.children[0].props.onMouseOut();
+ expect(that.mouseOutCallback).toBeCalled();
+ });
+});
diff --git a/test/__snapshots__/Graph.test.js.snap b/test/__snapshots__/Graph.test.js.snap
new file mode 100644
index 000000000..ebd34c92d
--- /dev/null
+++ b/test/__snapshots__/Graph.test.js.snap
@@ -0,0 +1,1151 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Graph Component should be properly rendered 1`] = `
+
+
+
+`;
diff --git a/test/__snapshots__/Link.test.js.snap b/test/__snapshots__/Link.test.js.snap
new file mode 100644
index 000000000..a4f7ca15e
--- /dev/null
+++ b/test/__snapshots__/Link.test.js.snap
@@ -0,0 +1,19 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Link Component should be properly rendered 1`] = `
+
+`;
diff --git a/test/__snapshots__/Node.test.js.snap b/test/__snapshots__/Node.test.js.snap
new file mode 100644
index 000000000..fe74ec5de
--- /dev/null
+++ b/test/__snapshots__/Node.test.js.snap
@@ -0,0 +1,32 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Node Component should be properly rendered 1`] = `
+
+
+
+ text
+
+
+`;
diff --git a/test/graph.mock.js b/test/graph.mock.js
new file mode 100644
index 000000000..725eebdc9
--- /dev/null
+++ b/test/graph.mock.js
@@ -0,0 +1,196 @@
+export default {
+ nodes: [{
+ id: 'Harry',
+ x: '40',
+ y: '200'
+ }, {
+ id: 'Sally',
+ x: '140',
+ y: '20'
+ }, {
+ id: 'Mario',
+ x: '20',
+ y: '110'
+ }, {
+ id: 'Sarah',
+ x: '30',
+ y: '184'
+ }, {
+ id: 'Alice',
+ x: '305',
+ y: '745'
+ }, {
+ id: 'Eveie',
+ x: '200',
+ y: '300'
+ }, {
+ id: 'Peter',
+ x: '120',
+ y: '270'
+ }, {
+ id: 'James',
+ x: '190',
+ y: '609'
+ }, {
+ id: 'Carol',
+ x: '101',
+ y: '201'
+ }, {
+ id: 'Nicky',
+ x: '2',
+ y: '200'
+ }, {
+ id: 'Bobby',
+ x: '404',
+ y: '404'
+ }, {
+ id: 'Frank',
+ x: '14',
+ y: '30'
+ }, {
+ id: 'Lynne',
+ x: '14',
+ y: '250'
+ }, {
+ id: 'Roger',
+ x: '14',
+ y: '259'
+ }, {
+ id: 'Maddy',
+ x: '409',
+ y: '500'
+ }, {
+ id: 'Sonny',
+ x: '520',
+ y: '123'
+ }, {
+ id: 'Johan',
+ x: '14',
+ y: '20'
+ }, {
+ id: 'Henry',
+ x: '20',
+ y: '1'
+ }, {
+ id: 'Mikey',
+ x: '90',
+ y: '90'
+ }, {
+ id: 'Elric',
+ x: '90',
+ y: '656'
+ }],
+ links: [{
+ source: 'Harry',
+ target: 'Sally',
+ value: '1.2'
+ }, {
+ source: 'Harry',
+ target: 'Mario',
+ value: '1.3'
+ }, {
+ source: 'Sarah',
+ target: 'Alice',
+ value: '0.2'
+ }, {
+ source: 'Eveie',
+ target: 'Alice',
+ value: '0.5'
+ }, {
+ source: 'Peter',
+ target: 'Alice',
+ value: '1.6'
+ }, {
+ source: 'Mario',
+ target: 'Alice',
+ value: '0.4'
+ }, {
+ source: 'James',
+ target: 'Alice',
+ value: '0.6'
+ }, {
+ source: 'Harry',
+ target: 'Carol',
+ value: '0.7'
+ }, {
+ source: 'Harry',
+ target: 'Nicky',
+ value: '0.8'
+ }, {
+ source: 'Bobby',
+ target: 'Frank',
+ value: '0.8'
+ }, {
+ source: 'Alice',
+ target: 'Mario',
+ value: '0.7'
+ }, {
+ source: 'Harry',
+ target: 'Lynne',
+ value: '0.5'
+ }, {
+ source: 'Sarah',
+ target: 'James',
+ value: '1.9'
+ }, {
+ source: 'Roger',
+ target: 'James',
+ value: '1.1'
+ }, {
+ source: 'Maddy',
+ target: 'James',
+ value: '0.3'
+ }, {
+ source: 'Sonny',
+ target: 'Roger',
+ value: '0.5'
+ }, {
+ source: 'James',
+ target: 'Roger',
+ value: '1.5'
+ }, {
+ source: 'Alice',
+ target: 'Peter',
+ value: '1.1'
+ }, {
+ source: 'Johan',
+ target: 'Peter',
+ value: '1.6'
+ }, {
+ source: 'Alice',
+ target: 'Eveie',
+ value: '0.5'
+ }, {
+ source: 'Harry',
+ target: 'Eveie',
+ value: '0.1'
+ }, {
+ source: 'Eveie',
+ target: 'Harry',
+ value: '2.0'
+ }, {
+ source: 'Henry',
+ target: 'Mikey',
+ value: '0.4'
+ }, {
+ source: 'Elric',
+ target: 'Mikey',
+ value: '0.6'
+ }, {
+ source: 'James',
+ target: 'Sarah',
+ value: '1.5'
+ }, {
+ source: 'Alice',
+ target: 'Sarah',
+ value: '0.6'
+ }, {
+ source: 'James',
+ target: 'Maddy',
+ value: '0.5'
+ }, {
+ source: 'Peter',
+ target: 'Johan',
+ value: '0.7'
+ }]
+};
diff --git a/test/utils.test.js b/test/utils.test.js
new file mode 100644
index 000000000..8f5d56cbe
--- /dev/null
+++ b/test/utils.test.js
@@ -0,0 +1,152 @@
+import Utils from '../src/utils';
+
+describe('Utils', () => {
+ describe('merge', () => {
+ let that = {};
+
+ beforeEach(() => {
+ that.o = {
+ a:1,
+ b:{
+ c:{ d: false, e: 'test', f: 12 },
+ j: {
+ k: null,
+ l: 'test',
+ }
+ }
+ };
+ });
+
+ test('should merge properly: r.a should be 2 and r.b.c.d should true', () => {
+ const r = Utils.merge(that.o, { a:2, b: { c: { d: true } } });
+
+ expect(r.a).toEqual(2);
+ expect(r.b.c.d).toEqual(true);
+ expect(r.b.c.e).toEqual('test');
+ expect(r.b.c.f).toEqual(12);
+ });
+
+ test('should merge properly: o2 is undefined', () => {
+ const r = Utils.merge(that.o, undefined);
+
+ expect(r.a).toEqual(1);
+ expect(r.b.c.d).toEqual(false);
+ expect(r.b.c.e).toEqual('test');
+ expect(r.b.c.f).toEqual(12);
+ });
+ });
+
+ test('isObjectEmpty', () => {
+ expect(Utils.isObjectEmpty({ a: 1, b: {}})).toEqual(false);
+ expect(Utils.isObjectEmpty({ a: 1 })).toEqual(false);
+ expect(Utils.isObjectEmpty(null)).toEqual(false);
+ expect(Utils.isObjectEmpty(undefined)).toEqual(false);
+ expect(Utils.isObjectEmpty(0)).toEqual(false);
+ expect(Utils.isObjectEmpty('test')).toEqual(false);
+ expect(Utils.isObjectEmpty({})).toEqual(true);
+ });
+
+ describe('isEqual', () => {
+ let that = {};
+
+ beforeEach(() => {
+ that.o1 = {
+ a:1,
+ b:{
+ c:{ d: false, e: 'test', f: 12 },
+ g: 'test',
+ h: undefined,
+ i: {},
+ j: {
+ k: null,
+ l: 'test',
+ m: {
+ n: {
+ o: 1
+ }
+ }
+ }
+ }
+ };
+
+ that.o2 = {
+ a:1,
+ b:{
+ c:{ d: false, e: 'test', f: 12 },
+ g: 'test',
+ h: undefined,
+ i: {},
+ j: {
+ k: null,
+ l: 'test',
+ m: {
+ n: {
+ o: 1
+ }
+ }
+ }
+ }
+ };
+ });
+
+ test('should return true if no modifications are performed', () => {
+ expect(Utils.isEqual(that.o1, that.o2)).toEqual(true);
+ });
+
+ test('should return false when o2 is an empty object but o1 is not', () => {
+ expect(Utils.isEqual(that.o1, {})).toEqual(false);
+ });
+
+ test('should return false when o1 is an empty object but o2 is not', () => {
+ expect(Utils.isEqual({}, that.o2)).toEqual(false);
+ });
+
+ test('should return true when both objects are empty', () => {
+ expect(Utils.isEqual({}, {})).toEqual(true);
+ });
+
+ test('should return false when: o2.b.j.k = undefined', () => {
+ that.o2.b.j.k = undefined;
+ expect(Utils.isEqual(that.o1, that.o2)).toEqual(false);
+ });
+
+ test('should return false when: o2.b.j.m.n.o = "1"', () => {
+ that.o2.b.j.m.n.o = '1';
+ expect(Utils.isEqual(that.o1, that.o2)).toEqual(false);
+ });
+
+ test('should return false when: o2.b.c.e = "tests"', () => {
+ that.o2.b.c.e = 'tests';
+ expect(Utils.isEqual(that.o1, that.o2)).toEqual(false);
+ });
+
+ test('should return false when: o1.b.i = false', () => {
+ that.o1.b.i = false;
+ expect(Utils.isEqual(that.o1, that.o2)).toEqual(false);
+ });
+
+ test('should return false when: o1.a = false', () => {
+ that.o1.a = false;
+ expect(Utils.isEqual(that.o1, that.o2)).toEqual(false);
+ });
+
+ test('should return false when: o2.b.g = "tests"', () => {
+ that.o2.b.g = 'tests';
+ expect(Utils.isEqual(that.o1, that.o2)).toEqual(false);
+ });
+
+ test('should return true when: o1.b.g = o2.b and o2.b.g = o2.b (circular structure)', () => {
+ // isEqual will evaluate until certain depth
+ // but since objects still the same we expect the result to be true
+ that.o1.b.g = that.o2.b;
+ that.o2.b.g = that.o2.b;
+ expect(Utils.isEqual(that.o1, that.o2)).toEqual(true);
+ });
+
+ test('should return true when: o1.b.g = o2.b and o2.b.g = o2 (circular structure)', () => {
+ that.o1.b.g = that.o2.b;
+ that.o2.b.g = that.o2;
+ expect(Utils.isEqual(that.o1, that.o2)).toEqual(false);
+ });
+ });
+});
diff --git a/webpack.config.dist.js b/webpack.config.dist.js
index 3c1f91fc0..ebe31eff5 100644
--- a/webpack.config.dist.js
+++ b/webpack.config.dist.js
@@ -19,7 +19,7 @@ module.exports = {
loader: 'babel-loader',
options: {
presets: ['react', 'es2015', 'stage-0'],
- plugins: ['react-html-attrs', 'transform-class-properties', 'transform-decorators-legacy'],
+ plugins: ['react-html-attrs'],
}
}
]
diff --git a/webpack.config.js b/webpack.config.js
index 56da480b6..615dbc2a9 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -21,10 +21,9 @@ module.exports = {
loader: 'babel-loader',
options: {
presets: ['react', 'es2015', 'stage-0'],
- plugins: ['react-html-attrs', 'transform-class-properties', 'transform-decorators-legacy'],
+ plugins: ['react-html-attrs'],
}
}
]
- },
- plugins: []
+ }
};
diff --git a/yarn.lock b/yarn.lock
index 903291684..9b6e5ca4b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9,6 +9,10 @@ JSONStream@^1.0.3:
jsonparse "^1.2.0"
through ">=2.2.7 <3"
+abab@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
+
abbrev@1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
@@ -26,6 +30,12 @@ acorn-dynamic-import@^2.0.0:
dependencies:
acorn "^4.0.3"
+acorn-globals@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
+ dependencies:
+ acorn "^4.0.4"
+
acorn-jsx@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
@@ -49,8 +59,8 @@ ajv-keywords@^1.0.0, ajv-keywords@^1.1.1:
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
ajv@^4.7.0, ajv@^4.9.1:
- version "4.11.6"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.6.tgz#947e93049790942b2a2d60a8289b28924d39f987"
+ version "4.11.7"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48"
dependencies:
co "^4.6.0"
json-stable-stringify "^1.0.1"
@@ -67,7 +77,11 @@ alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
-ansi-escapes@^1.1.0:
+amdefine@>=0.0.4:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+
+ansi-escapes@^1.1.0, ansi-escapes@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
@@ -87,6 +101,12 @@ ansi-styles@^2.0.1, ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ansi-styles@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.0.0.tgz#5404e93a544c4fec7f048262977bebfe3155e0c1"
+ dependencies:
+ color-convert "^1.0.0"
+
anymatch@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
@@ -94,6 +114,12 @@ anymatch@^1.3.0:
arrify "^1.0.0"
micromatch "^2.1.5"
+append-transform@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
+ dependencies:
+ default-require-extensions "^1.0.0"
+
aproba@^1.0.3:
version "1.1.1"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab"
@@ -118,8 +144,12 @@ arr-diff@^2.0.0:
arr-flatten "^1.0.1"
arr-flatten@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1"
+
+array-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
array-filter@~0.0.0:
version "0.0.1"
@@ -157,7 +187,7 @@ array-unique@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
-arrify@^1.0.0:
+arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -195,11 +225,11 @@ async-each@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
-async@^1.5.2:
+async@^1.4.0, async@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-async@^2.1.2:
+async@^2.1.2, async@^2.1.4:
version "2.3.0"
resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9"
dependencies:
@@ -236,7 +266,7 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
esutils "^2.0.2"
js-tokens "^3.0.0"
-babel-core@6.24.0, babel-core@^6.17.0:
+babel-core@6.24.0, babel-core@^6.0.0, babel-core@^6.17.0:
version "6.24.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.0.tgz#8f36a0a77f5c155aed6f920b844d23ba56742a02"
dependencies:
@@ -306,7 +336,7 @@ babel-generator@6.19.0:
lodash "^4.2.0"
source-map "^0.5.0"
-babel-generator@^6.24.0, babel-generator@^6.24.1:
+babel-generator@^6.18.0, babel-generator@^6.24.0, babel-generator@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497"
dependencies:
@@ -445,6 +475,14 @@ babel-helpers@^6.23.0, babel-helpers@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
+babel-jest@19.0.0, babel-jest@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-19.0.0.tgz#59323ced99a3a84d359da219ca881074ffc6ce3f"
+ dependencies:
+ babel-core "^6.0.0"
+ babel-plugin-istanbul "^4.0.0"
+ babel-preset-jest "^19.0.0"
+
babel-loader@6.4.1:
version "6.4.1"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca"
@@ -464,12 +502,24 @@ babel-plugin-add-module-exports@0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25"
-babel-plugin-check-es2015-constants@^6.3.13:
+babel-plugin-check-es2015-constants@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
dependencies:
babel-runtime "^6.22.0"
+babel-plugin-istanbul@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.1.tgz#c12de0fc6fe42adfb16be56f1ad11e4a9782eca9"
+ dependencies:
+ find-up "^2.1.0"
+ istanbul-lib-instrument "^1.6.2"
+ test-exclude "^4.0.3"
+
+babel-plugin-jest-hoist@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-19.0.0.tgz#4ae2a04ea612a6e73651f3fde52c178991304bea"
+
babel-plugin-react-html-attrs@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/babel-plugin-react-html-attrs/-/babel-plugin-react-html-attrs-2.0.0.tgz#7e74ad72a104a57cd265e7faf694a16f611d3a9d"
@@ -510,7 +560,7 @@ babel-plugin-syntax-export-extensions@^6.8.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
-babel-plugin-syntax-flow@^6.18.0, babel-plugin-syntax-flow@^6.3.13:
+babel-plugin-syntax-flow@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
@@ -601,19 +651,19 @@ babel-plugin-transform-do-expressions@^6.3.13:
babel-plugin-syntax-do-expressions "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-arrow-functions@^6.3.13:
+babel-plugin-transform-es2015-arrow-functions@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-block-scoped-functions@^6.3.13:
+babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-block-scoping@^6.14.0:
+babel-plugin-transform-es2015-block-scoping@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576"
dependencies:
@@ -623,7 +673,7 @@ babel-plugin-transform-es2015-block-scoping@^6.14.0:
babel-types "^6.24.1"
lodash "^4.2.0"
-babel-plugin-transform-es2015-classes@^6.14.0:
+babel-plugin-transform-es2015-classes@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
dependencies:
@@ -637,33 +687,33 @@ babel-plugin-transform-es2015-classes@^6.14.0:
babel-traverse "^6.24.1"
babel-types "^6.24.1"
-babel-plugin-transform-es2015-computed-properties@^6.3.13:
+babel-plugin-transform-es2015-computed-properties@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
dependencies:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-plugin-transform-es2015-destructuring@^6.16.0:
+babel-plugin-transform-es2015-destructuring@^6.22.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-duplicate-keys@^6.6.0:
+babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
dependencies:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
-babel-plugin-transform-es2015-for-of@^6.6.0:
+babel-plugin-transform-es2015-for-of@^6.22.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-function-name@^6.9.0:
+babel-plugin-transform-es2015-function-name@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
dependencies:
@@ -671,13 +721,13 @@ babel-plugin-transform-es2015-function-name@^6.9.0:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
-babel-plugin-transform-es2015-literals@^6.3.13:
+babel-plugin-transform-es2015-literals@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-modules-amd@^6.24.1, babel-plugin-transform-es2015-modules-amd@^6.8.0:
+babel-plugin-transform-es2015-modules-amd@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
dependencies:
@@ -685,7 +735,7 @@ babel-plugin-transform-es2015-modules-amd@^6.24.1, babel-plugin-transform-es2015
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-plugin-transform-es2015-modules-commonjs@^6.16.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
+babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe"
dependencies:
@@ -694,7 +744,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.16.0, babel-plugin-transform-e
babel-template "^6.24.1"
babel-types "^6.24.1"
-babel-plugin-transform-es2015-modules-systemjs@^6.14.0:
+babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
dependencies:
@@ -702,7 +752,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.14.0:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-plugin-transform-es2015-modules-umd@^6.12.0:
+babel-plugin-transform-es2015-modules-umd@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
dependencies:
@@ -710,14 +760,14 @@ babel-plugin-transform-es2015-modules-umd@^6.12.0:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-plugin-transform-es2015-object-super@^6.3.13:
+babel-plugin-transform-es2015-object-super@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
dependencies:
babel-helper-replace-supers "^6.24.1"
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-parameters@^6.16.0:
+babel-plugin-transform-es2015-parameters@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
dependencies:
@@ -728,20 +778,20 @@ babel-plugin-transform-es2015-parameters@^6.16.0:
babel-traverse "^6.24.1"
babel-types "^6.24.1"
-babel-plugin-transform-es2015-shorthand-properties@^6.3.13:
+babel-plugin-transform-es2015-shorthand-properties@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
dependencies:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
-babel-plugin-transform-es2015-spread@^6.3.13:
+babel-plugin-transform-es2015-spread@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-sticky-regex@^6.3.13:
+babel-plugin-transform-es2015-sticky-regex@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
dependencies:
@@ -749,19 +799,19 @@ babel-plugin-transform-es2015-sticky-regex@^6.3.13:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
-babel-plugin-transform-es2015-template-literals@^6.6.0:
+babel-plugin-transform-es2015-template-literals@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-typeof-symbol@^6.6.0:
+babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-es2015-unicode-regex@^6.3.13:
+babel-plugin-transform-es2015-unicode-regex@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
dependencies:
@@ -784,7 +834,7 @@ babel-plugin-transform-export-extensions@^6.22.0:
babel-plugin-syntax-export-extensions "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-flow-strip-types@^6.3.13:
+babel-plugin-transform-flow-strip-types@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
dependencies:
@@ -805,27 +855,27 @@ babel-plugin-transform-object-rest-spread@^6.22.0:
babel-plugin-syntax-object-rest-spread "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-react-display-name@^6.3.13:
+babel-plugin-transform-react-display-name@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.23.0.tgz#4398910c358441dc4cef18787264d0412ed36b37"
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-transform-react-jsx-self@^6.11.0:
+babel-plugin-transform-react-jsx-self@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
dependencies:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-react-jsx-source@^6.3.13:
+babel-plugin-transform-react-jsx-source@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
dependencies:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-react-jsx@^6.3.13:
+babel-plugin-transform-react-jsx@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
dependencies:
@@ -833,7 +883,7 @@ babel-plugin-transform-react-jsx@^6.3.13:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-regenerator@^6.16.0:
+babel-plugin-transform-regenerator@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418"
dependencies:
@@ -846,46 +896,57 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
-babel-preset-es2015@6.16.0, babel-preset-es2015@^6.16.0:
- version "6.16.0"
- resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.16.0.tgz#59acecd1efbebaf48f89404840f2fe78c4d2ad5c"
- dependencies:
- babel-plugin-check-es2015-constants "^6.3.13"
- babel-plugin-transform-es2015-arrow-functions "^6.3.13"
- babel-plugin-transform-es2015-block-scoped-functions "^6.3.13"
- babel-plugin-transform-es2015-block-scoping "^6.14.0"
- babel-plugin-transform-es2015-classes "^6.14.0"
- babel-plugin-transform-es2015-computed-properties "^6.3.13"
- babel-plugin-transform-es2015-destructuring "^6.16.0"
- babel-plugin-transform-es2015-duplicate-keys "^6.6.0"
- babel-plugin-transform-es2015-for-of "^6.6.0"
- babel-plugin-transform-es2015-function-name "^6.9.0"
- babel-plugin-transform-es2015-literals "^6.3.13"
- babel-plugin-transform-es2015-modules-amd "^6.8.0"
- babel-plugin-transform-es2015-modules-commonjs "^6.16.0"
- babel-plugin-transform-es2015-modules-systemjs "^6.14.0"
- babel-plugin-transform-es2015-modules-umd "^6.12.0"
- babel-plugin-transform-es2015-object-super "^6.3.13"
- babel-plugin-transform-es2015-parameters "^6.16.0"
- babel-plugin-transform-es2015-shorthand-properties "^6.3.13"
- babel-plugin-transform-es2015-spread "^6.3.13"
- babel-plugin-transform-es2015-sticky-regex "^6.3.13"
- babel-plugin-transform-es2015-template-literals "^6.6.0"
- babel-plugin-transform-es2015-typeof-symbol "^6.6.0"
- babel-plugin-transform-es2015-unicode-regex "^6.3.13"
- babel-plugin-transform-regenerator "^6.16.0"
-
-babel-preset-react@6.16.0, babel-preset-react@^6.16.0:
- version "6.16.0"
- resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.16.0.tgz#aa117d60de0928607e343c4828906e4661824316"
+babel-preset-es2015@6.24.1, babel-preset-es2015@^6.16.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
+ dependencies:
+ babel-plugin-check-es2015-constants "^6.22.0"
+ babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoping "^6.24.1"
+ babel-plugin-transform-es2015-classes "^6.24.1"
+ babel-plugin-transform-es2015-computed-properties "^6.24.1"
+ babel-plugin-transform-es2015-destructuring "^6.22.0"
+ babel-plugin-transform-es2015-duplicate-keys "^6.24.1"
+ babel-plugin-transform-es2015-for-of "^6.22.0"
+ babel-plugin-transform-es2015-function-name "^6.24.1"
+ babel-plugin-transform-es2015-literals "^6.22.0"
+ babel-plugin-transform-es2015-modules-amd "^6.24.1"
+ babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
+ babel-plugin-transform-es2015-modules-systemjs "^6.24.1"
+ babel-plugin-transform-es2015-modules-umd "^6.24.1"
+ babel-plugin-transform-es2015-object-super "^6.24.1"
+ babel-plugin-transform-es2015-parameters "^6.24.1"
+ babel-plugin-transform-es2015-shorthand-properties "^6.24.1"
+ babel-plugin-transform-es2015-spread "^6.22.0"
+ babel-plugin-transform-es2015-sticky-regex "^6.24.1"
+ babel-plugin-transform-es2015-template-literals "^6.22.0"
+ babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
+ babel-plugin-transform-es2015-unicode-regex "^6.24.1"
+ babel-plugin-transform-regenerator "^6.24.1"
+
+babel-preset-flow@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
+ dependencies:
+ babel-plugin-transform-flow-strip-types "^6.22.0"
+
+babel-preset-jest@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-19.0.0.tgz#22d67201d02324a195811288eb38294bb3cac396"
+ dependencies:
+ babel-plugin-jest-hoist "^19.0.0"
+
+babel-preset-react@6.24.1, babel-preset-react@^6.16.0:
+ version "6.24.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
dependencies:
- babel-plugin-syntax-flow "^6.3.13"
babel-plugin-syntax-jsx "^6.3.13"
- babel-plugin-transform-flow-strip-types "^6.3.13"
- babel-plugin-transform-react-display-name "^6.3.13"
- babel-plugin-transform-react-jsx "^6.3.13"
- babel-plugin-transform-react-jsx-self "^6.11.0"
- babel-plugin-transform-react-jsx-source "^6.3.13"
+ babel-plugin-transform-react-display-name "^6.23.0"
+ babel-plugin-transform-react-jsx "^6.24.1"
+ babel-plugin-transform-react-jsx-self "^6.22.0"
+ babel-plugin-transform-react-jsx-source "^6.22.0"
+ babel-preset-flow "^6.23.0"
babel-preset-stage-0@6.16.0, babel-preset-stage-0@^6.16.0:
version "6.16.0"
@@ -941,7 +1002,7 @@ babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtim
core-js "^2.4.0"
regenerator-runtime "^0.10.0"
-babel-template@^6.22.0, babel-template@^6.23.0, babel-template@^6.24.1, babel-template@^6.3.0:
+babel-template@^6.16.0, babel-template@^6.22.0, babel-template@^6.23.0, babel-template@^6.24.1, babel-template@^6.3.0:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333"
dependencies:
@@ -951,7 +1012,7 @@ babel-template@^6.22.0, babel-template@^6.23.0, babel-template@^6.24.1, babel-te
babylon "^6.11.0"
lodash "^4.2.0"
-babel-traverse@^6.0.20, babel-traverse@^6.16.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1:
+babel-traverse@^6.0.20, babel-traverse@^6.16.0, babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695"
dependencies:
@@ -965,7 +1026,7 @@ babel-traverse@^6.0.20, babel-traverse@^6.16.0, babel-traverse@^6.23.1, babel-tr
invariant "^2.2.0"
lodash "^4.2.0"
-babel-types@^6.0.19, babel-types@^6.16.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1:
+babel-types@^6.0.19, babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975"
dependencies:
@@ -981,7 +1042,7 @@ babelify@^7.3.0:
babel-core "^6.0.14"
object-assign "^4.0.0"
-babylon@^6.0.18, babylon@^6.11.0, babylon@^6.11.4, babylon@^6.15.0:
+babylon@^6.0.18, babylon@^6.11.0, babylon@^6.11.4, babylon@^6.13.0, babylon@^6.15.0:
version "6.16.1"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3"
@@ -1067,7 +1128,7 @@ brorand@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
-browser-resolve@^1.7.0:
+browser-resolve@^1.11.2, browser-resolve@^1.7.0:
version "1.11.2"
resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
dependencies:
@@ -1131,6 +1192,18 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
caniuse-db "^1.0.30000639"
electron-to-chromium "^1.2.7"
+bser@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169"
+ dependencies:
+ node-int64 "^0.4.0"
+
+bser@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
+ dependencies:
+ node-int64 "^0.4.0"
+
buffer-shims@^1.0.0, buffer-shims@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
@@ -1173,6 +1246,10 @@ callsites@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+
camel-case@3.0.x:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
@@ -1257,6 +1334,10 @@ chokidar@^1.2.0, chokidar@^1.4.3, chokidar@^1.6.0:
optionalDependencies:
fsevents "^1.0.0"
+ci-info@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534"
+
cipher-base@^1.0.0, cipher-base@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07"
@@ -1274,8 +1355,8 @@ clap@^1.0.9:
chalk "^1.1.3"
clean-css@4.0.x:
- version "4.0.11"
- resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.11.tgz#a6d88bffb399420b24298db49d99a1ed067534a8"
+ version "4.0.12"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.12.tgz#a02e61707f1840bd3338f54dbc9acbda4e772fa3"
dependencies:
source-map "0.5.x"
@@ -1347,7 +1428,7 @@ collapse-white-space@^1.0.0, collapse-white-space@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.2.tgz#9c463fb9c6d190d2dcae21a356a01bcae9eeef6d"
-color-convert@^1.3.0:
+color-convert@^1.0.0, color-convert@^1.3.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
dependencies:
@@ -1390,8 +1471,8 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
delayed-stream "~1.0.0"
comma-separated-tokens@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.2.tgz#4b64717a2ee363af6dd39878336bd95e42d063e7"
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.3.tgz#6eb01f4730bde7a7fce5d5e2d943bdd637272801"
dependencies:
trim "0.0.1"
@@ -1468,6 +1549,10 @@ content-disposition@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
+content-type-parser@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94"
+
content-type@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed"
@@ -1556,7 +1641,7 @@ css-color-names@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
-css-loader@^0.28.0:
+css-loader@0.28.0:
version "0.28.0"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.0.tgz#417cfa9789f8cde59a30ccbf3e4da7a806889bad"
dependencies:
@@ -1650,6 +1735,16 @@ csso@~2.3.1:
clap "^1.0.9"
source-map "^0.5.3"
+cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
+
+"cssstyle@>= 0.2.37 < 0.3.0":
+ version "0.2.37"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
+ dependencies:
+ cssom "0.3.x"
+
d3-array@1, d3-array@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.1.1.tgz#a01abe63a25ffb91d3423c3c6d051b4d36bc8a09"
@@ -1916,6 +2011,12 @@ deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+default-require-extensions@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
+ dependencies:
+ strip-bom "^2.0.0"
+
define-properties@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
@@ -1985,6 +2086,10 @@ diff@^1.3.2:
version "1.4.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
+diff@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
+
diffie-hellman@^5.0.0:
version "5.0.2"
resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
@@ -2201,7 +2306,7 @@ entities@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
-errno@^0.1.3:
+"errno@>=0.1.1 <0.2.0-0", errno@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
dependencies:
@@ -2297,6 +2402,17 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+escodegen@^1.6.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
+ dependencies:
+ esprima "^2.7.1"
+ estraverse "^1.9.1"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.2.0"
+
escope@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
@@ -2503,7 +2619,7 @@ espree@^3.1.6, espree@^3.4.0:
acorn "^5.0.1"
acorn-jsx "^3.0.0"
-esprima@^2.6.0:
+esprima@^2.6.0, esprima@^2.7.1:
version "2.7.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
@@ -2524,6 +2640,10 @@ esrecurse@^4.1.0:
estraverse "~4.1.0"
object-assign "^4.0.1"
+estraverse@^1.9.1:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
+
estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
@@ -2579,6 +2699,12 @@ evp_bytestokey@^1.0.0:
dependencies:
create-hash "^1.1.1"
+exec-sh@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.0.tgz#14f75de3f20d286ef933099b2ce50a90359cef10"
+ dependencies:
+ merge "^1.1.3"
+
exit-hook@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
@@ -2668,7 +2794,19 @@ faye-websocket@~0.11.0:
dependencies:
websocket-driver ">=0.5.1"
-fbjs@^0.8.1, fbjs@^0.8.4:
+fb-watchman@^1.8.0:
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.2.tgz#a24cf47827f82d38fb59a69ad70b76e3b6ae7383"
+ dependencies:
+ bser "1.0.2"
+
+fb-watchman@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58"
+ dependencies:
+ bser "^2.0.0"
+
+fbjs@^0.8.4, fbjs@^0.8.9:
version "0.8.12"
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04"
dependencies:
@@ -2705,6 +2843,13 @@ filename-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+fileset@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
+ dependencies:
+ glob "^7.0.3"
+ minimatch "^3.0.3"
+
fill-range@^2.1.0:
version "2.2.3"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
@@ -2742,6 +2887,12 @@ find-up@^1.0.0:
path-exists "^2.0.0"
pinkie-promise "^2.0.0"
+find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ dependencies:
+ locate-path "^2.0.0"
+
first-chunk-stream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e"
@@ -2967,7 +3118,7 @@ globby@^5.0.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
-graceful-fs@^4.0.0, graceful-fs@^4.1.2:
+graceful-fs@^4.0.0, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
version "4.1.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
@@ -2975,6 +3126,10 @@ graceful-fs@^4.0.0, graceful-fs@^4.1.2:
version "1.0.1"
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+growly@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+
gulp-sourcemaps@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c"
@@ -2989,6 +3144,16 @@ handle-thing@^1.2.4:
version "1.2.5"
resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
+handlebars@^4.0.3:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7"
+ dependencies:
+ async "^1.4.0"
+ optimist "^0.6.1"
+ source-map "^0.4.4"
+ optionalDependencies:
+ uglify-js "^2.6"
+
har-schema@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
@@ -3086,8 +3251,8 @@ history@^4.5.1, history@^4.6.0:
warning "^3.0.0"
hmac-drbg@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
dependencies:
hash.js "^1.0.3"
minimalistic-assert "^1.0.0"
@@ -3097,6 +3262,10 @@ hoek@2.x.x:
version "2.16.3"
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+hoist-non-react-statics@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb"
+
home-or-tmp@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
@@ -3105,8 +3274,8 @@ home-or-tmp@^2.0.0:
os-tmpdir "^1.0.1"
hosted-git-info@^2.1.4:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.1.tgz#4b0445e41c004a8bd1337773a4ff790ca40318c8"
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67"
hpack.js@^2.1.6:
version "2.1.6"
@@ -3121,6 +3290,12 @@ html-comment-regex@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
+html-encoding-sniffer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da"
+ dependencies:
+ whatwg-encoding "^1.0.1"
+
html-entities@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2"
@@ -3215,6 +3390,10 @@ iconv-lite@0.4, iconv-lite@~0.4.13:
version "0.4.15"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
+iconv-lite@0.4.13:
+ version "0.4.13"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
+
icss-replace-symbols@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5"
@@ -3277,8 +3456,8 @@ inquirer@^0.12.0:
through "^2.3.6"
interpret@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.2.tgz#f4f623f0bb7122f15f5717c8e254b8161b5c5b2d"
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2:
version "2.2.2"
@@ -3348,6 +3527,12 @@ is-callable@^1.1.1, is-callable@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+is-ci@^1.0.9:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
+ dependencies:
+ ci-info "^1.0.0"
+
is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
@@ -3554,6 +3739,270 @@ isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+istanbul-api@^1.1.0-alpha.1:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.7.tgz#f6f37f09f8002b130f891c646b70ee4a8e7345ae"
+ dependencies:
+ async "^2.1.4"
+ fileset "^2.0.2"
+ istanbul-lib-coverage "^1.0.2"
+ istanbul-lib-hook "^1.0.5"
+ istanbul-lib-instrument "^1.7.0"
+ istanbul-lib-report "^1.0.0"
+ istanbul-lib-source-maps "^1.1.1"
+ istanbul-reports "^1.0.2"
+ js-yaml "^3.7.0"
+ mkdirp "^0.5.1"
+ once "^1.4.0"
+
+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.2.tgz#87a0c015b6910651cb3b184814dfb339337e25e1"
+
+istanbul-lib-hook@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.5.tgz#6ca3d16d60c5f4082da39f7c5cd38ea8a772b88e"
+ dependencies:
+ append-transform "^0.4.0"
+
+istanbul-lib-instrument@^1.1.1, istanbul-lib-instrument@^1.6.2, istanbul-lib-instrument@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.0.tgz#b8e0dc25709bb44e17336ab47b7bb5c97c23f659"
+ dependencies:
+ babel-generator "^6.18.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.18.0"
+ babel-types "^6.18.0"
+ babylon "^6.13.0"
+ istanbul-lib-coverage "^1.0.2"
+ semver "^5.3.0"
+
+istanbul-lib-report@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.0.0.tgz#d83dac7f26566b521585569367fe84ccfc7aaecb"
+ dependencies:
+ istanbul-lib-coverage "^1.0.2"
+ mkdirp "^0.5.1"
+ path-parse "^1.0.5"
+ supports-color "^3.1.2"
+
+istanbul-lib-source-maps@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.1.1.tgz#f8c8c2e8f2160d1d91526d97e5bd63b2079af71c"
+ dependencies:
+ istanbul-lib-coverage "^1.0.2"
+ mkdirp "^0.5.1"
+ rimraf "^2.4.4"
+ source-map "^0.5.3"
+
+istanbul-reports@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.0.2.tgz#4e8366abe6fa746cc1cd6633f108de12cc6ac6fa"
+ dependencies:
+ handlebars "^4.0.3"
+
+jest-changed-files@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-19.0.2.tgz#16c54c84c3270be408e06d2e8af3f3e37a885824"
+
+jest-cli@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-19.0.2.tgz#cc3620b62acac5f2d93a548cb6ef697d4ec85443"
+ dependencies:
+ ansi-escapes "^1.4.0"
+ callsites "^2.0.0"
+ chalk "^1.1.1"
+ graceful-fs "^4.1.6"
+ is-ci "^1.0.9"
+ istanbul-api "^1.1.0-alpha.1"
+ istanbul-lib-coverage "^1.0.0"
+ istanbul-lib-instrument "^1.1.1"
+ jest-changed-files "^19.0.2"
+ jest-config "^19.0.2"
+ jest-environment-jsdom "^19.0.2"
+ jest-haste-map "^19.0.0"
+ jest-jasmine2 "^19.0.2"
+ jest-message-util "^19.0.0"
+ jest-regex-util "^19.0.0"
+ jest-resolve-dependencies "^19.0.0"
+ jest-runtime "^19.0.2"
+ jest-snapshot "^19.0.2"
+ jest-util "^19.0.2"
+ micromatch "^2.3.11"
+ node-notifier "^5.0.1"
+ slash "^1.0.0"
+ string-length "^1.0.1"
+ throat "^3.0.0"
+ which "^1.1.1"
+ worker-farm "^1.3.1"
+ yargs "^6.3.0"
+
+jest-config@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-19.0.2.tgz#1b9bd2db0ddd16df61c2b10a54009e1768da6411"
+ dependencies:
+ chalk "^1.1.1"
+ jest-environment-jsdom "^19.0.2"
+ jest-environment-node "^19.0.2"
+ jest-jasmine2 "^19.0.2"
+ jest-regex-util "^19.0.0"
+ jest-resolve "^19.0.2"
+ jest-validate "^19.0.2"
+ pretty-format "^19.0.0"
+
+jest-diff@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-19.0.0.tgz#d1563cfc56c8b60232988fbc05d4d16ed90f063c"
+ dependencies:
+ chalk "^1.1.3"
+ diff "^3.0.0"
+ jest-matcher-utils "^19.0.0"
+ pretty-format "^19.0.0"
+
+jest-environment-jsdom@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-19.0.2.tgz#ceda859c4a4b94ab35e4de7dab54b926f293e4a3"
+ dependencies:
+ jest-mock "^19.0.0"
+ jest-util "^19.0.2"
+ jsdom "^9.11.0"
+
+jest-environment-node@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-19.0.2.tgz#6e84079db87ed21d0c05e1f9669f207b116fe99b"
+ dependencies:
+ jest-mock "^19.0.0"
+ jest-util "^19.0.2"
+
+jest-file-exists@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/jest-file-exists/-/jest-file-exists-19.0.0.tgz#cca2e587a11ec92e24cfeab3f8a94d657f3fceb8"
+
+jest-haste-map@^19.0.0:
+ version "19.0.1"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-19.0.1.tgz#7616222491275050c7af39dbeab0a57c32ef9652"
+ dependencies:
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.1.6"
+ micromatch "^2.3.11"
+ sane "~1.5.0"
+ worker-farm "^1.3.1"
+
+jest-jasmine2@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-19.0.2.tgz#167991ac825981fb1a800af126e83afcca832c73"
+ dependencies:
+ graceful-fs "^4.1.6"
+ jest-matcher-utils "^19.0.0"
+ jest-matchers "^19.0.0"
+ jest-message-util "^19.0.0"
+ jest-snapshot "^19.0.2"
+
+jest-matcher-utils@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-19.0.0.tgz#5ecd9b63565d2b001f61fbf7ec4c7f537964564d"
+ dependencies:
+ chalk "^1.1.3"
+ pretty-format "^19.0.0"
+
+jest-matchers@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-19.0.0.tgz#c74ecc6ebfec06f384767ba4d6fa4a42d6755754"
+ dependencies:
+ jest-diff "^19.0.0"
+ jest-matcher-utils "^19.0.0"
+ jest-message-util "^19.0.0"
+ jest-regex-util "^19.0.0"
+
+jest-message-util@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-19.0.0.tgz#721796b89c0e4d761606f9ba8cb828a3b6246416"
+ dependencies:
+ chalk "^1.1.1"
+ micromatch "^2.3.11"
+
+jest-mock@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-19.0.0.tgz#67038641e9607ab2ce08ec4a8cb83aabbc899d01"
+
+jest-regex-util@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-19.0.0.tgz#b7754587112aede1456510bb1f6afe74ef598691"
+
+jest-resolve-dependencies@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-19.0.0.tgz#a741ad1fa094140e64ecf2642a504f834ece22ee"
+ dependencies:
+ jest-file-exists "^19.0.0"
+
+jest-resolve@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-19.0.2.tgz#5793575de4f07aec32f7d7ff0c6c181963eefb3c"
+ dependencies:
+ browser-resolve "^1.11.2"
+ jest-haste-map "^19.0.0"
+ resolve "^1.2.0"
+
+jest-runtime@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-19.0.2.tgz#d9a43e72de416d27d196fd9c7940d98fe6685407"
+ dependencies:
+ babel-core "^6.0.0"
+ babel-jest "^19.0.0"
+ babel-plugin-istanbul "^4.0.0"
+ chalk "^1.1.3"
+ graceful-fs "^4.1.6"
+ jest-config "^19.0.2"
+ jest-file-exists "^19.0.0"
+ jest-haste-map "^19.0.0"
+ jest-regex-util "^19.0.0"
+ jest-resolve "^19.0.2"
+ jest-util "^19.0.2"
+ json-stable-stringify "^1.0.1"
+ micromatch "^2.3.11"
+ strip-bom "3.0.0"
+ yargs "^6.3.0"
+
+jest-snapshot@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-19.0.2.tgz#9c1b216214f7187c38bfd5c70b1efab16b0ff50b"
+ dependencies:
+ chalk "^1.1.3"
+ jest-diff "^19.0.0"
+ jest-file-exists "^19.0.0"
+ jest-matcher-utils "^19.0.0"
+ jest-util "^19.0.2"
+ natural-compare "^1.4.0"
+ pretty-format "^19.0.0"
+
+jest-util@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-19.0.2.tgz#e0a0232a2ab9e6b2b53668bdb3534c2b5977ed41"
+ dependencies:
+ chalk "^1.1.1"
+ graceful-fs "^4.1.6"
+ jest-file-exists "^19.0.0"
+ jest-message-util "^19.0.0"
+ jest-mock "^19.0.0"
+ jest-validate "^19.0.2"
+ leven "^2.0.0"
+ mkdirp "^0.5.1"
+
+jest-validate@^19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-19.0.2.tgz#dc534df5f1278d5b63df32b14241d4dbf7244c0c"
+ dependencies:
+ chalk "^1.1.1"
+ jest-matcher-utils "^19.0.0"
+ leven "^2.0.0"
+ pretty-format "^19.0.0"
+
+jest@19.0.2:
+ version "19.0.2"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-19.0.2.tgz#b794faaf8ff461e7388f28beef559a54f20b2c10"
+ dependencies:
+ jest-cli "^19.0.2"
+
jodid25519@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
@@ -3568,7 +4017,7 @@ js-tokens@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
-js-yaml@^3.3.1, js-yaml@^3.5.1:
+js-yaml@^3.3.1, js-yaml@^3.5.1, js-yaml@^3.7.0:
version "3.8.3"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766"
dependencies:
@@ -3586,6 +4035,30 @@ jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+jsdom@^9.11.0:
+ version "9.12.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4"
+ dependencies:
+ abab "^1.0.3"
+ acorn "^4.0.4"
+ acorn-globals "^3.1.0"
+ array-equal "^1.0.0"
+ content-type-parser "^1.0.1"
+ cssom ">= 0.3.2 < 0.4.0"
+ cssstyle ">= 0.2.37 < 0.3.0"
+ escodegen "^1.6.1"
+ html-encoding-sniffer "^1.0.1"
+ nwmatcher ">= 1.3.9 < 2.0.0"
+ parse5 "^1.5.1"
+ request "^2.79.0"
+ sax "^1.2.1"
+ symbol-tree "^3.2.1"
+ tough-cookie "^2.3.2"
+ webidl-conversions "^4.0.0"
+ whatwg-encoding "^1.0.1"
+ whatwg-url "^4.3.0"
+ xml-name-validator "^2.0.1"
+
jsesc@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
@@ -3677,6 +4150,10 @@ lcid@^1.0.0:
dependencies:
invert-kv "^1.0.0"
+leven@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
+
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@@ -3735,6 +4212,13 @@ loader-utils@^1.0.2:
emojis-list "^2.0.0"
json5 "^0.5.0"
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
lodash.assign@^4.0.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
@@ -3818,6 +4302,12 @@ macaddress@^0.2.8:
version "0.2.8"
resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
+makeerror@1.0.x:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
+ dependencies:
+ tmpl "1.0.x"
+
map-cache@^0.2.0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
@@ -3906,6 +4396,10 @@ merge-stream@^1.0.0:
dependencies:
readable-stream "^2.0.1"
+merge@^1.1.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
+
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
@@ -3957,17 +4451,17 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
-"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2:
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
dependencies:
brace-expansion "^1.0.0"
-minimist@0.0.8:
+minimist@0.0.8, minimist@~0.0.1:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-minimist@^1.1.0, minimist@^1.2.0:
+minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
@@ -4009,8 +4503,8 @@ mute-stream@0.0.5:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
nan@^2.3.0:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.1.tgz#8c84f7b14c96b89f57fbc838012180ec8ca39a01"
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
natural-compare@^1.4.0:
version "1.4.0"
@@ -4039,6 +4533,10 @@ node-fetch@^1.0.1:
encoding "^0.1.11"
is-stream "^1.0.1"
+node-int64@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+
node-libs-browser@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646"
@@ -4067,6 +4565,15 @@ node-libs-browser@^2.0.0:
util "^0.10.3"
vm-browserify "0.0.4"
+node-notifier@^5.0.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff"
+ dependencies:
+ growly "^1.3.0"
+ semver "^5.3.0"
+ shellwords "^0.1.0"
+ which "^1.2.12"
+
node-pre-gyp@^0.6.29:
version "0.6.34"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7"
@@ -4163,6 +4670,10 @@ number-is-nan@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+"nwmatcher@>= 1.3.9 < 2.0.0":
+ version "1.3.9"
+ resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a"
+
oauth-sign@~0.8.1:
version "0.8.2"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
@@ -4196,7 +4707,7 @@ on-headers@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
-once@^1.3.0, once@^1.3.3:
+once@^1.3.0, once@^1.3.3, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
dependencies:
@@ -4219,6 +4730,13 @@ opn@4.0.2:
object-assign "^4.0.1"
pinkie-promise "^2.0.0"
+optimist@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+ dependencies:
+ minimist "~0.0.1"
+ wordwrap "~0.0.2"
+
optionator@^0.8.1, optionator@^0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
@@ -4268,6 +4786,16 @@ osenv@^0.1.4:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
+p-limit@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ dependencies:
+ p-limit "^1.1.0"
+
pako@~0.2.0:
version "0.2.9"
resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
@@ -4341,6 +4869,10 @@ parse-url@^1.3.0:
is-ssh "^1.3.0"
protocols "^1.4.0"
+parse5@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
+
parseurl@~1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56"
@@ -4359,6 +4891,10 @@ path-exists@^2.0.0:
dependencies:
pinkie-promise "^2.0.0"
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -4716,6 +5252,12 @@ pretty-error@^2.0.2:
renderkid "^2.0.1"
utila "~0.4"
+pretty-format@^19.0.0:
+ version "19.0.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-19.0.0.tgz#56530d32acb98a3fa4851c4e2b9d37b420684c84"
+ dependencies:
+ ansi-styles "^3.0.0"
+
private@^0.1.6:
version "0.1.7"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
@@ -4738,6 +5280,12 @@ promise@^7.1.1:
dependencies:
asap "~2.0.3"
+prop-types@^15.5.4, prop-types@^15.5.7, prop-types@~15.5.7:
+ version "15.5.8"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.8.tgz#6b7b2e141083be38c8595aa51fc55775c7199394"
+ dependencies:
+ fbjs "^0.8.9"
+
property-information@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/property-information/-/property-information-3.1.0.tgz#1581bf8a445dfbfef759775a86700e8dda18b4a1"
@@ -4843,13 +5391,21 @@ rc@^1.1.0, rc@^1.1.7:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
-react-dom@15.4.2:
- version "15.4.2"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.4.2.tgz#015363f05b0a1fd52ae9efdd3a0060d90695208f"
+react-addons-test-utils@^15.5.0:
+ version "15.5.1"
+ resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.5.1.tgz#e0d258cda2a122ad0dff69f838260d0c3958f5f7"
dependencies:
- fbjs "^0.8.1"
+ fbjs "^0.8.4"
+ object-assign "^4.1.0"
+
+react-dom@^15.5.0:
+ version "15.5.4"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da"
+ dependencies:
+ fbjs "^0.8.9"
loose-envify "^1.1.0"
object-assign "^4.1.0"
+ prop-types "~15.5.7"
react-jsonschema-form@0.46.0:
version "0.46.0"
@@ -4867,22 +5423,32 @@ react-router-dom@4.0.0:
react-router "^4.0.0"
react-router@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.0.0.tgz#6532075231f0bb5077c2005c1d417ad6165b3997"
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.1.1.tgz#d448f3b7c1b429a6fbb03395099949c606b1fe95"
dependencies:
history "^4.6.0"
+ hoist-non-react-statics "^1.2.0"
invariant "^2.2.2"
loose-envify "^1.3.1"
path-to-regexp "^1.5.3"
+ prop-types "^15.5.4"
warning "^3.0.0"
-react@15.4.2:
- version "15.4.2"
- resolved "https://registry.yarnpkg.com/react/-/react-15.4.2.tgz#41f7991b26185392ba9bae96c8889e7e018397ef"
+react-test-renderer@^15.5.0:
+ version "15.5.4"
+ resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-15.5.4.tgz#d4ebb23f613d685ea8f5390109c2d20fbf7c83bc"
dependencies:
- fbjs "^0.8.4"
+ fbjs "^0.8.9"
+ object-assign "^4.1.0"
+
+react@^15.5.0:
+ version "15.5.4"
+ resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047"
+ dependencies:
+ fbjs "^0.8.9"
loose-envify "^1.1.0"
object-assign "^4.1.0"
+ prop-types "^15.5.7"
read-json-sync@^1.1.0:
version "1.1.1"
@@ -5162,7 +5728,7 @@ replace-ext@1.0.0, replace-ext@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
-request@^2.81.0:
+request@^2.79.0, request@^2.81.0:
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
dependencies:
@@ -5224,7 +5790,7 @@ resolve@1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-resolve@^1.1.3, resolve@^1.1.6:
+resolve@^1.1.3, resolve@^1.1.6, resolve@^1.2.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235"
dependencies:
@@ -5243,7 +5809,7 @@ right-align@^0.1.1:
dependencies:
align-text "^0.1.1"
-rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1:
+rimraf@2, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.1, rimraf@^2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
dependencies:
@@ -5275,7 +5841,19 @@ safe-json-parse@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57"
-sax@~1.2.1:
+sane@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/sane/-/sane-1.5.0.tgz#a4adeae764d048621ecb27d5f9ecf513101939f3"
+ dependencies:
+ anymatch "^1.3.0"
+ exec-sh "^0.2.0"
+ fb-watchman "^1.8.0"
+ minimatch "^3.0.2"
+ minimist "^1.1.1"
+ walker "~1.0.5"
+ watch "~0.10.0"
+
+sax@^1.2.1, sax@~1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828"
@@ -5387,6 +5965,10 @@ shellsubstitute@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shellsubstitute/-/shellsubstitute-1.2.0.tgz#e4f702a50c518b0f6fe98451890d705af29b6b70"
+shellwords@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14"
+
signal-exit@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@@ -5447,6 +6029,18 @@ source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, sourc
version "0.5.6"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+source-map@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+ dependencies:
+ amdefine ">=0.0.4"
+
+source-map@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
+ dependencies:
+ amdefine ">=0.0.4"
+
space-separated-tokens@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.0.tgz#9e8c60407aa527742cd9eaee2541dec639f1269b"
@@ -5498,8 +6092,8 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
sshpk@^1.7.0:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77"
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c"
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
@@ -5564,6 +6158,12 @@ strict-uri-encode@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+string-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac"
+ dependencies:
+ strip-ansi "^3.0.0"
+
string-template@~0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add"
@@ -5628,16 +6228,16 @@ strip-bom-stream@^1.0.0:
first-chunk-stream "^1.0.0"
strip-bom "^2.0.0"
+strip-bom@3.0.0, strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+
strip-bom@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
dependencies:
is-utf8 "^0.2.0"
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
-
strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
@@ -5646,7 +6246,7 @@ strip-json-comments@~1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
-style-loader@^0.16.1:
+style-loader@0.16.1:
version "0.16.1"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.16.1.tgz#50e325258d4e78421dd9680636b41e8661595d10"
dependencies:
@@ -5662,7 +6262,7 @@ supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.2.3:
+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:
version "3.2.3"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
dependencies:
@@ -5680,6 +6280,10 @@ svgo@^0.7.0:
sax "~1.2.1"
whet.extend "~0.9.9"
+symbol-tree@^3.2.1:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
+
table@^3.7.8:
version "3.8.3"
resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
@@ -5716,10 +6320,24 @@ tar@^2.2.1:
fstream "^1.0.2"
inherits "2"
+test-exclude@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.0.3.tgz#86a13ce3effcc60e6c90403cf31a27a60ac6c4e7"
+ dependencies:
+ arrify "^1.0.1"
+ micromatch "^2.3.11"
+ object-assign "^4.1.0"
+ read-pkg-up "^1.0.1"
+ require-main-filename "^1.0.1"
+
text-table@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+throat@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/throat/-/throat-3.0.0.tgz#e7c64c867cbb3845f10877642f7b60055b8ec0d6"
+
through2-filter@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec"
@@ -5762,6 +6380,10 @@ tiny-lr@^1.0.3:
object-assign "^4.1.0"
qs "^6.2.0"
+tmpl@1.0.x:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
+
to-absolute-glob@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f"
@@ -5780,12 +6402,16 @@ toposort@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c"
-tough-cookie@~2.3.0:
+tough-cookie@^2.3.2, tough-cookie@~2.3.0:
version "2.3.2"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
dependencies:
punycode "^1.4.1"
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+
trim-lines@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.0.tgz#9926d03ede13ba18f7d42222631fb04c79ff26fe"
@@ -5845,7 +6471,7 @@ ua-parser-js@^0.7.9:
version "0.7.12"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb"
-uglify-js@^2.8.5, uglify-js@~2.8.22:
+uglify-js@^2.6, uglify-js@^2.8.5, uglify-js@~2.8.22:
version "2.8.22"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0"
dependencies:
@@ -6105,8 +6731,8 @@ vinyl@^1.0.0:
replace-ext "0.0.1"
vinyl@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.1.tgz#1c3b4931e7ac4c1efee743f3b91a74c094407bb6"
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.2.tgz#0a3713d8d4e9221c58f10ca16c0116c9e25eda7c"
dependencies:
clone "^1.0.0"
clone-buffer "^1.0.0"
@@ -6122,12 +6748,22 @@ vm-browserify@0.0.4:
dependencies:
indexof "0.0.1"
+walker@~1.0.5:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
+ dependencies:
+ makeerror "1.0.x"
+
warning@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
dependencies:
loose-envify "^1.0.0"
+watch@~0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc"
+
watchpack@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87"
@@ -6142,6 +6778,14 @@ wbuf@^1.1.0, wbuf@^1.4.0:
dependencies:
minimalistic-assert "^1.0.0"
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+
+webidl-conversions@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0"
+
webpack-dev-middleware@^1.9.0:
version "1.10.1"
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893"
@@ -6215,10 +6859,23 @@ websocket-extensions@>=0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7"
+whatwg-encoding@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4"
+ dependencies:
+ iconv-lite "0.4.13"
+
whatwg-fetch@>=0.10.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+whatwg-url@^4.3.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.7.0.tgz#202035ac1955b087cdd20fa8b58ded3ab1cd2af5"
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
whet.extend@~0.9.9:
version "0.9.9"
resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
@@ -6227,7 +6884,7 @@ which-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
-which@^1.2.9:
+which@^1.1.1, which@^1.2.12, which@^1.2.9:
version "1.2.14"
resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
dependencies:
@@ -6243,7 +6900,7 @@ window-size@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-wordwrap@0.0.2:
+wordwrap@0.0.2, wordwrap@~0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
@@ -6251,6 +6908,13 @@ wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+worker-farm@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.3.1.tgz#4333112bb49b17aa050b87895ca6b2cacf40e5ff"
+ dependencies:
+ errno ">=0.1.1 <0.2.0-0"
+ xtend ">=4.0.0 <4.1.0-0"
+
wrap-ansi@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
@@ -6276,6 +6940,10 @@ xml-char-classes@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
+xml-name-validator@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
+
xmlhttprequest@1:
version "1.8.0"
resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
@@ -6298,7 +6966,7 @@ yargs-parser@^4.2.0:
dependencies:
camelcase "^3.0.0"
-yargs@^6.0.0:
+yargs@^6.0.0, yargs@^6.3.0:
version "6.6.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
dependencies: