diff --git a/.gitignore b/.gitignore index c7ffd1b4c..8e3d10168 100644 --- a/.gitignore +++ b/.gitignore @@ -61,13 +61,11 @@ typings/ # dotenv environment variables file .env -# PROJECT configurations -dist/ - # End of https://www.gitignore.io/api/node - -src/mock/mock.js -src/mock/mock.xl.js +# PROJECT configurations +dist/ DOCUMENTATION.md docs +sandbox/rd3g.sandbox.bundle.js +sandbox/rd3g.sandbox.bundle.js.map diff --git a/README.md b/README.md index 782e3068d..d8bd53498 100644 --- a/README.md +++ b/README.md @@ -44,3 +44,11 @@ export default { } }; ``` + +## TODOs +This are some ideas to further development: +- Expose a graph property **background-color** that is applied to the svg graph container. + +## Contributions +Contributions are welcome fell free to submit new features or simply grab something from +the above TODO list. diff --git a/package.json b/package.json index fe78ad2ce..aa67ab83f 100644 --- a/package.json +++ b/package.json @@ -18,14 +18,18 @@ "babel-preset-es2015": "6.16.0", "babel-preset-react": "6.16.0", "babel-preset-stage-0": "6.16.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", - "eslint": "3.18.0", "html-webpack-plugin": "2.28.0", + "npm-run-all": "4.0.2", "react-dom": "15.4.2", + "react-jsonschema-form": "0.46.0", "react-router-dom": "4.0.0", + "style-loader": "^0.16.1", "webpack": "2.3.2", "webpack-dev-server": "2.4.2" }, @@ -45,8 +49,10 @@ "visualization" ], "scripts": { - "dev": "node_modules/.bin/webpack-dev-server -d --content-base src --inline --hot --port 3002", - "dist": "webpack -p", + "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 new file mode 100644 index 000000000..7c43ffb51 --- /dev/null +++ b/sandbox/Sandbox.js @@ -0,0 +1,167 @@ +import React from 'react'; + +import Form from 'react-jsonschema-form'; + +import './styles.css'; + +import defaultConfig from '../src/components/Graph/config'; +import { Graph } from '../src'; +import mock from './miserables'; +import Utils from './utils'; +import ReactD3GraphUtils from '../src/utils'; + +export default class Sandbox extends React.Component { + constructor(props) { + super(props); + + const schemaProps = Utils.generateFormSchema(defaultConfig, '', {}); + + const schema = { + type: 'object', + properties: schemaProps + }; + + const uiSchema = { + height: {'ui:readonly': 'true'}, + width: {'ui:readonly': 'true'} + }; + + this.uiSchema = uiSchema; + + this.state = { + config: defaultConfig, + generatedConfig: {}, + schema + }; + } + + onClickNode = (id) => window.alert(`clicked node ${id}`); + + onClickLink = (source, target) => window.alert(`clicked link between ${source} and ${target}`); + + onMouseOverNode = () => { + // Do something with the node identifier ... + } + + onMouseOutNode = () => { + // Do something with the node identifier ... + } + + pauseGraphSimulation = () => this.refs.graph.pauseSimulation(); + + restartGraphSimulation = () => this.refs.graph.restartSimulation(); + + resetNodesPositions = () => this.refs.graph.resetNodesPositions(); + + _buildGraphConfig = (data) => { + let config = {}; + let schemaPropsValues = {}; + + for(let k of Object.keys(data.formData)) { + // Set value mapping correctly for config object of react-d3-graph + Utils.setValue(config, k, data.formData[k]); + // Set new values for schema of jsonform + schemaPropsValues[k] = {}; + schemaPropsValues[k]['default'] = data.formData[k] + } + + return {config, schemaPropsValues}; + } + + refreshGraph = (data) => { + const {config, schemaPropsValues} = this._buildGraphConfig(data); + + this.state.schema.properties = ReactD3GraphUtils.merge(this.state.schema.properties, schemaPropsValues); + + this.setState({ + config + }); + } + + // Generate graph configuration file ready to use! + onSubmit = (data) => { + const {config, schemaPropsValues} = this._buildGraphConfig(data); + + this.setState({ + generatedConfig: config + }); + } + + onClickSubmit = () => { + // Hack for allow submit button to live outside jsonform + document.body.querySelector('.invisible-button').click(); + } + + resetGraphConfig = () => { + const schemaProps = Utils.generateFormSchema(defaultConfig, '', {}); + + const schema = { + type: 'object', + properties: schemaProps + }; + + this.setState({ + config: defaultConfig, + schema + }); + } + + render() { + const graphProps = { + id: 'graph', + data: mock, + config: this.state.config, + onClickNode: this.onClickNode, + onClickLink: this.onClickLink, + onMouseOverNode: this.onMouseOverNode, + onMouseOutNode: this.onMouseOutNode + }; + + const btnStyle = { + cursor: this.state.config.staticGraph ? 'not-allowed' : 'pointer' + }; + + return ( +
+
+ + + + +
+
+

