Compare commits

...

9 Commits

Author SHA1 Message Date
dependabot[bot]
8f69bdfd92 Bump elliptic from 6.5.1 to 6.5.4
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.1 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.1...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-09 21:30:33 +00:00
Harmony
e158b5ccd6 switching between sprints 2020-03-30 15:41:10 -04:00
Harmony
aafba656c8 Bit o stylin' 2020-03-30 10:21:16 -04:00
Harmony
17de3426e2 can login with google to view boxes 2020-03-02 10:13:01 -05:00
Harmony
f58d607c5d Able to switch sprints 2019-11-25 13:27:34 -05:00
Harmony
ddaf3df1a3 added ability to cross items off 2019-11-25 10:24:32 -05:00
Harmony
4398ee2d45 Can delete any item from db except last one in list 2019-11-25 10:04:50 -05:00
Harmony
3b9ee304db writing to each box 2019-11-15 14:27:56 -05:00
Harmony
f5c8edd74c Reading from each box and writing to one 2019-11-15 11:43:03 -05:00
18 changed files with 15023 additions and 86 deletions

14654
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -3,10 +3,12 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@reach/router": "^1.2.1",
"firebase": "^7.2.2", "firebase": "^7.2.2",
"node-sass": "^4.13.0", "node-sass": "^4.13.0",
"react": "^16.11.0", "react": "^16.11.0",
"react-dom": "^16.11.0", "react-dom": "^16.11.0",
"react-firebaseui": "^4.1.0",
"react-redux": "^7.1.1", "react-redux": "^7.1.1",
"react-scripts": "3.2.0", "react-scripts": "3.2.0",
"redux": "^4.0.4", "redux": "^4.0.4",

View File

