diff --git a/package.json b/package.json index 9030851..c57c1a9 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,13 @@ "homepage": "https://PracticaDS.github.io/pdes-tp-pochinki/", "private": true, "dependencies": { + "create-react-app": "^3.0.1", + "global": "^4.3.2", "react": "^16.8.6", "react-dom": "^16.8.6", "react-redux": "^7.0.2", + "react-router": "^5.0.1", + "react-router-dom": "^5.0.1", "react-scripts": "2.1.8", "redux": "^4.0.1" }, @@ -19,11 +23,12 @@ "storybook": "start-storybook -p 9009 -s public", "build-storybook": "build-storybook -s public" }, - "husky":{ - "hooks":{ + "husky": { + "hooks": { "pre-push": "CI=true yarn test" } }, + "proxy": "http://localhost:3001", "eslintConfig": { "extends": "react-app" }, diff --git a/src/App.js b/src/App.js index b805102..71e551a 100644 --- a/src/App.js +++ b/src/App.js @@ -1,6 +1,7 @@ import React from 'react'; import './App.css'; import Fabrica from './containers/FabricaContainer'; +//import Login from './components/Login'; const App = () => { return ( diff --git a/src/actions/maquina.js b/src/actions/maquina.js index 4443ff8..4e92a1b 100644 --- a/src/actions/maquina.js +++ b/src/actions/maquina.js @@ -18,4 +18,11 @@ export const selectMaterial = (material) => { type: 'SELECT_MAT', material } +} + +export const selectBlueprint = (blueprint) => { + return { + type: 'SELECT_BLUE', + blueprint + } } \ No newline at end of file diff --git a/src/assets/blueprint.PNG b/src/assets/blueprint.PNG new file mode 100644 index 0000000..f8f4170 Binary files /dev/null and b/src/assets/blueprint.PNG differ diff --git a/src/components/InfoUser.js b/src/components/InfoUser.js new file mode 100644 index 0000000..a179016 --- /dev/null +++ b/src/components/InfoUser.js @@ -0,0 +1,25 @@ +import React from 'react'; + + +const InfoUser = ({match: {params}}) => { + + const username = params.username; + let userN + let loading = true + + fetch('http://localhost:3001/api/users/' + username) + .then(res => res.json()) + .then(user => { + userN = user + loading = false + }) + + return ( +
+

Bienvenido {!loading ? userN.username : "Usuario"}!

+
+ ) + +} + +export default InfoUser; \ No newline at end of file diff --git a/src/components/Login.css b/src/components/Login.css new file mode 100644 index 0000000..4d7960b --- /dev/null +++ b/src/components/Login.css @@ -0,0 +1,34 @@ +.buttonIn { + padding: 7px; + background-color: rgb(202, 204, 209); + border: none; + margin-inline-end: 440px; + display: inline-block; + font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; + +} + +.buttonIn:hover{ + background-color: rgb(153, 153, 155); +} + +.inputIn{ + + padding: 6px; + margin-block-start: 25px; + padding-top: 5px; + padding-right: 200px; + display: inline-block; + margin-left: 400px; + font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; + +} + +h2 { + text-align: center; + font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; + font-size: 30px; + font-weight: bold; + color: azure; + margin-top: 80px; +} \ No newline at end of file diff --git a/src/components/Login.js b/src/components/Login.js new file mode 100644 index 0000000..be35919 --- /dev/null +++ b/src/components/Login.js @@ -0,0 +1,62 @@ +import React from 'react'; +import './Login.css'; +import {Route,NavLink,HashRouter,Redirect} from "react-router-dom"; +import Fabrica from './Fabrica'; +import history from '../history'; + +class Login extends React.Component { + constructor() { + super(); + this.state = { + user: '', + inputUser:'' + } + } + + + loadUser() { + fetch('/api/users/auth/' + this.state.inputUser ) + .then(res => + res.json() + ) + .then(user => { + history.push({pathname:'/user/'+ user._id}) + }); + } + + handleChange(event) { + this.setState({inputUser: event.target.value}); + console.log('input ',this.state.inputUser); + } + + handleSubmit = () => { + if(this.state.inputUser !== ''){ + this.loadUser(); + //history.push({pathname:'game'}); + // alert('Bievenido ' + this.state.user.username); + //chequeo si existe o no y alertas + }else{ + alert('Ingrese su usario por favor'); + } + } + + render() { + return( +
+

Bienvenido a la revolucion industrial!

+ +
+ + { this.handleChange(event) } } /> + + +
+
+
+ ); + } +} + +export default Login; \ No newline at end of file diff --git a/src/components/PanelDetalles.css b/src/components/PanelDetalles.css index 6be3140..af5879a 100644 --- a/src/components/PanelDetalles.css +++ b/src/components/PanelDetalles.css @@ -38,7 +38,7 @@ .panelMats { background-color: blueviolet; height: 280px; - width: 180px; + width: 140px; margin-left: 40px; margin-right: 20px; padding: 4px; @@ -58,4 +58,26 @@ .botonMat:hover { border: 1px solid orange; +} + +.panelBlue { + background-color: blueviolet; + height: 340px; + width: 140px; + margin-left: 40px; + margin-right: 20px; + padding: 4px; + border: 1px solid rgb(179, 214, 214); + border-radius: 4px; + +} + +.botonBlue{ + float:left; + height: 30px; + width: 30px; +} + +.botonBlue:hover{ + border: 1px solid orange; } \ No newline at end of file diff --git a/src/components/PanelDetalles.js b/src/components/PanelDetalles.js index 270d70e..87ccce6 100644 --- a/src/components/PanelDetalles.js +++ b/src/components/PanelDetalles.js @@ -5,6 +5,7 @@ import cobre from '../assets/cobre.PNG' import aluminio from '../assets/aluminio.PNG' import carbon from '../assets/carbon.PNG' import hierro from '../assets/aluminio.PNG' +import blue from '../assets/blueprint.PNG' const renderInfo= (name,costo,frecuencia) => { return
@@ -35,7 +36,24 @@ const renderInfoMat = (onMatClick) => {
} -const PanelDetalles = ({tablero,maquinaSeleccionada,onMatClick}) => { +// ACA HAY QUE AGREGAR UN BOTON PARA SELECCIONAR LA BLUEPRINT +const renderBlueprints = (blueprints,onSelectBlueprint) => { + return
+ { blueprints.map(function(item) { + return
+ blueBot onSelectBlueprint( {recursos: [item.ingrediente1,item.ingrediente2], producto: item.resultado} )}/> +

{item.nombre}

+ +
+ }) + } +
+} + +const PanelDetalles = ({tablero,maquinaSeleccionada,blueprints,onMatClick,onSelectBlueprint}) => { const displayInfoSt= (maquina) => { switch(maquina){ @@ -46,6 +64,15 @@ const PanelDetalles = ({tablero,maquinaSeleccionada,onMatClick}) => { } } + const displayBluePrints = (maquina) => { + switch(maquina){ + case "CRAFTER": + return renderBlueprints(blueprints,onSelectBlueprint) + default: + return
+ } + } + const displayInfo = (maquina) => { switch (maquina){ case "CRAFTER": @@ -69,6 +96,7 @@ const PanelDetalles = ({tablero,maquinaSeleccionada,onMatClick}) => {
{displayInfo(maquinaSeleccionada)} + {displayBluePrints(maquinaSeleccionada)}
diff --git a/src/containers/FabricaContainer.js b/src/containers/FabricaContainer.js index 19de13c..322b923 100644 --- a/src/containers/FabricaContainer.js +++ b/src/containers/FabricaContainer.js @@ -1,5 +1,7 @@ import { connect } from 'react-redux'; import Fabrica from '../components/Fabrica'; +import { withRouter } from 'react-router-dom' + const mapStateToProps = (state) => ( @@ -19,4 +21,4 @@ const FabricaContainer = connect( mapActionsToProps )(Fabrica); -export default FabricaContainer; \ No newline at end of file +export default withRouter(FabricaContainer); \ No newline at end of file diff --git a/src/containers/PanelDetallesContainer.js b/src/containers/PanelDetallesContainer.js index 025577f..56d57a7 100644 --- a/src/containers/PanelDetallesContainer.js +++ b/src/containers/PanelDetallesContainer.js @@ -1,12 +1,16 @@ import { connect } from 'react-redux'; import PanelDetalles from '../components/PanelDetalles'; -import {selectMaterial} from '../actions/maquina' +import {selectMaterial, selectBlueprint} from '../actions/maquina' +import { blueprints } from '../model/maquina'; +import { withRouter } from 'react-router-dom' + const mapStateToProps = (state) => ( { tablero: state.maquinas.tablero, maquinaSeleccionada : state.maquinas.maquinaSeleccionada, - materialSeleccionado: state.maquinas.materialSeleccionado + materialSeleccionado: state.maquinas.materialSeleccionado, + blueprints: blueprints() } ); @@ -14,7 +18,8 @@ const mapStateToProps = (state) => ( const mapActionsToProps = (dispatch) => { return{ - onMatClick: material => dispatch(selectMaterial(material)) + onMatClick: material => dispatch(selectMaterial(material)), + onSelectBlueprint : blueprint => dispatch(selectBlueprint(blueprint)) }; }; @@ -23,4 +28,4 @@ const PanelDetallesContainer = connect( mapActionsToProps )(PanelDetalles); -export default PanelDetallesContainer; \ No newline at end of file +export default withRouter(PanelDetallesContainer); \ No newline at end of file diff --git a/src/containers/PanelEdicionContainer.js b/src/containers/PanelEdicionContainer.js index 2e4e0f7..4518ed9 100644 --- a/src/containers/PanelEdicionContainer.js +++ b/src/containers/PanelEdicionContainer.js @@ -1,6 +1,8 @@ import { connect } from 'react-redux'; import PanelEdicion from '../components/PanelEdicion'; import { selectHerramienta } from '../actions/herramienta'; +import { withRouter } from 'react-router-dom' + const mapStateToProps = (state) => ( @@ -22,4 +24,4 @@ const PanelEdicionContainer = connect( mapActionsToProps )(PanelEdicion); -export default PanelEdicionContainer; \ No newline at end of file +export default withRouter(PanelEdicionContainer); \ No newline at end of file diff --git a/src/containers/SeleccionMaquinasContainer.js b/src/containers/SeleccionMaquinasContainer.js index 5051535..16064ca 100644 --- a/src/containers/SeleccionMaquinasContainer.js +++ b/src/containers/SeleccionMaquinasContainer.js @@ -2,6 +2,8 @@ import { connect } from 'react-redux'; import {selectMaquina} from '../actions/maquina'; import SeleccionMaquinas from '../components/SeleccionMaquinas'; +import { withRouter } from 'react-router-dom' + const mapStateToProps = (state) => ( @@ -23,4 +25,4 @@ const SeleccionMaquinasContainer = connect( mapActionsToProps )(SeleccionMaquinas); -export default SeleccionMaquinasContainer; \ No newline at end of file +export default withRouter(SeleccionMaquinasContainer); \ No newline at end of file diff --git a/src/containers/TableroContainer.js b/src/containers/TableroContainer.js index 6ef558a..87aaaec 100644 --- a/src/containers/TableroContainer.js +++ b/src/containers/TableroContainer.js @@ -1,6 +1,8 @@ import { connect } from 'react-redux'; import Tablero from '../components/Tablero'; import {colocarMaquina} from '../actions/maquina'; +import { withRouter } from 'react-router-dom' + const mapStateToProps = (state) => ( { @@ -22,4 +24,4 @@ const TableroContainer = connect( mapActionsToProps )(Tablero); -export default TableroContainer; \ No newline at end of file +export default withRouter(TableroContainer); \ No newline at end of file diff --git a/src/history.js b/src/history.js new file mode 100644 index 0000000..37a8a9e --- /dev/null +++ b/src/history.js @@ -0,0 +1,3 @@ +import { createBrowserHistory } from 'history'; + +export default createBrowserHistory(); \ No newline at end of file diff --git a/src/index.js b/src/index.js index 7bc825f..75acbf5 100644 --- a/src/index.js +++ b/src/index.js @@ -6,6 +6,13 @@ import storeCreator from './storeCreator'; import { Provider } from 'react-redux'; //import { selectMaquina, colocarMaquina } from './actions/maquina'; import {tick} from './actions/start'; +import { BrowserRouter as Router, Route } from 'react-router-dom' +import Login from './components/Login'; +import history from "./history"; +import InfoUser from './components/InfoUser'; + + + const store = storeCreator(); //store.dispatch(selectMaquina({tipoMaquina: "STARTER", material: "ORO"})); @@ -18,7 +25,11 @@ loop(); render( - + + + + + , document.getElementById('root')); diff --git a/src/model/maquina.js b/src/model/maquina.js index fe52a67..61cec88 100644 --- a/src/model/maquina.js +++ b/src/model/maquina.js @@ -26,6 +26,12 @@ export const valorDeProducto = (recurso) => { return 20; case "HIERRO": return 10; + case "ANILLO DE ORO": + return 300; + case "HORNO": + return 50; + case "TV": + return 120; default: return 0; } @@ -61,3 +67,10 @@ export const rotar = (orientation) => { default: return orientation; } } + +export const blueprints = () => { + return [{nombre:"Blueprint Horno",ingrediente1:"HIERRO",ingrediente2:"CARBON",resultado:"HORNO"}, + {nombre:"Blueprint Anillo",ingrediente1:"ORO FUNDIDO",ingrediente2:"ORO FUNDIDO",resultado:"ANILLO DE ORO"}, + {nombre:"Blueprint TV", ingrediente1:"COBRE", ingrediente2:"ALUMINIO",resultado:"TV"}, + {nombre:"Blueprint Barra", ingrediente1:"HIERRO", ingrediente2:"HIERRO",resultado:"BARRA"}] +} diff --git a/src/reducers/maquinas.js b/src/reducers/maquinas.js index 8c4a067..1245731 100644 --- a/src/reducers/maquinas.js +++ b/src/reducers/maquinas.js @@ -17,6 +17,13 @@ const selectMaterial = (state,material) => { return newState; } +const selectBlueprint = (state,bluePrint) => { + let newState = {...state, bluePrintSeleccionada: bluePrint} + return newState +} + +//COlORCAR CRAFTER CON BLUEPRINT (SIMIL STARTER) +//AGREGAR CAMPO BLUEPRINT EN MAQUINA CUANDO ES CRAFTER const colocarMaquina = (state,idCelda) => { let fila = Math.round(idCelda / 10); let columna = Math.round(idCelda % 10)+1; @@ -24,8 +31,6 @@ const colocarMaquina = (state,idCelda) => { return state; } else{ - console.log('Llego al switch colocar maquina', state.maquinaSeleccionada); - console.log('Llego al switch colocar maquina', state.herramienta); switch(state.herramienta){ case "SELECCIONAR": if(state.maquinaSeleccionada === "STARTER"){ @@ -35,6 +40,9 @@ const colocarMaquina = (state,idCelda) => { }else if(state.maquinaSeleccionada === "SELLER"){ state.tablero.push({type: state.maquinaSeleccionada,x: columna,y: fila, orientacion: "abajo", recurso: []}); } + else if(state.maquinaSeleccionada === "CRAFTER"){ + state.tablero.push({type: state.maquinaSeleccionada,x: columna,y: fila, orientacion: "abajo", recurso: [], bluePrint: state.bluePrintSeleccionada,producto: ''}); + } else{ state.tablero.push({type: state.maquinaSeleccionada,x: columna,y: fila, orientacion: "abajo", recurso: ""}); } @@ -53,6 +61,7 @@ const colocarMaquina = (state,idCelda) => { }; +//AGREGAR EN CRAFTER QUE SI TIENE LOS INGREDIENTES DE LA BLUEPRINT GENERE EL RESULTADO Y LO PASE const aplicarTick = (state) => { let ubicarRecursos = []; let sumaDinero = 0; @@ -60,24 +69,65 @@ const aplicarTick = (state) => { switch (maquina.type){ case "STARTER": let nRecurso = maquina.recurso !== "" ? "" : maquina.material; - let newMaquina = {type: maquina.type,x: maquina.x,y:maquina.y, orientacion: maquina.orientacion,recurso:nRecurso, material: maquina.material}; + let newMaquina = {...maquina,recurso:nRecurso, material: maquina.material}; if(maquina.recurso !== ""){ ubicarRecursos.push(defUbicacion(maquina.x,maquina.y,maquina.orientacion,maquina.recurso)) maquina.recurso = ""; } return newMaquina; + case "CRAFTER": //se podria optimizar utilizando sets + console.log('recurso pre crafter ',maquina.recurso); + console.log('blueprint ', maquina.bluePrint.recursos); + if(maquina.bluePrint !== "" || typeof maquina.bluePrint !== undefined){ + //esta hardcodeado que son 2 recursos por blueprint + let recursosBlue = maquina.recurso.filter( rec => rec === maquina.bluePrint.recursos[0] || rec === maquina.bluePrint.recursos[1] ); + console.log('recursos filt ', recursosBlue); + if(recursosBlue.length >= maquina.bluePrint.recursos.length){ + console.log('ENTROOOO'); + // let hash = [...new Set(maquina.recurso)]; + // maquina.recurso.forEach((v,i) => maquina.recurso.indexOf(v) !== maquina.recurso.lastIndexOf(v) ? maquina.recurso.splice(maquina.recurso.indexOf(v), 1) : null); + let recEliminados = []; + for( var i = 0; i < maquina.recurso.length; i++){ + if(recEliminados < maquina.bluePrint.recursos.length){ + if(maquina.recurso[i] === maquina.bluePrint.recursos[0] || maquina.recurso[i] === maquina.bluePrint.recursos[1] ){ + recEliminados.push(maquina.recurso[i]) + maquina.recurso.splice(i, 1); + console.log('contador elims ', recEliminados); + } + } + console.log('lista elims ', recEliminados); + } + recEliminados = []; + //console.log('hash ', hash); + console.log('hash ', maquina.recurso); + console.log('hash de recursos ', maquina.bluePrint.producto); + return {...maquina,orientacion: maquina.orientacion,recurso:maquina.recurso,blueprint: state.bluePrintSeleccionada, producto: maquina.bluePrint.producto} + } + if(maquina.producto !== null){ + ubicarRecursos.push(defUbicacion(maquina.x,maquina.y,maquina.orientacion,maquina.bluePrint.producto)); + return {...maquina,producto:null}; + } + + + } + return maquina; + case "SELLER": if(maquina.recurso !== ""){ maquina.recurso.forEach((rec) =>{ sumaDinero += valorDeProducto(rec); }) - return {type: maquina.type,x: maquina.x,y:maquina.y, orientacion: maquina.orientacion,recurso:[]} + return {...maquina,recurso:[]} + } + if(maquina.producto !== "" && typeof maquina.producto !== undefined){ + sumaDinero += valorDeProducto(maquina.producto); + return {...maquina, producto: ""} } return maquina default: if(maquina.recurso !== ""){ ubicarRecursos.push(defUbicacion(maquina.x,maquina.y,maquina.orientacion,maquina.recurso)) - return {type: maquina.type,x: maquina.x,y:maquina.y, orientacion: maquina.orientacion,recurso:""} + return {...maquina,recurso:""} } return maquina } @@ -87,7 +137,7 @@ const aplicarTick = (state) => { newTab = moverRecurso(newTab,ubicarRecursos[i]) } }; - return {tablero: newTab,maquinaSeleccionada:state.maquinaSeleccionada,herramienta: state.herramienta,orientacionSeleccionada: state.orientacionSeleccionada,materialSeleccionado: state.materialSeleccionado, dinero: state.dinero + sumaDinero} + return {...state,tablero: newTab, dinero: state.dinero + sumaDinero} } @@ -176,6 +226,9 @@ const moverRecurso = (tab,ubicarRecursos) => { case "SELLER": maq.recurso.push(ubicarRecursos.recurso) return {type: maq.type,x: maq.x,y:maq.y, orientacion: maq.orientacion,recurso:maq.recurso } + case "CRAFTER": + maq.recurso.push(ubicarRecursos.recurso) + return {type: maq.type,x: maq.x,y:maq.y, orientacion: maq.orientacion,recurso:maq.recurso, bluePrint: maq.bluePrint } default: return {type: maq.type,x: maq.x,y:maq.y, orientacion: maq.orientacion,recurso:ubicarRecursos.recurso, material: maq.material} } } @@ -198,6 +251,8 @@ const maquinas = (state={tablero:[],maquinaSeleccionada:"NO",herramienta:"SELECC return selectHerramienta(state, action.herramienta); case 'SELECT_MAT': return selectMaterial(state,action.material); + case 'SELECT_BLUE': + return selectBlueprint(state,action.blueprint) default: return state; } diff --git a/yarn.lock b/yarn.lock index e58eacd..f18d21a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1181,6 +1181,13 @@ dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@^7.4.0": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" + integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" @@ -3286,6 +3293,13 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.0.tgz#9523e001306a32444b907423f1de2164222f6ab1" integrity sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw== +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + bluebird@^3.3.5: version "3.5.4" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" @@ -3490,6 +3504,11 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" +buffer-from@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-0.1.2.tgz#15f4b9bcef012044df31142c14333caf6e0260d0" + integrity sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg== + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -3519,6 +3538,11 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -3969,7 +3993,7 @@ commander@2.17.x, commander@~2.17.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.11.0: +commander@2.19.0, commander@^2.11.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== @@ -4215,6 +4239,23 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-react-app@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/create-react-app/-/create-react-app-3.0.1.tgz#a7a29de5ca5cb5fc4cca3e2f558fdfa838d37fc9" + integrity sha512-uOLGMyegGQbm7/kWbHUzsqM16MiehRItBq3WXamzYsKLXdXXAHxEEX57WqcFwd/XybeD/1/KSYkroJdEyk7swA== + dependencies: + chalk "2.4.2" + commander "2.19.0" + cross-spawn "6.0.5" + envinfo "7.1.0" + fs-extra "7.0.1" + hyperquest "2.1.3" + inquirer "6.2.2" + semver "6.0.0" + tar-pack "3.4.1" + tmp "0.0.33" + validate-npm-package-name "3.0.0" + create-react-context@<=0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.2.tgz#9836542f9aaa22868cd7d4a6f82667df38019dca" @@ -4897,6 +4938,13 @@ dotenv@^6.0.0, dotenv@^6.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== +duplexer2@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= + dependencies: + readable-stream "~1.1.9" + duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -5020,6 +5068,11 @@ entities@^1.1.1, entities@~1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== +envinfo@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.1.0.tgz#c64f80bbf5faaafc962eef76c0d871c6c672eec0" + integrity sha512-38LJhrmyQafVInoYlaEDxomIfjtK+HUtp1JsInWdKtpxk0MlTU60fqYHg0LrKgxxJuq6H89ddw4IkxfQejZ77g== + enzyme-adapter-react-16@^1.12.1: version "1.12.1" resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.12.1.tgz#6a2d74c80559d35ac0a91ca162fa45f4186290cf" @@ -5962,6 +6015,25 @@ fsevents@^1.2.3, fsevents@^1.2.7: nan "^2.9.2" node-pre-gyp "^0.10.0" +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU= + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -6332,7 +6404,7 @@ highlight.js@~9.12.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" integrity sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4= -history@^4.7.2: +history@^4.7.2, history@^4.9.0: version "4.9.0" resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca" integrity sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA== @@ -6363,7 +6435,7 @@ hoist-non-react-statics@^2.3.1: resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== -hoist-non-react-statics@^3.3.0: +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== @@ -6551,6 +6623,15 @@ husky@^2.2.0: run-node "^1.0.0" slash "^2.0.0" +hyperquest@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/hyperquest/-/hyperquest-2.1.3.tgz#523127d7a343181b40bf324e231d2576edf52633" + integrity sha512-fUuDOrB47PqNK/BAMOS13v41UoaqIxqSLHX6CAbOD7OfT+/GCWO1/vPLfTNutOeXrv1ikuaZ3yux+33Z9vh+rw== + dependencies: + buffer-from "^0.1.1" + duplexer2 "~0.0.2" + through2 "~0.6.3" + iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -6697,7 +6778,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= @@ -6731,7 +6812,7 @@ inquirer@6.2.1: strip-ansi "^5.0.0" through "^2.3.6" -inquirer@^6.1.0: +inquirer@6.2.2, inquirer@^6.1.0: version "6.2.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== @@ -7201,6 +7282,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + 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" @@ -8134,7 +8220,7 @@ loglevel@^1.4.1: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -8396,6 +8482,15 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" +mini-create-react-context@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz#79fc598f283dd623da8e088b05db8cddab250189" + integrity sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw== + dependencies: + "@babel/runtime" "^7.4.0" + gud "^1.0.0" + tiny-warning "^1.0.2" + mini-css-extract-plugin@0.5.0, mini-css-extract-plugin@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0" @@ -8415,7 +8510,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -8484,7 +8579,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, 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" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -8935,7 +9030,7 @@ on-headers@~1.0.1: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -9248,6 +9343,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= + dependencies: + isarray "0.0.1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -10555,7 +10657,7 @@ react-inspector@^2.3.0, react-inspector@^2.3.1: is-dom "^1.0.9" prop-types "^15.6.1" -react-is@^16.7.0, react-is@^16.8.6: +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== @@ -10622,6 +10724,35 @@ react-resize-detector@^3.2.1: prop-types "^15.6.2" resize-observer-polyfill "^1.5.1" +react-router-dom@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.1.tgz#ee66f4a5d18b6089c361958e443489d6bab714be" + integrity sha512-zaVHSy7NN0G91/Bz9GD4owex5+eop+KvgbxXsP/O+iW1/Ln+BrJ8QiIR5a6xNPtrdTvLkxqlDClx13QO1uB8CA== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.0.1" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.0.1.tgz#04ee77df1d1ab6cb8939f9f01ad5702dbadb8b0f" + integrity sha512-EM7suCPNKb1NxcTZ2LEOWFtQBQRQXecLxVpdsP4DW4PbbqYWeRiLyV/Tt1SdCrvT2jcyXAXmVTmzvSzrPR63Bg== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.3.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + react-scripts@2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-2.1.8.tgz#21195bb928b2c0462aa98b2d32edf7d034cff2a9" @@ -10764,7 +10895,7 @@ read-pkg@^5.0.0: parse-json "^4.0.0" type-fest "^0.4.1" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -10777,6 +10908,16 @@ read-pkg@^5.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" +"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" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readable-stream@^3.0.6, readable-stream@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.2.0.tgz#de17f229864c120a9f56945756e4f32c4045245d" @@ -10786,6 +10927,16 @@ readable-stream@^3.0.6, readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -11193,7 +11344,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -11359,7 +11510,7 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== -semver@^6.0.0: +semver@6.0.0, semver@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== @@ -11903,6 +12054,11 @@ string_decoder@^1.0.0, string_decoder@^1.1.1: dependencies: safe-buffer "~5.1.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -12100,6 +12256,29 @@ tapable@^1.0.0, tapable@^1.1.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== +tar-pack@3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + integrity sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg== + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + tar@^4: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" @@ -12200,6 +12379,14 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" +through2@~0.6.3: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -12232,12 +12419,12 @@ tiny-invariant@^1.0.2: resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.4.tgz#346b5415fd93cb696b0c4e8a96697ff590f92463" integrity sha512-lMhRd/djQJ3MoaHEBrw8e2/uM4rs9YMNk0iOr8rHQ0QdbM7D4l0gFl3szKdeixrlyfm9Zqi4dxHCM2qVG8ND5g== -tiny-warning@^1.0.0: +tiny-warning@^1.0.0, tiny-warning@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.2.tgz#1dfae771ee1a04396bdfde27a3adcebc6b648b28" integrity sha512-rru86D9CpQRLvsFG5XFdy0KdLAvjdQDyZCsRcuu60WtzFylDM3eAWSxEVz5kzL2Gp544XiUvPbVKtOA/txLi9Q== -tmp@^0.0.33: +tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== @@ -12409,6 +12596,11 @@ uglify-js@3.4.x, uglify-js@^3.1.4: commander "~2.17.1" source-map "~0.6.1" +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -12622,6 +12814,13 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + value-equal@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" @@ -13171,7 +13370,7 @@ xregexp@4.0.0: resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=