Graph configurations

+
+ +
+ + +
+
+

Your config

+ +
+
+

Graph data

+ +
+
+ ); + } +} + +class JSONContainer extends React.Component { + shouldComponentUpdate(nextProps, nextState) { + return JSON.stringify(nextProps.data) !== JSON.stringify(this.props.data); + } + + render() { + return ( +
{JSON.stringify(this.props.data, null, 2)}
+ ); + } +} diff --git a/sandbox/index.html b/sandbox/index.html new file mode 100644 index 000000000..2cf7b1e33 --- /dev/null +++ b/sandbox/index.html @@ -0,0 +1,13 @@ + + + + + react-d3-graph + + + + +
+ + + diff --git a/src/js/app.js b/sandbox/index.js similarity index 71% rename from src/js/app.js rename to sandbox/index.js index d12461a79..23aca1f44 100644 --- a/src/js/app.js +++ b/sandbox/index.js @@ -5,14 +5,14 @@ import { Route } from 'react-router-dom'; -import Demo from './components/Demo'; +import Sandbox from './Sandbox'; const app = document.getElementById('app'); ReactDOM.render(
- +
-
+ , app); diff --git a/src/mock/miserables.js b/sandbox/miserables.js similarity index 100% rename from src/mock/miserables.js rename to sandbox/miserables.js diff --git a/sandbox/styles.css b/sandbox/styles.css new file mode 100644 index 000000000..8a68b8222 --- /dev/null +++ b/sandbox/styles.css @@ -0,0 +1,61 @@ +* {box-sizing: border-box;} +.container { + margin: 4px; + overflow: hidden; + position: fixed; +} + +.container > div { + padding: 1em; +}.container { + display: grid; + grid-template-columns: repeat(3, 2fr); + grid-auto-rows: minmax(100px, auto); +} + +.container__graph { + grid-column: 1 / 5; + grid-row: 1 / 2; + + border: 1px dashed black; +} + +.container__graph-data { + grid-column: 1 / 2; + grid-row: 2 / 3; +} + +.container__graph-config { + grid-column: 2 / 5; + grid-row: 2 / 3; +} + +.container__form { + grid-column: 5/ 6; + grid-row: 1 / 4; +} + +.form-wrapper { + overflow-y: scroll; + max-height: 600px; +} + +.json-data-container { + max-height: 250px; + overflow: scroll; +} + +.submit-button { + margin-top: 22px; +} + +.reset-button { + margin-top: 22px; + margin-left: 8px; +} + +.invisible-button { + background: transparent; + border: none !important; + font-size:0; +} diff --git a/sandbox/utils.js b/sandbox/utils.js new file mode 100644 index 000000000..c06f14309 --- /dev/null +++ b/sandbox/utils.js @@ -0,0 +1,38 @@ +function setValue(obj, access, value) { + if (typeof(access) == 'string') { + access = access.split('.'); + } + + // Check for non existence of root property before advancing + if (!obj[access[0]]) { + obj[access[0]] = {}; + } + + access.length > 1 ? setValue(obj[access.shift()],access,value) : obj[access[0]] = value; +} + +/** + This two functions generate the react-jsonschema-form + schema from some passed graph configuration. + */ +function formMap(k,v) { + return { + title: k, + type: typeof v, + default: v + }; +} + +function generateFormSchema(o, rootSpreadProp, accum={}) { + for(let k of Object.keys(o)) { + const kk = rootSpreadProp ? `${rootSpreadProp}.${k}` : k; + typeof o[k] === 'object' ? generateFormSchema(o[kk], kk, accum) : accum[kk] = formMap(kk, o[k]); + } + + return accum; +} + +export default { + setValue, + generateFormSchema +}; diff --git a/src/js/components/Graph/config.js b/src/components/Graph/config.js similarity index 79% rename from src/js/components/Graph/config.js rename to src/components/Graph/config.js index ff67c0b3b..9e4e81585 100644 --- a/src/js/components/Graph/config.js +++ b/src/components/Graph/config.js @@ -1,6 +1,6 @@ export default { automaticRearrangeAfterDropNode: false, - height: 450, + height: 400, highlightBehavior: false, highlightOpacity: 1, maxZoom: 8, @@ -11,11 +11,6 @@ export default { color: '#d3d3d3', fontSize: 10, fontWeight: 'normal', - highlightColor: 'SAME', - highlightFontSize: 10, - highlightFontWeight: 'normal', - highlightStrokeColor: 'none', - highlightStrokeWidth: 1.5, labelProperty: 'id', mouseCursor: 'pointer', opacity: 1, @@ -23,12 +18,18 @@ export default { size: 200, strokeColor: 'none', strokeWidth: 1.5, - symbolType: 'circle' + symbolType: 'circle', + highlightColor: 'SAME', + highlightFontSize: 10, + highlightFontWeight: 'normal', + highlightStrokeColor: 'none', + highlightStrokeWidth: 1.5 }, link: { color: '#d3d3d3', - highlightColor: '#d3d3d3', opacity: 1, - strokeWidth: 1.5 + semanticStrokeWidth: false, + strokeWidth: 1.5, + highlightColor: '#d3d3d3' } }; diff --git a/src/js/components/Graph/const.js b/src/components/Graph/const.js similarity index 100% rename from src/js/components/Graph/const.js rename to src/components/Graph/const.js diff --git a/src/js/components/Graph/helper.js b/src/components/Graph/helper.js similarity index 87% rename from src/js/components/Graph/helper.js rename to src/components/Graph/helper.js index 2b4e30117..2051f0640 100644 --- a/src/js/components/Graph/helper.js +++ b/src/components/Graph/helper.js @@ -28,9 +28,11 @@ function buildGraph(nodes, nodeCallbacks, links, linkCallbacks, config, someNode function buildNodeProps(node, config, nodeCallbacks, someNodeHighlighted) { const opacity = someNodeHighlighted ? (node.highlighted ? config.node.opacity : config.highlightOpacity) : config.node.opacity; - const fill = node.highlighted ? - (config.node.highlightColor === CONST.KEYWORDS.SAME ? (node.color || config.node.color) : node.highlightColor) - : (node.color || config.node.color); + let fill = node.color || config.node.color; + + if (node.highlighted && config.node.highlightColor !== CONST.KEYWORDS.SAME) { + fill = config.node.highlightColor; + } return { className: CONST.NODE_CLASS_NAME, @@ -69,7 +71,7 @@ function buildNodeLinks(node, nodes, links, config, linkCallbacks, someNodeHighl if (nodes[target]) { const key = `${node.id}${CONST.COORDS_SEPARATOR}${target}`; - const props = buildLinkProps(node.id, target, x1, y1, nodes, config, linkCallbacks, someNodeHighlighted); + const props = buildLinkProps(node.id, target, x1, y1, nodes, links, config, linkCallbacks, someNodeHighlighted); linksComponents.push(); } @@ -79,13 +81,20 @@ function buildNodeLinks(node, nodes, links, config, linkCallbacks, someNodeHighl return linksComponents; } -function buildLinkProps(source, target, x1, y1, nodes, config, linkCallbacks, someNodeHighlighted) { +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; + const linkValue = links[source][target] || links[target][source]; + let strokeWidth = config.link.strokeWidth; + + if (config.link.semanticStrokeWidth) { + strokeWidth += (linkValue * strokeWidth) / 10; + } + return { source, target, @@ -93,7 +102,7 @@ function buildLinkProps(source, target, x1, y1, nodes, config, linkCallbacks, so y1, x2: nodes[target] && nodes[target].x || '0', y2: nodes[target] && nodes[target].y || '0', - strokeWidth: config.link.strokeWidth, + strokeWidth, stroke, className: CONST.LINK_CLASS_NAME, opacity, @@ -147,7 +156,8 @@ function initializeLinks(graphLinks) { links[l.target] = {}; } - links[l.source][l.target] = links[l.target][l.source] = true; + // @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; diff --git a/src/js/components/Graph/index.js b/src/components/Graph/index.js similarity index 65% rename from src/js/components/Graph/index.js rename to src/components/Graph/index.js index 7ff24e883..52b88fc73 100644 --- a/src/js/components/Graph/index.js +++ b/src/components/Graph/index.js @@ -22,7 +22,6 @@ export default class Graph extends React.Component { let {nodes, indexMapping} = GraphHelper.initializeNodes(graph.nodes); let links = GraphHelper.initializeLinks(graph.links); // Matrix of graph connections - this.config = config; this.indexMapping = indexMapping; this.simulation = GraphHelper.createForceSimulation(config.width, config.height); @@ -31,14 +30,25 @@ export default class Graph extends React.Component { this.nodes = graph.nodes; this.state = { + config, links, nodes, nodeHighlighted: false }; } + componentWillReceiveProps(nextProps) { + const config = Utils.merge(DEFAULT_CONFIG, nextProps.config || {}); + + if (JSON.stringify(config) !== JSON.stringify(this.state.config)) { + this.setState({ + config + }); + } + } + componentDidMount() { - if (!this.config.staticGraph) { + if (!this.state.config.staticGraph) { this.simulation.nodes(this.nodes).on('tick', this._tick); const forceLink = d3.forceLink(this.links) @@ -57,12 +67,23 @@ export default class Graph extends React.Component { } // Graph zoom and drag&drop all network - d3.select(`#${this.props.id}-${CONST.GRAPH_WRAPPER_ID}`).call(d3.zoom().scaleExtent([this.config.minZoom, this.config.maxZoom]).on('zoom', this._zoomed)); + this._zoomConfig(); Reflect.deleteProperty(this, 'nodes'); Reflect.deleteProperty(this, 'links'); } + componentDidUpdate = () => { + this._zoomConfig(); + + // If the property staticGraph was activated we want to stop possible ongoing simulation + 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)); + } + _tick = () => this.setState(this.state || {}); _zoomed = () => d3.selectAll(`#${this.props.id}-${CONST.GRAPH_CONTAINER_ID}`).attr('transform', d3.event.transform); @@ -70,24 +91,26 @@ export default class Graph extends React.Component { /*-------------------------------------------------- Drag & Drop --------------------------------------------------*/ - _onDragStart = () => !this.config.staticGraph && this.simulation.stop(); + _onDragStart = () => !this.state.config.staticGraph && this.simulation.stop(); _onDragMove = (_, index) => { - // This is where d3 and react bind; - let draggedNode = this.state.nodes[this.indexMapping[index]]; + if (!this.state.config.staticGraph) { + // This is where d3 and react bind + let draggedNode = this.state.nodes[this.indexMapping[index]]; - draggedNode.x += d3.event.dx; - draggedNode.y += d3.event.dy; + draggedNode.x += d3.event.dx; + draggedNode.y += d3.event.dy; - // Set nodes fixing coords fx and fy - draggedNode['fx'] = draggedNode.x; - draggedNode['fy'] = draggedNode.y; + // Set nodes fixing coords fx and fy + draggedNode['fx'] = draggedNode.x; + draggedNode['fy'] = draggedNode.y; - !this.config.staticGraph && this._tick(); + this._tick(); + } } - _onDragEnd = () => !this.config.staticGraph - && this.config.automaticRearrangeAfterDropNode + _onDragEnd = () => !this.state.config.staticGraph + && this.state.config.automaticRearrangeAfterDropNode && this.simulation.alphaTarget(0.05).restart(); /*--------------------------------------------------*/ @@ -97,13 +120,13 @@ export default class Graph extends React.Component { onMouseOverNode = (index) => { this.props.onMouseOverNode && this.props.onMouseOverNode(index); - this.config.highlightBehavior && this._setHighlighted(index, true); + this.state.config.highlightBehavior && this._setHighlighted(index, true); } onMouseOutNode = (index) => { this.props.onMouseOutNode && this.props.onMouseOutNode(index); - this.config.highlightBehavior && this._setHighlighted(index, false); + this.state.config.highlightBehavior && this._setHighlighted(index, false); } _setHighlighted(index, value) { @@ -120,29 +143,32 @@ export default class Graph extends React.Component { } /*--------------------------------------------------*/ + resetNodesPositions = () => { - Object.values(this.state.nodes).forEach(node => { - if (node.fx && node.fy) { - Reflect.deleteProperty(node, 'fx'); - Reflect.deleteProperty(node, 'fy'); - } - }); + if (!this.state.config.staticGraph) { + Object.values(this.state.nodes).forEach(node => { + if (node.fx && node.fy) { + Reflect.deleteProperty(node, 'fx'); + Reflect.deleteProperty(node, 'fy'); + } + }); - // @TODO: hardcoded alpha target - this.simulation.alphaTarget(0.08).restart(); + // @TODO: hardcoded alpha target + this.simulation.alphaTarget(0.08).restart(); - this.setState(this.state || {}); + this.setState(this.state || {}); + } } /** * simulation.stop() [https://github.com/d3/d3-force/blob/master/src/simulation.js#L84] */ - pauseSimulation = () => this.simulation.stop(); + pauseSimulation = () => !this.state.config.staticGraph && this.simulation.stop(); /** * simulation.restart() [https://github.com/d3/d3-force/blob/master/src/simulation.js#L80] */ - restartSimulation = () => this.simulation.restart(); + restartSimulation = () => !this.state.config.staticGraph && this.simulation.restart(); render() { const { nodes, links } = GraphHelper.buildGraph( @@ -150,13 +176,13 @@ export default class Graph extends React.Component { { onClickNode: this.props.onClickNode, onMouseOverNode: this.onMouseOverNode, onMouseOut: this.onMouseOutNode}, this.state.links, { onClickLink: this.props.onClickLink }, - this.config, + this.state.config, this.state.nodeHighlighted ); const svgStyle = { - height: this.config.height, - width: this.config.width + height: this.state.config.height, + width: this.state.config.width }; return ( diff --git a/src/js/components/Link/index.js b/src/components/Link/index.js similarity index 89% rename from src/js/components/Link/index.js rename to src/components/Link/index.js index 6faaeb5c2..4a27485d9 100644 --- a/src/js/components/Link/index.js +++ b/src/components/Link/index.js @@ -9,9 +9,9 @@ export default class Link extends React.Component { 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.color !== this.props.color || nextProps.stroke !== this.props.stroke - || nextProps.strokeWidth !== this.props.strokeWidth; + || nextProps.strokeWidth !== this.props.strokeWidth + || nextProps.semanticStrokeWidth !== this.props.semanticStrokeWidth; } /** diff --git a/src/js/components/Node/const.js b/src/components/Node/const.js similarity index 100% rename from src/js/components/Node/const.js rename to src/components/Node/const.js diff --git a/src/js/components/Node/helper.js b/src/components/Node/helper.js similarity index 100% rename from src/js/components/Node/helper.js rename to src/components/Node/helper.js diff --git a/src/js/components/Node/index.js b/src/components/Node/index.js similarity index 79% rename from src/js/components/Node/index.js rename to src/components/Node/index.js index f0248648e..e85c27df1 100644 --- a/src/js/components/Node/index.js +++ b/src/components/Node/index.js @@ -7,8 +7,6 @@ import NodeHelper from './helper'; export default class Node extends React.Component { constructor(props) { super(props); - - this.symbol = NodeHelper.buildSvgSymbol(this.props.size, this.props.type); } shouldComponentUpdate(nextProps) { @@ -16,7 +14,14 @@ export default class Node extends React.Component { || nextProps.opacity !== this.props.opacity || nextProps.fill !== this.props.fill || nextProps.fontWeight !== this.props.fontWeight - || nextProps.fontSize !== this.props.fontSize; + || nextProps.fontSize !== this.props.fontSize + || nextProps.label !== this.props.label + || nextProps.cursor !== this.props.cursor + || nextProps.size !== this.props.size + || nextProps.type !== this.props.type + || nextProps.renderLabel !== this.props.renderLabel + || nextProps.stroke !== this.props.stroke + || nextProps.strokeWidth !== this.props.strokeWidth; } /** @@ -48,7 +53,7 @@ export default class Node extends React.Component { const pathProps = { cursor: this.props.cursor, - d: this.symbol, + d: NodeHelper.buildSvgSymbol(this.props.size, this.props.type), fill: this.props.fill, onClick: this.handleOnClickNode, onMouseOut: this.handleOnMouseOut, diff --git a/src/js/err.js b/src/err.js similarity index 100% rename from src/js/err.js rename to src/err.js diff --git a/src/index.html b/src/index.html deleted file mode 100644 index fb8a92e79..000000000 --- a/src/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - react-d3-graph - - - -
- - - diff --git a/src/index.js b/src/index.js new file mode 100644 index 000000000..05fc96d24 --- /dev/null +++ b/src/index.js @@ -0,0 +1,9 @@ +import Graph from './components/Graph'; +import Node from './components/Node'; +import Link from './components/Link'; + +export { + Graph, + Node, + Link +}; diff --git a/src/js/components/Demo.js b/src/js/components/Demo.js deleted file mode 100644 index e9ab9b90e..000000000 --- a/src/js/components/Demo.js +++ /dev/null @@ -1,77 +0,0 @@ -import React from 'react'; - -import graphMock from '../../mock/miserables'; - -import Graph from './Graph/'; - -export default class Layout extends React.Component { - - onClickNode = (id) => window.alert(`clicked node ${id}`); - - onClickLink = (source, target) => window.alert(`clicked link between ${source} and ${target}`); - - onMouseOverNode = () => { - // Do something with the node identifier ... - } - - onMouseOutNode = () => { - // Do something with the node identifier ... - } - - pauseGraphSimulation = () => this.refs.graph.pauseSimulation(); - - restartGraphSimulation = () => this.refs.graph.restartSimulation(); - - resetNodesPositions = () => this.refs.graph.resetNodesPositions(); - - render() { - const width = window.innerWidth - 50; - const graphProps = { - id: 'graph', - data: graphMock.graph || graphMock, - config: { - width, - height: 600, - highlightOpacity: 0.12, - highlightBehavior: true, - node: { - color: '#4286f4', - highlightFontSize: 14, - highlightFontWeight: 'bold', - highlightStrokeColor: '#8f41f4', - highlightStrokeWidth: 2, - labelProperty: 'uid', - size: 100, - strokeColor: 'white' - }, - link: { - highlightColor: '#8f41f4', - strokeWidth: 1 - } - }, - onClickNode: this.onClickNode, - onClickLink: this.onClickLink, - onMouseOverNode: this.onMouseOverNode, - onMouseOutNode: this.onMouseOutNode - }; - - const graphWrapperStyle = { - border: '1px solid black', - marginTop: '25px', - width - }; - - return ( -
-

react-d3-graph

-

Work in progress 🔨👷

- - - -
- -
-
- ); - } -} diff --git a/src/js/utils.js b/src/utils.js similarity index 89% rename from src/js/utils.js rename to src/utils.js index 47b343649..4ed07109c 100644 --- a/src/js/utils.js +++ b/src/utils.js @@ -3,9 +3,9 @@ const MAX_DEPTH = 3; /** * 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 + * @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 * existent o1 properties. */ diff --git a/webpack.config.dist.js b/webpack.config.dist.js new file mode 100644 index 000000000..3c1f91fc0 --- /dev/null +++ b/webpack.config.dist.js @@ -0,0 +1,31 @@ +const path = require('path'); +const webpack = require('webpack'); + +// https://medium.freecodecamp.com/tree-shaking-es6-modules-in-webpack-2-1add6672f31b +// http://moduscreate.com/optimizing-react-es6-webpack-production-build/ + +module.exports = { + context: path.join(__dirname, 'src'), + entry: './index.js', + output: { + path: __dirname + '/dist/', + filename: 'rd3g.bundle.js' + }, + module: { + rules: [ + { + test: /\.jsx?$/, + exclude: /node_modules|sandbox/, + loader: 'babel-loader', + options: { + presets: ['react', 'es2015', 'stage-0'], + plugins: ['react-html-attrs', 'transform-class-properties', 'transform-decorators-legacy'], + } + } + ] + }, + plugins: [ + new webpack.optimize.OccurrenceOrderPlugin(), + new webpack.optimize.UglifyJsPlugin() + ], +}; diff --git a/webpack.config.js b/webpack.config.js index 6fd49b424..56da480b6 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,20 +1,20 @@ -var dev = process.env.NODE_ENV !== 'production'; -var webpack = require('webpack'); -var path = require('path'); - -// https://medium.freecodecamp.com/tree-shaking-es6-modules-in-webpack-2-1add6672f31b -// http://moduscreate.com/optimizing-react-es6-webpack-production-build/ +const path = require('path'); +const webpack = require('webpack'); module.exports = { - context: path.join(__dirname, 'src'), - devtool: dev ? 'source-map' : null, - entry: './js/app.js', + context: path.join(__dirname, 'sandbox'), + devtool: 'source-map', + entry: './index.js', output: { - path: __dirname + '/dist/', - filename: 'rd3g.bundle.js' + path: __dirname + '/sandbox/', + filename: 'rd3g.sandbox.bundle.js' }, module: { rules: [ + { + test: /\.css$/, + use: ['style-loader', 'css-loader'] + }, { test: /\.jsx?$/, exclude: /node_modules/, @@ -26,8 +26,5 @@ module.exports = { } ] }, - plugins: dev ? [] : [ - new webpack.optimize.OccurrenceOrderPlugin(), - new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }), - ], + plugins: [] }; diff --git a/yarn.lock b/yarn.lock index 1b67f8039..903291684 100644 --- a/yarn.lock +++ b/yarn.lock @@ -63,6 +63,10 @@ align-text@^0.1.1, align-text@^0.1.3: longest "^1.0.1" repeat-string "^1.5.2" +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: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" @@ -117,6 +121,10 @@ arr-flatten@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -127,6 +135,14 @@ array-iterate@^1.0.0: dependencies: has "^1.0.1" +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -193,6 +209,17 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" @@ -201,7 +228,7 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: +babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" dependencies: @@ -962,7 +989,7 @@ bail@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.1.tgz#912579de8b391aadf3c5fdf4cd2a0fc225df3bc2" -balanced-match@^0.4.1: +balanced-match@^0.4.1, balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" @@ -1097,6 +1124,13 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + 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" @@ -1154,6 +1188,19 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000655" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000655.tgz#e40b6287adc938848d6708ef83d65b5f54ac1874" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -1220,9 +1267,11 @@ circular-json@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" -classnames@^2.2.3: - version "2.2.5" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" +clap@^1.0.9: + version "1.1.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.1.3.tgz#b3bd36e93dd4cbfb395a3c26896352445265c05b" + dependencies: + chalk "^1.1.3" clean-css@4.0.x: version "4.0.11" @@ -1268,7 +1317,7 @@ clone-stats@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" -clone@^1.0.0: +clone@^1.0.0, clone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" @@ -1284,6 +1333,12 @@ co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" +coa@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3" + dependencies: + q "^1.1.2" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -1292,6 +1347,42 @@ 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: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" @@ -1432,6 +1523,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2: create-hash "^1.1.0" inherits "^2.0.1" +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -1453,6 +1552,27 @@ crypto-browserify@^3.11.0: public-encrypt "^4.0.0" randombytes "^2.0.0" +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: + version "0.28.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.0.tgz#417cfa9789f8cde59a30ccbf3e4da7a806889bad" + dependencies: + babel-code-frame "^6.11.0" + css-selector-tokenizer "^0.7.0" + cssnano ">=2.6.1 <4" + loader-utils "^1.0.2" + lodash.camelcase "^4.3.0" + object-assign "^4.0.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.0.0" + postcss-modules-local-by-default "^1.0.1" + postcss-modules-scope "^1.0.0" + postcss-modules-values "^1.1.0" + source-list-map "^0.1.7" + css-select@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -1462,10 +1582,74 @@ css-select@^1.1.0: domutils "1.5.1" nth-check "~1.0.1" +css-selector-tokenizer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + css-what@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + +"cssnano@>=2.6.1 <4": + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + 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" @@ -1720,7 +1904,7 @@ debug@~2.2.0: dependencies: ms "0.7.1" -decamelize@^1.0.0, decamelize@^1.1.1: +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1732,6 +1916,13 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" @@ -1934,6 +2125,10 @@ duplexer2@^0.1.2, duplexer2@~0.1.0: dependencies: readable-stream "^2.0.2" +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + duplexify@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604" @@ -1953,6 +2148,10 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" +electron-to-chromium@^1.2.7: + version "1.3.3" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.3.tgz#651eb63fe89f39db70ffc8dbd5d9b66958bc6a0e" + elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -2021,6 +2220,23 @@ error@^7.0.0: string-template "~0.2.1" xtend "~4.0.0" +es-abstract@^1.4.3: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.0" + is-callable "^1.1.3" + is-regex "^1.0.3" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: version "0.10.15" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6" @@ -2287,6 +2503,10 @@ espree@^3.1.6, espree@^3.4.0: acorn "^5.0.1" acorn-jsx "^3.0.0" +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + esprima@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -2327,6 +2547,18 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" +event-stream@~3.3.0: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" @@ -2420,6 +2652,10 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + faye-websocket@^0.10.0, faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -2528,6 +2764,10 @@ flat-cache@^1.0.9, flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -2538,6 +2778,10 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -2558,6 +2802,10 @@ fresh@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2586,7 +2834,7 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2: +function-bind@^1.0.2, function-bind@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" @@ -2869,6 +3117,10 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +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-entities@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2" @@ -2963,6 +3215,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" +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" + ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" @@ -2975,6 +3231,10 @@ imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" @@ -3038,6 +3298,10 @@ irregular-plurals@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac" +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + is-absolute@^0.2.2: version "0.2.6" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" @@ -3080,6 +3344,14 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" +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-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" + is-decimal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.0.tgz#940579b6ea63c628080a69e62bda88c8470b4fe0" @@ -3169,6 +3441,10 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -3181,6 +3457,12 @@ is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" +is-regex@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + is-relative@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" @@ -3203,6 +3485,16 @@ is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -3241,6 +3533,10 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" @@ -3264,6 +3560,10 @@ jodid25519@^1.0.0: dependencies: jsbn "~0.1.0" +js-base64@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" @@ -3275,6 +3575,13 @@ js-yaml@^3.3.1, js-yaml@^3.5.1: argparse "^1.0.7" esprima "^3.1.1" +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -3325,6 +3632,10 @@ jsonpointer@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" +jsonschema@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.1.1.tgz#3cede8e3e411d377872eefbc9fdf26383cbc3ed9" + jsprim@^1.2.2: version "1.4.0" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" @@ -3387,6 +3698,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + load-plugin@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/load-plugin/-/load-plugin-2.1.0.tgz#5c688c560261997b47dfd0a7361faeb152acf7f5" @@ -3407,10 +3727,22 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" +loader-utils@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + lodash.assign@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + lodash.cond@^4.3.0: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" @@ -3431,10 +3763,22 @@ lodash.isequal@^4.0.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + lodash.pickby@^4.0.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" +lodash.topath@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.0, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -3463,10 +3807,25 @@ lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" +lru-cache@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + map-cache@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + markdown-escapes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.0.tgz#c8ca19f1d94d682459e0a93c86db27a7ef716b23" @@ -3475,6 +3834,10 @@ markdown-table@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.0.tgz#1f5ae61659ced8808d882554c32e8b3f38dd1143" +math-expression-evaluator@^1.2.14: + version "1.2.16" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9" + mdast-util-compact@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.0.tgz#4c94dedfe35932d5457f29b650b330fdc73e994a" @@ -3608,7 +3971,7 @@ minimist@^1.1.0, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -3740,10 +4103,23 @@ normalize-path@^2.0.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + normalize-uri@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/normalize-uri/-/normalize-uri-1.1.0.tgz#01fb440c7fd059b9d9be8645aac14341efd059dd" +normalize-url@^1.4.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + npm-prefix@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/npm-prefix/-/npm-prefix-1.2.0.tgz#e619455f7074ba54cc66d6d0d37dd9f1be6bcbc0" @@ -3752,6 +4128,18 @@ npm-prefix@^1.2.0: shellsubstitute "^1.1.0" untildify "^2.1.0" +npm-run-all@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.0.2.tgz#a84669348e6db6ccbe052200b4cdb6bfe034a4fe" + dependencies: + chalk "^1.1.3" + cross-spawn "^5.0.1" + minimatch "^3.0.2" + ps-tree "^1.0.1" + read-pkg "^2.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + npmlog@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" @@ -3767,6 +4155,10 @@ nth-check@~1.0.1: dependencies: boolbase "~1.0.0" +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + 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" @@ -3779,6 +4171,10 @@ object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -3997,6 +4393,18 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + pbkdf2@^3.0.3: version "3.0.9" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" @@ -4051,10 +4459,252 @@ portfinder@^1.0.9: debug "^2.2.0" mkdirp "0.5.x" +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-colormin@^2.1.8: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-modules-extract-imports@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341" + dependencies: + postcss "^5.0.4" + +postcss-modules-local-by-default@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce" + dependencies: + css-selector-tokenizer "^0.6.0" + postcss "^5.0.4" + +postcss-modules-scope@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29" + dependencies: + css-selector-tokenizer "^0.6.0" + postcss "^5.0.4" + +postcss-modules-values@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1" + dependencies: + icss-replace-symbols "^1.0.2" + postcss "^5.0.14" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-zindex@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: + version "5.2.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -4107,6 +4757,16 @@ prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" +ps-tree@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" + dependencies: + event-stream "~3.3.0" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + public-encrypt@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" @@ -4125,10 +4785,21 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +q@^1.1.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + qs@6.4.0, qs@^6.2.0, qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" +query-string@^4.1.0: + version "4.3.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.3.tgz#91c90ff7173d9acd9e088b3cc223f9b437865692" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -4180,6 +4851,14 @@ react-dom@15.4.2: loose-envify "^1.1.0" object-assign "^4.1.0" +react-jsonschema-form@0.46.0: + version "0.46.0" + resolved "https://registry.yarnpkg.com/react-jsonschema-form/-/react-jsonschema-form-0.46.0.tgz#7427f0d3179d945d41d0ff1915d8ed301b64c0a0" + dependencies: + jsonschema "^1.0.2" + lodash.topath "^4.5.2" + setimmediate "^1.0.5" + react-router-dom@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.0.0.tgz#4fa4418e14b8cfc5bcc0bdea0c4083fb8c2aef10" @@ -4197,13 +4876,6 @@ react-router@^4.0.0: path-to-regexp "^1.5.3" warning "^3.0.0" -react-spinkit@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/react-spinkit/-/react-spinkit-2.1.1.tgz#a666f02367147de8151c1f7671453d56cef4650f" - dependencies: - classnames "^2.2.3" - object-assign "^4.1.0" - react@15.4.2: version "15.4.2" resolved "https://registry.yarnpkg.com/react/-/react-15.4.2.tgz#41f7991b26185392ba9bae96c8889e7e018397ef" @@ -4233,6 +4905,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + readable-stream@1.0, "readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -4300,6 +4980,20 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" @@ -4323,6 +5017,14 @@ regex-cache@^0.4.2: is-equal-shallow "^0.1.3" is-primitive "^2.0.0" +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -4573,6 +5275,10 @@ 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: + version "1.2.2" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -4646,6 +5352,25 @@ sha.js@^2.3.6: dependencies: inherits "^2.0.1" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + shelljs@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8" @@ -4698,6 +5423,16 @@ sockjs@0.3.18: faye-websocket "^0.10.0" uuid "^2.0.2" +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + source-list-map@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.1.tgz#1a33ac210ca144d1e561f906ebccab5669ff4cb4" @@ -4752,6 +5487,12 @@ spdy@^3.4.1: select-hose "^2.0.0" spdy-transport "^2.0.15" +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -4799,6 +5540,12 @@ stream-combiner2@^1.1.1: duplexer2 "~0.1.0" readable-stream "^2.0.2" +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + stream-http@^2.3.1: version "2.7.0" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.0.tgz#cec1f4e3b494bc4a81b451808970f8b20b4ed5f6" @@ -4813,6 +5560,10 @@ stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" +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-template@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" @@ -4832,6 +5583,14 @@ string-width@^2.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^3.0.0" +string.prototype.padend@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.4.3" + function-bind "^1.0.2" + string_decoder@0.10, string_decoder@^0.10.25, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -4887,6 +5646,12 @@ 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: + version "0.16.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.16.1.tgz#50e325258d4e78421dd9680636b41e8661595d10" + dependencies: + loader-utils "^1.0.2" + subarg@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" @@ -4897,12 +5662,24 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.0, supports-color@^3.1.1: +supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: has-flag "^1.0.0" +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + table@^3.7.8: version "3.8.3" resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" @@ -4964,7 +5741,7 @@ through2@^2.0.0, through2@^2.0.1, through2@~2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" -"through@>=2.2.7 <3", through@^2.3.6: +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -5109,6 +5886,20 @@ unified@^5.0.0: vfile "^2.0.0" x-is-string "^0.1.0" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqid@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1" + dependencies: + macaddress "^0.2.8" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + unique-stream@^2.0.2: version "2.2.1" resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" @@ -5242,6 +6033,10 @@ vary@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" +vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + verror@1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" @@ -5424,10 +6219,20 @@ whatwg-fetch@>=0.10.0: version "2.0.3" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + 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: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" @@ -5483,6 +6288,10 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" +yallist@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + yargs-parser@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"