@@ -1,16 +1,48 @@
import React from "react"; import React, {useState, useEffect} from "react";
import StyledFirebaseAuth from 'react-firebaseui/StyledFirebaseAuth';
import firebase from'firebase'
import { Provider } from "react-redux"; import { Provider } from "react-redux";
import { Router } from "@reach/router";
import Boxes from "./boxes/Boxes"; import Boxes from "./boxes/Boxes";
import styles from "./App.module.css"; import SignedIn from "./SignedIn/SignedIn.js";
import setupStore from "./store/setupStore.js"; import setupStore from "./store/setupStore.js";
const config = {
apiKey: "AIzaSyC5krz4RBiT87RK7cEidh3n-A4H63uGcyM",
authDomain: "retrod-7e2cd.firebaseapp.com",
};
const uiConfig = {
signInFlow: 'popup',
signInSuccessUrl: '/',
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
]
};
function App() { function App() {
const [sprint, setSprint] = useState(1);
const [isSignedIn, setSignIn] = useState(false)
useEffect(() => {
firebase.auth().onAuthStateChanged(user => {
setSignIn(!!user)
})
})
return ( return (
<Provider store={setupStore()}> <Provider store={setupStore()}>
<div className={styles.grid}> <Router>
<Boxes sectionName={"What Went Well"} /> <Boxes exact path={`/` + sprint} />
<Boxes sectionName={"What Could Be Better"} /> </Router>
<Boxes sectionName={"Questions"} /> <div>
{isSignedIn ? (
<>
<SignedIn/>
</>
) : (
<>
<h1>You're Not Signed In</h1>
<StyledFirebaseAuth uiConfig={uiConfig} firebaseAuth={firebase.auth()}/>
</>
)
}
</div> </div>
</Provider> </Provider>
); );

View File

@@ -1,9 +1,25 @@
import React from 'react'; import React from 'react';
import { databaseRef } from '../store/firebase.js'
import styles from "./items.module.css";
export default function Item({ item }) { export default function Item({ item, boxId, sprint }) {
const handleClick = e => {
let url;
if(boxId === "1"){
url = `retros/` + sprint + `/www/`
} else if(boxId === "2"){
url = `retros/` + sprint + `/!www/`
} else if(boxId === "3"){
url = `retros/` + sprint + `/questions/`
} else {
url = 'retros/1/a/'
}
databaseRef.ref(url + item.id + `/completed`).set(item.completed === false ? true : false)
}
return ( return (
<div style={{ textDecoration: item.completed ? "line-through" : "" }}> <div className={styles.flexItem}>
{item.title} <p style={{ textDecoration: item.completed ? "line-through" : "" }}>{item.title}</p>
<button onClick={handleClick}>{item.completed === false ? <p className={styles.checkmark}></p> : <p className={styles.redx}>x</p>}</button>
</div> </div>
) )
} }

View File

@@ -0,0 +1,15 @@
.flexItem{
display: flex;
justify-content: space-between;
}
button{
background: none;
border: none;
}
.checkmark{
color: green;
cursor: pointer;
}
.redx{
color: red;
}

View File

@@ -1,16 +1,37 @@
import React, {useState} from 'react'; import React, {useState} from 'react';
import { databaseRef } from '../store/firebase.js'
import uuid from "uuid";
export default function NewItem({ addItem }) { export default function NewItem({ addItem, boxId, sprint }) {
const [value, setValue ] = useState(""); const [value, setValue ] = useState("");
const handleSubmit = e => { const handleSubmit = e => {
e.preventDefault(); e.preventDefault();
if(!value) return; let retroRef;
let url;
addItem(value); if(boxId === "1"){
setValue(""); url = `retros/` + sprint + `/www`;
retroRef = databaseRef.ref(url);
} else if(boxId === "2"){
url = `retros/` + sprint + `/!www`;
retroRef = databaseRef.ref(url);
} else if(boxId === "3"){
url = `retros/` + sprint + `/questions`;
retroRef = databaseRef.ref(url);
} else {
url = 'retros/1/a';
retroRef = databaseRef.ref(url);
}
const item = {
completed: false,
id: uuid.v4(),
title: value,
}
let objectId = retroRef.push(item);
databaseRef.ref(url + `/` + objectId.key + `/id`).set(objectId.key)
setValue("")
} }
return ( return (
<div>
<form onSubmit={handleSubmit}> <form onSubmit={handleSubmit}>
<input <input
type="text" type="text"
@@ -19,5 +40,6 @@ export default function NewItem({ addItem }) {
onChange={e => setValue(e.target.value)} onChange={e => setValue(e.target.value)}
/> />
</form> </form>
</div>
) )
} }

21
src/SignedIn/SignedIn.js Normal file
View File

@@ -0,0 +1,21 @@
import React from "react";
import firebase from'firebase';
import SprintSelect from "../sprintSelect/SprintSelect"
import styles from "./signedIn.module.css";
export default function SignedIn() {
return (
<div>
<div className={styles.alignRight}>
<div className={styles.marginRight}>
<p>{firebase.auth().currentUser.displayName}</p>
<div>
<img align="right" className={styles.profilePicture} alt='user profile' src={firebase.auth().currentUser.photoURL} />
</div>
<button className={styles.signOutButton} onClick={() => firebase.auth().signOut()}>Sign Out</button>
</div>
</div>
<SprintSelect />
</div>
)
}

View File

@@ -0,0 +1,25 @@
body{
background: lightseagreen;
}
.alignRight{
width: 100%;
display: flex;
flex-direction: column;
align-items: flex-end;
}
.marginRight{
margin-right: 1rem;
}
.signOutButton{
background: none;
border: none;
text-decoration: underline;
cursor: pointer;
width: 100%;
text-align: right;
padding: 0;
margin-top: 1rem;
}
.alignRight .profilePicture{
max-width: 50px;
}

View File

@@ -2,12 +2,11 @@ import React from 'react';
import styles from './Boxes.module.css' import styles from './Boxes.module.css'
import Cards from '../cards/Cards.js' import Cards from '../cards/Cards.js'
export default function Boxes({ sectionName }) { export default function Boxes({ sectionName, boxId, sprint }) {
return ( return (
<div> <div>
<h3>{sectionName}</h3>
<div className={styles.box}> <div className={styles.box}>
<Cards /> <Cards sectionName={sectionName} boxId={boxId} sprint={sprint} />
</div> </div>
</div> </div>
) )

View File

@@ -1,3 +1,4 @@
.box{ .box{
border: .15rem solid black; border: .15rem solid black;
background: lightgrey;
} }

View File

@@ -2,43 +2,42 @@ import React, { useState, useEffect, useMemo } from 'react';
import { databaseRef } from '../store/firebase.js' import { databaseRef } from '../store/firebase.js'
import Item from '../Items/Items.js'; import Item from '../Items/Items.js';
import NewItem from '../NewItem/NewItem.js' import NewItem from '../NewItem/NewItem.js'
import uuid from "uuid"; import DeleteItem from '../deleteItem/DeleteItem.js'
import styles from "./cards.module.css";
export function Cards({item, setItem}) {
const addItem = title => {
const newItem = [...item, {title, completed: false, id: uuid.v4()}];
setItem(newItem)
}
const deleteItem = id => {
const deleted = item.reduce((acc, current) => {
if(current.id !== id){
return [...acc, current];
}
return [...acc, {...current, completed: true}]
}, [])
setItem(deleted)
}
export function Cards({item, setItem, boxId, sprint, sectionName, sprint_id}) {
return ( return (
<> <>
<h3>{sectionName}</h3>
{item.map((i, index) => ( {item.map((i, index) => (
<div key={i.id}> <div className={i.sprint_id === sprint ? styles.cardBackground : styles.hide} key={i.id}>
<Item <Item
item={i} item={i}
index={index} index={index}
boxId={boxId}
sprint={sprint}
/> />
<button onClick={() => deleteItem(i.id) }>x</button> <DeleteItem item={i} boxId={boxId} sprint={sprint}/>
</div> </div>
))} ))}
<NewItem addItem={addItem} /> <NewItem sprint={sprint} boxId={boxId}/>
</> </>
) )
} }
export default function FirebaseWrapper() { export default function FirebaseWrapper({sectionName, boxId, sprint}) {
const [cards, setCards] = useState(null) const [cards, setCards] = useState(null)
const retroRef = useMemo(() => databaseRef.ref('retros/1'), []); let retro;
if(boxId === "1"){
retro = databaseRef.ref(`retros/` + sprint + `/www`);
} else if(boxId === "2"){
retro = databaseRef.ref(`retros/` + sprint + `/!www`);
} else if(boxId === "3"){
retro = databaseRef.ref(`retros/` + sprint + `/questions`);
} else {
retro = databaseRef.ref('retros/1/a');
}
const retroRef = useMemo(() => databaseRef.ref(retro), []);
useEffect(() => { useEffect(() => {
retroRef.on('value', function(snapshot) { retroRef.on('value', function(snapshot) {
const values = Object.values(snapshot.val()) const values = Object.values(snapshot.val())
@@ -52,5 +51,5 @@ export default function FirebaseWrapper() {
if(!cards) { if(!cards) {
return <div>loading...</div>; return <div>loading...</div>;
}; };
return <Cards item={cards} setItem={()=> {}}/> return <Cards sectionName={sectionName} item={cards} boxId={boxId} sprint={sprint} setItem={()=> {}}/>
} }

View File

@@ -0,0 +1,8 @@
.cardBackground{
background: white;
margin: .5em;
padding: 1em;
}
.hide{
display: none;
}

View File

@@ -1,12 +1,31 @@
import React, {useState} from 'react'; import React from 'react';
import { databaseRef } from '../store/firebase.js'
import styles from "./deleteItem.module.css";
export default function DeleteItem({ deleteItem }) { export default function DeleteItem({ item, boxId, objectId, sprint }) {
// const [value, setValue ] = useState("");
const handleClick = e => { const handleClick = e => {
deleteItem(value); let retroRef;
setValue(""); if(boxId === "1"){
retroRef = databaseRef.ref(`retros/` + sprint + `/www/` + item.id);
} else if(boxId === "2"){
retroRef = databaseRef.ref(`retros/` + sprint + `/!www/` + item.id);
} else if(boxId === "3"){
retroRef = databaseRef.ref(`retros/` + sprint + `/questions/` + item.id);
} else {
retroRef = databaseRef.ref(`retros/1/a/` + item.id);
}
// const item = {
// completed: false,
// id: uuid.v4(),
// title: value,
// }
// databaseRef.ref.remove(retroRef);
// setValue("")
retroRef.remove()
} }
return ( return (
<button onClick={handleClick}>x</button> <button className={styles.deleteButton} onClick={handleClick}>DELETE</button>
) )
} }

View File

@@ -0,0 +1,10 @@
.deleteButton{
color: darkred;
width: 100%;
display: flex;
justify-content: flex-end;
font-size: .5em;
font-weight: bolder;
letter-spacing: 1px;
cursor: pointer;
}

View File

@@ -0,0 +1,54 @@
import React, { useState, useEffect, useMemo } from 'react';
import Boxes from "../boxes/Boxes";
import { databaseRef } from '../store/firebase.js'
import styles from "../sprintSelect/sprintSelect.module.css";
export function SprintSelect({item}) {
const [sprint, setSprint] = useState(1);
let sprintArray = [];
let sortedSprint;
sortedSprint = item.map((i, index) => (
sprintArray.push(i.sprint_id)
))
.reduce((unique, item) => {
return unique.includes(item) ? unique : [...unique, item]
}, [])
.sort();
let dropdownSprint;
dropdownSprint = sortedSprint.map((i, index) => (
<option onClick={() => setSprint(i)}>{i}</option>
));
return (
<div>
<label>Choose Sprint:</label>
<select>
{dropdownSprint}
</select>
<h3>Sprint {sprint}</h3>
<div className={styles.grid}>
<Boxes sectionName={"What Went Well"} sprint={sprint} boxId={'1'} />
<Boxes sectionName={"What Could Be Better"} sprint={sprint} boxId={'2'}/>
<Boxes sectionName={"Questions"} sprint={sprint} boxId={'3'}/>
</div>
</div>
)
}
export default function FirebaseWrapper() {
const [cards, setCards] = useState(null)
let retro = databaseRef.ref(`retros/1/www`);
const retroRef = useMemo(() => databaseRef.ref(retro), []);
useEffect(() => {
retroRef.on('value', function(snapshot) {
const values = Object.values(snapshot.val())
setCards(values)
});
return () => {
retroRef.off();
}
}, [retroRef]);
if(!cards) {
return <div>loading...</div>;
};
return <SprintSelect item={cards} setItem={()=> {}}/>
}

View File

@@ -1366,6 +1366,16 @@
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
"@reach/router@^1.2.1":
version "1.3.4"
resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c"
integrity sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==
dependencies:
create-react-context "0.3.0"
invariant "^2.2.3"
prop-types "^15.6.1"
react-lifecycles-compat "^3.0.4"
"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": "@svgr/babel-plugin-add-jsx-attribute@^4.2.0":
version "4.2.0" version "4.2.0"
resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1"
@@ -2359,10 +2369,10 @@ bluebird@^3.5.5:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de"
integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9:
version "4.11.8" version "4.12.0"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
body-parser@1.19.0: body-parser@1.19.0:
version "1.19.0" version "1.19.0"
@@ -2421,7 +2431,7 @@ braces@^2.3.1, braces@^2.3.2:
split-string "^3.0.2" split-string "^3.0.2"
to-regex "^3.0.1" to-regex "^3.0.1"
brorand@^1.0.1: brorand@^1.0.1, brorand@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
@@ -3147,6 +3157,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1" safe-buffer "^5.0.1"
sha.js "^2.4.8" sha.js "^2.4.8"
create-react-context@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c"
integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==
dependencies:
gud "^1.0.0"
warning "^4.0.3"
cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5:
version "6.0.5" version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@@ -3604,6 +3622,11 @@ detect-port-alt@1.1.6:
address "^1.0.1" address "^1.0.1"
debug "^2.6.0" debug "^2.6.0"
dialog-polyfill@^0.4.7:
version "0.4.10"
resolved "https://registry.yarnpkg.com/dialog-polyfill/-/dialog-polyfill-0.4.10.tgz#c4ea68a0deed4abb59a6a2a025c548b278cd532e"
integrity sha512-j5yGMkP8T00UFgyO+78OxiN5vC5dzRQF3BEio+LhNvDbyfxWBsi3sfPArDm54VloaJwy2hm3erEiDWqHRC8rzw==
diff-sequences@^24.9.0: diff-sequences@^24.9.0:
version "24.9.0" version "24.9.0"
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
@@ -3784,17 +3807,17 @@ electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.295:
integrity sha512-s5hv+TSJSVRsxH190De66YHb50pBGTweT9XGWYu/LMR20KX6TsjFzObo36CjVAzM+PUeeKSBRtm/mISlCzeojQ== integrity sha512-s5hv+TSJSVRsxH190De66YHb50pBGTweT9XGWYu/LMR20KX6TsjFzObo36CjVAzM+PUeeKSBRtm/mISlCzeojQ==
elliptic@^6.0.0: elliptic@^6.0.0:
version "6.5.1" version "6.5.4"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
integrity sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg== integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
dependencies: dependencies:
bn.js "^4.4.0" bn.js "^4.11.9"
brorand "^1.0.1" brorand "^1.1.0"
hash.js "^1.0.0" hash.js "^1.0.0"
hmac-drbg "^1.0.0" hmac-drbg "^1.0.1"
inherits "^2.0.1" inherits "^2.0.4"
minimalistic-assert "^1.0.0" minimalistic-assert "^1.0.1"
minimalistic-crypto-utils "^1.0.0" minimalistic-crypto-utils "^1.0.1"
emoji-regex@^7.0.1, emoji-regex@^7.0.2: emoji-regex@^7.0.1, emoji-regex@^7.0.2:
version "7.0.3" version "7.0.3"
@@ -4468,6 +4491,14 @@ firebase@^7.2.2:
"@firebase/storage" "0.3.16" "@firebase/storage" "0.3.16"
"@firebase/util" "0.2.31" "@firebase/util" "0.2.31"
firebaseui@^4.1.0:
version "4.7.3"
resolved "https://registry.yarnpkg.com/firebaseui/-/firebaseui-4.7.3.tgz#9f7601610a8e5822ad76a33c86b104a459ac4f27"
integrity sha512-KKeZQS2fO2SrZFIsEmG6GrTm/+Na8Vk+OM9wnNgP8FtUw6h4S5oCPtebBREr9ETlDFvIK88gaHvp5bvF96yogA==
dependencies:
dialog-polyfill "^0.4.7"
material-design-lite "^1.2.0"
flat-cache@^2.0.1: flat-cache@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
@@ -4822,6 +4853,11 @@ grpc@1.24.1:
node-pre-gyp "^0.13.0" node-pre-gyp "^0.13.0"
protobufjs "^5.0.3" protobufjs "^5.0.3"
gud@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==
gzip-size@5.1.1: gzip-size@5.1.1:
version "5.1.1" version "5.1.1"
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
@@ -4950,7 +4986,7 @@ hex-color-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
hmac-drbg@^1.0.0: hmac-drbg@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
@@ -5256,7 +5292,7 @@ inflight@^1.0.4:
once "^1.3.0" once "^1.3.0"
wrappy "1" wrappy "1"
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4" version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -5322,7 +5358,7 @@ internal-ip@^4.2.0:
default-gateway "^4.2.0" default-gateway "^4.2.0"
ipaddr.js "^1.9.0" ipaddr.js "^1.9.0"
invariant@^2.2.2, invariant@^2.2.4: invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4:
version "2.2.4" version "2.2.4"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
@@ -6587,6 +6623,11 @@ map-visit@^1.0.0:
dependencies: dependencies:
object-visit "^1.0.0" object-visit "^1.0.0"
material-design-lite@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/material-design-lite/-/material-design-lite-1.3.0.tgz#d004ce3fee99a1eeb74a78b8a325134a5f1171d3"
integrity sha1-0ATOP+6Zoe63Sni4oyUTSl8RcdM=
md5.js@^1.3.4: md5.js@^1.3.4:
version "1.3.5" version "1.3.5"
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
@@ -6765,7 +6806,7 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: minimalistic-crypto-utils@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
@@ -8493,7 +8534,7 @@ prompts@^2.0.1:
kleur "^3.0.3" kleur "^3.0.3"
sisteransi "^1.0.3" sisteransi "^1.0.3"
prop-types@^15.6.2, prop-types@^15.7.2: prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2:
version "15.7.2" version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@@ -8749,11 +8790,23 @@ react-error-overlay@^6.0.3:
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.3.tgz#c378c4b0a21e88b2e159a3e62b2f531fd63bf60d" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.3.tgz#c378c4b0a21e88b2e159a3e62b2f531fd63bf60d"
integrity sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw== integrity sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw==
react-firebaseui@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/react-firebaseui/-/react-firebaseui-4.1.0.tgz#fbd8381432b53b58ce56ee86df81e2a6e40af7b6"
integrity sha512-Y5pAom+W6/R5xZeF4xdvYiP7tObo7GDGWra1Pf2td+FxhtXtGQXQTKdW5Rs4js5zIuN0A3fApZzO+3sa1MHl9Q==
dependencies:
firebaseui "^4.1.0"
react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0: react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0:
version "16.11.0" version "16.11.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.11.0.tgz#b85dfecd48ad1ce469ff558a882ca8e8313928fa" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.11.0.tgz#b85dfecd48ad1ce469ff558a882ca8e8313928fa"
integrity sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw== integrity sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==
react-lifecycles-compat@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
react-redux@^7.1.1: react-redux@^7.1.1:
version "7.1.1" version "7.1.1"
resolved "https://artifactory-eng.cargurus.com/artifactory/api/npm/npm-registry/react-redux/-/react-redux-7.1.1.tgz#ce6eee1b734a7a76e0788b3309bf78ff6b34fa0a" resolved "https://artifactory-eng.cargurus.com/artifactory/api/npm/npm-registry/react-redux/-/react-redux-7.1.1.tgz#ce6eee1b734a7a76e0788b3309bf78ff6b34fa0a"
@@ -10556,6 +10609,13 @@ walker@^1.0.7, walker@~1.0.5:
dependencies: dependencies:
makeerror "1.0.x" makeerror "1.0.x"
warning@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
dependencies:
loose-envify "^1.0.0"
watchpack@^1.6.0: watchpack@^1.6.0:
version "1.6.0" version "1.6.0"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"