diff --git a/.eslintcache b/.eslintcache
index fc32134..dd42bc0 100644
--- a/.eslintcache
+++ b/.eslintcache
@@ -1 +1 @@
-[{"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\index.js":"1","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\serviceWorker.js":"2","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\landing.js":"3","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\character.js":"4","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\home.js":"5","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\404.js":"6","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\transition-router.js":"7","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\authentication.js":"8","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\error-boundary.js":"9","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\center.js":"10","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\firebase.js":"11","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\theme.js":"12","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\new-character.js":"13","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\action-button.js":"14","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\CharacterCard.js":"15","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\profile-menu.js":"16","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\config.js":"17","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\notifications.js":"18","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\auto-expanding-textarea.js":"19","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\saving-dialog.js":"20","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\machines.js":"21","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\profile-photo.js":"22","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\helpers.js":"23","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\errors.js":"24","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\resources.js":"25"},{"size":2577,"mtime":1608408990923,"results":"26","hashOfConfig":"27"},{"size":4602,"mtime":1594516065119,"results":"28","hashOfConfig":"27"},{"size":337,"mtime":1607895057183,"results":"29","hashOfConfig":"27"},{"size":2997,"mtime":1608526824595,"results":"30","hashOfConfig":"27"},{"size":3609,"mtime":1608528727647,"results":"31","hashOfConfig":"27"},{"size":544,"mtime":1607895057087,"results":"32","hashOfConfig":"27"},{"size":427,"mtime":1607895057059,"results":"33","hashOfConfig":"27"},{"size":4904,"mtime":1608386288183,"results":"34","hashOfConfig":"27"},{"size":893,"mtime":1594516064792,"results":"35","hashOfConfig":"27"},{"size":190,"mtime":1607895056918,"results":"36","hashOfConfig":"27"},{"size":2206,"mtime":1608528900535,"results":"37","hashOfConfig":"27"},{"size":1600,"mtime":1595082557088,"results":"38","hashOfConfig":"27"},{"size":8777,"mtime":1607895057224,"results":"39","hashOfConfig":"27"},{"size":739,"mtime":1607895056886,"results":"40","hashOfConfig":"27"},{"size":1061,"mtime":1608528736260,"results":"41","hashOfConfig":"27"},{"size":5377,"mtime":1607895057004,"results":"42","hashOfConfig":"27"},{"size":167,"mtime":1594516065138,"results":"43","hashOfConfig":"27"},{"size":182,"mtime":1607895056959,"results":"44","hashOfConfig":"27"},{"size":1532,"mtime":1607895056909,"results":"45","hashOfConfig":"27"},{"size":1637,"mtime":1607895057050,"results":"46","hashOfConfig":"27"},{"size":7709,"mtime":1608528856202,"results":"47","hashOfConfig":"27"},{"size":1922,"mtime":1608384645639,"results":"48","hashOfConfig":"27"},{"size":1535,"mtime":1594516065017,"results":"49","hashOfConfig":"27"},{"size":894,"mtime":1595961850556,"results":"50","hashOfConfig":"27"},{"size":3424,"mtime":1608528727840,"results":"51","hashOfConfig":"27"},{"filePath":"52","messages":"53","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"54","usedDeprecatedRules":"55"},"1jdzda6",{"filePath":"56","messages":"57","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"58","messages":"59","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"60","messages":"61","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"62","messages":"63","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"64","messages":"65","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"66","messages":"67","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"68","usedDeprecatedRules":"55"},{"filePath":"69","messages":"70","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"71","usedDeprecatedRules":"55"},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"74","messages":"75","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"76","messages":"77","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"78","messages":"79","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"80","messages":"81","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"82","messages":"83","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"84","messages":"85","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"86","messages":"87","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"88","messages":"89","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"90","messages":"91","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"92","messages":"93","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"94","messages":"95","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"96","messages":"97","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"98","messages":"99","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"100","messages":"101","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"102","messages":"103","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"55"},{"filePath":"104","messages":"105","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\index.js",["106","107"],"import {StrictMode, Suspense} from 'react'\nimport ReactDOM from 'react-dom'\nimport './styles/index.css'\nimport * as serviceWorker from './serviceWorker'\nimport {FirebaseAppProvider} from 'reactfire'\nimport {Login, Register} from './pages/authentication'\nimport {loadTheme, Spinner} from '@fluentui/react'\n\nimport {initializeIcons} from 'office-ui-fabric-react/lib/Icons'\nimport {TransitionRouter} from './components/transition-router'\nimport {Home} from './pages/home'\nimport {Landing} from './pages/landing'\nimport {Center} from './components/center'\nimport {Route, Redirect} from 'react-router-dom'\nimport {config, FirebaseProvider, useUser} from './shared/firebase'\nimport {theme} from './shared/theme'\nimport {BasicBoundary} from './components/error-boundary'\nimport {NoRoute} from './pages/404'\nimport {NewCharacter} from './pages/new-character'\nimport {Character} from './pages/character'\n\nloadTheme(theme)\ninitializeIcons()\n\n/**\n * A route that will only render when logged in. Redirects to \"/login\" when logged out.\n * @param as\n * @param props\n * @returns {JSX.Element|null}\n * @constructor\n */\nfunction PrivateRoute({as, ...props}) {\n\tconst user = useUser()\n\n\tif (user) return \n\treturn \n}\n\n/**\n * A route for when you're not logged in. Redirects to the home page when logged in.\n * @param as\n * @param props\n * @returns {JSX.Element}\n * @constructor\n */\nfunction UnauthenticatedRoute({as, ...props}) {\n\tconst user = useUser()\n\n\tif (!user) return \n\treturn \n}\n\nReactDOM.render(\n\t\n\t\t\n\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t \n\t\t \n\t ,\n\tdocument.getElementById('root'),\n)\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n",["108","109"],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\serviceWorker.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\landing.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\character.js",["110","111","112"],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\home.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\404.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\transition-router.js",["113"],"import {AnimatePresence} from 'framer-motion'\r\nimport {BrowserRouter, Route, Switch} from 'react-router-dom'\r\n\r\nexport function TransitionRouter({children}) {\r\n\tfunction AnimatedSwitch({location}) {\r\n\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{children}\r\n\t\t\t\t \r\n\t\t)\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t \r\n\t\t \r\n\t)\r\n}\r\n","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\authentication.js",["114"],"import {useAuth} from 'reactfire'\nimport {useState} from 'react'\n\nimport {DefaultButton, Link, MessageBar, MessageBarType, PrimaryButton, Stack, Text, TextField} from '@fluentui/react'\nimport {Link as RouterLink} from 'react-router-dom'\nimport {Center} from '../components/center.js'\nimport {Notifications} from '../components/notifications.js'\nimport {motion} from 'framer-motion'\nimport {transitions} from '../shared/config.js'\nimport {firestore, auth, provider as googleProvider} from '../shared/firebase.js'\n\nconst initialStatus = {type: 'idle', data: null}\n\nconst pageData = {\n\ttitle: {\n\t\tlogin: 'Login',\n\t\tregister: 'Register',\n\t},\n\tswitchMessage: {\n\t\tlogin: (\n\t\t\t<>\n\t\t\t\tDon't have an account,{' '}\n\t\t\t\t \n\t\t\t\t\tregister now.\n\t\t\t\t\n\t\t\t>\n\t\t),\n\t\tregister: (\n\t\t\t<>\n\t\t\t\tDon't have an account,{' '}\n\t\t\t\t \n\t\t\t\t\tlogin now.\n\t\t\t\t\n\t\t\t>\n\t\t),\n\t},\n\tmainButton: {\n\t\tlogin: 'Sign in',\n\t\tregister: 'Register',\n\t},\n\tgoogleButton: {\n\t\tlogin: 'Sign in with Google',\n\t\tregister: 'Register with Google',\n\t},\n\tauthenticate: {\n\t\tlogin(auth, email, password) {\n\t\t\treturn auth.signInWithEmailAndPassword(email, password)\n\t\t},\n\t\tregister(auth, email, password, name) {\n\t\t\t// TODO: add email verification with `user.sendEmailVerification` method\n\t\t\treturn auth.createUserWithEmailAndPassword(email, password).then(({user}) => {\n\t\t\t\tuser.updateProfile({\n\t\t\t\t\tdisplayName: name,\n\t\t\t\t})\n\t\t\t\tfirestore.collection('users').doc(user.uid).set({\n\t\t\t\t\tcharacters: {},\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t},\n\terrorMessage: {\n\t\tlogin: 'Unable to sign in.',\n\t\tregister: 'Unable to register',\n\t},\n\tpasswordName: {\n\t\tlogin: 'current-password',\n\t\tregister: 'new-password',\n\t},\n}\n\nconst pageVariants = {\n\tshown: {opacity: 1},\n\thidden: {opacity: 0},\n}\nconst titleVariants = {\n\tenter: {transform: 'translateX(10rem)'},\n\tidle: {transform: 'translateX(0rem)'},\n\texit: {transform: 'translateX(-10rem)'},\n}\nconst buttonVariants = {\n\tenter: {transform: 'translateX(-10rem)'},\n\tidle: {transform: 'translateX(0rem)'},\n\texit: {transform: 'translateX(10rem)'},\n}\n\nfunction AuthenticationPage({type}) {\n\tconst [status, setStatus] = useState(initialStatus)\n\n\tfunction resetStatus() {\n\t\tsetStatus(initialStatus)\n\t}\n\n\tasync function handleEmailSignIn(event) {\n\t\tevent.preventDefault()\n\t\tconst email = event.target.email.value\n\t\tconst password = event.target[pageData.passwordName[type]].value\n\t\tconst name = event.target.name?.value\n\n\t\ttry {\n\t\t\tawait pageData.authenticate[type](auth, email, password, name)\n\t\t} catch (error) {\n\t\t\tsetStatus({type: 'auth-error', data: error.message})\n\t\t}\n\t}\n\n\tasync function handleGoogleSignIn() {\n\t\ttry {\n\t\t\tawait auth.signInWithPopup(googleProvider)\n\t\t} catch (error) {\n\t\t\tsetStatus({type: 'auth-error', data: error.message})\n\t\t}\n\t}\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{pageData.title[type]}\n\t\t\t\t\t\t \n\t\t\t\t\t \n\n\t\t\t\t\t\n\t\t\t\t\t\t{type === 'register' && }\n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{pageData.mainButton[type]}\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{pageData.googleButton[type]} \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \n\n\t\t\t\t\t\n\t\t\t\t\t\t{pageData.switchMessage[type]}\n\t\t\t\t\t \n\t\t\t\t \n\n\t\t\t\t\n\t\t\t\t\t{status.type === 'auth-error' && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{pageData.errorMessage[type]}:\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t{status.data}\n\t\t\t\t\t\t \n\t\t\t\t\t)}\n\t\t\t\t \n\t\t\t \n\t\t \n\t)\n}\n\nexport function Login() {\n\treturn \n}\n\nexport function Register() {\n\treturn \n}\n","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\error-boundary.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\center.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\firebase.js",["115","116","117"],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\theme.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\new-character.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\action-button.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\CharacterCard.js",["118"],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\profile-menu.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\config.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\notifications.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\auto-expanding-textarea.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\saving-dialog.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\machines.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\profile-photo.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\helpers.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\errors.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\resources.js",["119"],{"ruleId":"120","severity":1,"message":"121","line":5,"column":9,"nodeType":"122","messageId":"123","endLine":5,"endColumn":28},{"ruleId":"120","severity":1,"message":"124","line":15,"column":9,"nodeType":"122","messageId":"123","endLine":15,"endColumn":15},{"ruleId":"125","replacedBy":"126"},{"ruleId":"127","replacedBy":"128"},{"ruleId":"120","severity":1,"message":"129","line":16,"column":16,"nodeType":"122","messageId":"123","endLine":16,"endColumn":20},{"ruleId":"120","severity":1,"message":"129","line":51,"column":16,"nodeType":"122","messageId":"123","endLine":51,"endColumn":20},{"ruleId":"120","severity":1,"message":"130","line":51,"column":22,"nodeType":"122","messageId":"123","endLine":51,"endColumn":33},{"ruleId":"120","severity":1,"message":"131","line":2,"column":9,"nodeType":"122","messageId":"123","endLine":2,"endColumn":24},{"ruleId":"120","severity":1,"message":"132","line":1,"column":9,"nodeType":"122","messageId":"123","endLine":1,"endColumn":16},{"ruleId":"120","severity":1,"message":"133","line":5,"column":9,"nodeType":"122","messageId":"123","endLine":5,"endColumn":16},{"ruleId":"120","severity":1,"message":"134","line":6,"column":9,"nodeType":"122","messageId":"123","endLine":6,"endColumn":15},{"ruleId":"120","severity":1,"message":"135","line":7,"column":66,"nodeType":"122","messageId":"123","endLine":7,"endColumn":76},{"ruleId":"120","severity":1,"message":"136","line":18,"column":8,"nodeType":"122","messageId":"123","endLine":18,"endColumn":12},{"ruleId":"137","severity":1,"message":"138","line":33,"column":2,"nodeType":"139","messageId":"140","endLine":40,"endColumn":3},"no-unused-vars","'FirebaseAppProvider' is defined but never used.","Identifier","unusedVar","'config' is defined but never used.","no-native-reassign",["141"],"no-negated-in-lhs",["142"],"'send' is assigned a value but never used.","'interpreter' is assigned a value but never used.","'AnimatePresence' is defined but never used.","'useAuth' is defined but never used.","'Spinner' is defined but never used.","'Center' is defined but never used.","'useReducer' is defined but never used.","'user' is assigned a value but never used.","default-case","Expected a default case.","SwitchStatement","missingDefaultCase","no-global-assign","no-unsafe-negation"]
\ No newline at end of file
+[{"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\index.js":"1","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\serviceWorker.js":"2","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\landing.js":"3","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\character.js":"4","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\home.js":"5","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\404.js":"6","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\transition-router.js":"7","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\authentication.js":"8","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\error-boundary.js":"9","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\center.js":"10","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\firebase.js":"11","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\theme.js":"12","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\new-character.js":"13","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\action-button.js":"14","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\CharacterCard.js":"15","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\profile-menu.js":"16","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\notifications.js":"17","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\auto-expanding-textarea.js":"18","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\saving-dialog.js":"19","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\machines.js":"20","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\profile-photo.js":"21","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\helpers.js":"22","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\errors.js":"23","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\resources.js":"24","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\slideshow-parts.js":"25","C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\character-parts.js":"26"},{"size":2505,"mtime":1608658161919,"results":"27","hashOfConfig":"28"},{"size":4602,"mtime":1594516065119,"results":"29","hashOfConfig":"28"},{"size":337,"mtime":1607895057183,"results":"30","hashOfConfig":"28"},{"size":2445,"mtime":1608792459627,"results":"31","hashOfConfig":"28"},{"size":4394,"mtime":1608791785083,"results":"32","hashOfConfig":"28"},{"size":544,"mtime":1607895057087,"results":"33","hashOfConfig":"28"},{"size":427,"mtime":1608667095394,"results":"34","hashOfConfig":"28"},{"size":4870,"mtime":1608759910815,"results":"35","hashOfConfig":"28"},{"size":893,"mtime":1594516064792,"results":"36","hashOfConfig":"28"},{"size":258,"mtime":1608660663637,"results":"37","hashOfConfig":"28"},{"size":3655,"mtime":1608792439345,"results":"38","hashOfConfig":"28"},{"size":1862,"mtime":1608759848430,"results":"39","hashOfConfig":"28"},{"size":7642,"mtime":1608778097959,"results":"40","hashOfConfig":"28"},{"size":694,"mtime":1608778097943,"results":"41","hashOfConfig":"28"},{"size":1573,"mtime":1608792162349,"results":"42","hashOfConfig":"28"},{"size":5359,"mtime":1608759910823,"results":"43","hashOfConfig":"28"},{"size":182,"mtime":1607895056959,"results":"44","hashOfConfig":"28"},{"size":1532,"mtime":1607895056909,"results":"45","hashOfConfig":"28"},{"size":1637,"mtime":1607895057050,"results":"46","hashOfConfig":"28"},{"size":7380,"mtime":1608759164471,"results":"47","hashOfConfig":"28"},{"size":1922,"mtime":1608384645639,"results":"48","hashOfConfig":"28"},{"size":1565,"mtime":1608660175185,"results":"49","hashOfConfig":"28"},{"size":894,"mtime":1595961850556,"results":"50","hashOfConfig":"28"},{"size":3575,"mtime":1608788237907,"results":"51","hashOfConfig":"28"},{"size":1116,"mtime":1608686631824,"results":"52","hashOfConfig":"28"},{"size":2112,"mtime":1608790187398,"results":"53","hashOfConfig":"28"},{"filePath":"54","messages":"55","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1jdzda6",{"filePath":"56","messages":"57","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"58","messages":"59","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"60","messages":"61","errorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"62","messages":"63","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"64","messages":"65","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"66","messages":"67","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"68","messages":"69","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"70","messages":"71","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"74","messages":"75","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"76","messages":"77","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"78","messages":"79","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"80","messages":"81","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"82","messages":"83","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"84","messages":"85","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"86","messages":"87","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"88","messages":"89","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"90","messages":"91","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"92","messages":"93","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"94","messages":"95","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"96","messages":"97","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"98","messages":"99","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"100","messages":"101","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"102","messages":"103","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"104","messages":"105","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\index.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\serviceWorker.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\landing.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\character.js",["106","107","108","109","110","111","112","113"],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\home.js",["114","115","116"],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\404.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\transition-router.js",["117"],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\authentication.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\error-boundary.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\center.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\firebase.js",["118"],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\theme.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\pages\\new-character.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\action-button.js",["119","120"],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\CharacterCard.js",["121"],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\profile-menu.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\notifications.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\auto-expanding-textarea.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\saving-dialog.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\machines.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\profile-photo.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\helpers.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\errors.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\shared\\resources.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\slideshow-parts.js",[],"C:\\Users\\Christopher\\Workspace\\private-art-hub-project\\src\\components\\character-parts.js",["122"],{"ruleId":"123","severity":1,"message":"124","line":1,"column":9,"nodeType":"125","messageId":"126","endLine":1,"endColumn":16},{"ruleId":"123","severity":1,"message":"127","line":6,"column":9,"nodeType":"125","messageId":"126","endLine":6,"endColumn":18},{"ruleId":"123","severity":1,"message":"128","line":6,"column":44,"nodeType":"125","messageId":"126","endLine":6,"endColumn":51},{"ruleId":"123","severity":1,"message":"129","line":6,"column":53,"nodeType":"125","messageId":"126","endLine":6,"endColumn":69},{"ruleId":"123","severity":1,"message":"130","line":9,"column":9,"nodeType":"125","messageId":"126","endLine":9,"endColumn":31},{"ruleId":"123","severity":1,"message":"131","line":9,"column":33,"nodeType":"125","messageId":"126","endLine":9,"endColumn":47},{"ruleId":"123","severity":1,"message":"132","line":9,"column":49,"nodeType":"125","messageId":"126","endLine":9,"endColumn":62},{"ruleId":"123","severity":1,"message":"133","line":9,"column":64,"nodeType":"125","messageId":"126","endLine":9,"endColumn":83},{"ruleId":"123","severity":1,"message":"127","line":13,"column":15,"nodeType":"125","messageId":"126","endLine":13,"endColumn":24},{"ruleId":"123","severity":1,"message":"130","line":14,"column":9,"nodeType":"125","messageId":"126","endLine":14,"endColumn":31},{"ruleId":"123","severity":1,"message":"133","line":14,"column":33,"nodeType":"125","messageId":"126","endLine":14,"endColumn":52},{"ruleId":"123","severity":1,"message":"134","line":1,"column":9,"nodeType":"125","messageId":"126","endLine":1,"endColumn":24},{"ruleId":"123","severity":1,"message":"133","line":13,"column":2,"nodeType":"125","messageId":"126","endLine":13,"endColumn":21},{"ruleId":"123","severity":1,"message":"135","line":2,"column":9,"nodeType":"125","messageId":"126","endLine":2,"endColumn":15},{"ruleId":"123","severity":1,"message":"136","line":3,"column":9,"nodeType":"125","messageId":"126","endLine":3,"endColumn":15},{"ruleId":"137","severity":1,"message":"138","line":31,"column":5,"nodeType":"139","endLine":31,"endColumn":22,"suggestions":"140"},{"ruleId":"123","severity":1,"message":"141","line":16,"column":7,"nodeType":"125","messageId":"126","endLine":16,"endColumn":12},"no-unused-vars","'useMemo' is defined but never used.","Identifier","unusedVar","'firestore' is defined but never used.","'useUser' is defined but never used.","'withUserResource' is defined but never used.","'createDocumentResource' is defined but never used.","'createResource' is defined but never used.","'fetchImageURL' is defined but never used.","'useDocumentResource' is defined but never used.","'AnimatePresence' is defined but never used.","'motion' is defined but never used.","'colors' is defined but never used.","react-hooks/exhaustive-deps","React Hook useMemo has a missing dependency: 'uid'. Either include it or remove the dependency array.","ArrayExpression",["142"],"'empty' is assigned a value but never used.",{"desc":"143","fix":"144"},"Update the dependencies array to be: [character.files, uid]",{"range":"145","text":"146"},[883,900],"[character.files, uid]"]
\ No newline at end of file
diff --git a/.idea/codestream.xml b/.idea/codestream.xml
index fef6d16..8ddc895 100644
--- a/.idea/codestream.xml
+++ b/.idea/codestream.xml
@@ -2,6 +2,6 @@
-
+
\ No newline at end of file
diff --git a/functions/package.json b/functions/package.json
index 9441d08..c570788 100644
--- a/functions/package.json
+++ b/functions/package.json
@@ -13,7 +13,7 @@
},
"dependencies": {
"cors": "^2.8.5",
- "firebase-admin": "^8.10.0",
+ "firebase-admin": "^9.4.2",
"firebase-functions": "^3.6.1",
"got": "^11.3.0",
"gravatar": "^1.8.0"
diff --git a/functions/yarn.lock b/functions/yarn.lock
index c45fc72..09186f4 100644
--- a/functions/yarn.lock
+++ b/functions/yarn.lock
@@ -12,123 +12,122 @@
resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz#9fc9bd7c879f16b8d1bb08373a0f48c3a8b74557"
integrity sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==
-"@firebase/component@0.1.15":
- version "0.1.15"
- resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.15.tgz#40f2a53da576818bc5c906650016cb7b96fc6a25"
- integrity sha512-HqFb1qQl1vtlUMIzPM15plNz27jqM8DWjuQQuGeDfG+4iRRflwKfgNw1BOyoP4kQ8vOBCL7t/71yPXSomNdJdQ==
+"@firebase/component@0.1.21":
+ version "0.1.21"
+ resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.21.tgz#56062eb0d449dc1e7bbef3c084a9b5fa48c7c14d"
+ integrity sha512-kd5sVmCLB95EK81Pj+yDTea8pzN2qo/1yr0ua9yVi6UgMzm6zAeih73iVUkaat96MAHy26yosMufkvd3zC4IKg==
dependencies:
- "@firebase/util" "0.2.50"
+ "@firebase/util" "0.3.4"
tslib "^1.11.1"
-"@firebase/database-types@0.5.1":
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.5.1.tgz#fab2f3fb48eec374a9f435ed21e138635cb9b71c"
- integrity sha512-onQxom1ZBYBJ648w/VNRzUewovEDAH7lvnrrpCd69ukkyrMk6rGEO/PQ9BcNEbhlNtukpsqRS0oNOFlHs0FaSA==
+"@firebase/database-types@0.6.1", "@firebase/database-types@^0.6.1":
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.6.1.tgz#cf1cfc03e617ed4c2561703781f85ba4c707ff65"
+ integrity sha512-JtL3FUbWG+bM59iYuphfx9WOu2Mzf0OZNaqWiQ7lJR8wBe7bS9rIm9jlBFtksB7xcya1lZSQPA/GAy2jIlMIkA==
dependencies:
"@firebase/app-types" "0.6.1"
-"@firebase/database@^0.6.0":
- version "0.6.6"
- resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.6.6.tgz#77b9bef3c38589975c1f9b3b79089916139e8212"
- integrity sha512-TqUJOaCATF/h3wpqhPT9Fz1nZI6gBv/M2pHZztUjX4A9o9Bq93NyqUurYiZnGB7zpSkEADFCVT4f0VBrWdHlNw==
+"@firebase/database@^0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.8.1.tgz#a7bc1c01052d35817a242c21bfe09ab29ee485a3"
+ integrity sha512-/1HhR4ejpqUaM9Cn3KSeNdQvdlehWIhdfTVWFxS73ZlLYf7ayk9jITwH10H3ZOIm5yNzxF67p/U7Z/0IPhgWaQ==
dependencies:
"@firebase/auth-interop-types" "0.1.5"
- "@firebase/component" "0.1.15"
- "@firebase/database-types" "0.5.1"
- "@firebase/logger" "0.2.5"
- "@firebase/util" "0.2.50"
+ "@firebase/component" "0.1.21"
+ "@firebase/database-types" "0.6.1"
+ "@firebase/logger" "0.2.6"
+ "@firebase/util" "0.3.4"
faye-websocket "0.11.3"
tslib "^1.11.1"
-"@firebase/logger@0.2.5":
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.5.tgz#bac27bfef32b36e3ecc4b9a5018e9441cb4765e6"
- integrity sha512-qqw3m0tWs/qrg7axTZG/QZq24DIMdSY6dGoWuBn08ddq7+GLF5HiqkRj71XznYeUUbfRq5W9C/PSFnN4JxX+WA==
+"@firebase/logger@0.2.6":
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989"
+ integrity sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==
-"@firebase/util@0.2.50":
- version "0.2.50"
- resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.2.50.tgz#77666b845dcb49bc217650aa296a7a8986c06b44"
- integrity sha512-vFE6+Jfc25u0ViSpFxxq0q5s+XmuJ/y7CL3ud79RQe+WLFFg+j0eH1t23k0yNSG9vZNM7h3uHRIXbV97sYLAyw==
+"@firebase/util@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.3.4.tgz#e389d0e0e2aac88a5235b06ba9431db999d4892b"
+ integrity sha512-VwjJUE2Vgr2UMfH63ZtIX9Hd7x+6gayi6RUXaTqEYxSbf/JmehLmAEYSuxS/NckfzAXWeGnKclvnXVibDgpjQQ==
dependencies:
tslib "^1.11.1"
-"@google-cloud/common@^2.1.1":
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-2.4.0.tgz#2783b7de8435024a31453510f2dab5a6a91a4c82"
- integrity sha512-zWFjBS35eI9leAHhjfeOYlK5Plcuj/77EzstnrJIZbKgF/nkqjcQuGiMCpzCwOfPyUbz8ZaEOYgbHa759AKbjg==
+"@google-cloud/common@^3.5.0":
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-3.5.0.tgz#0959e769e8075a06eb0823cc567eef00fd0c2d02"
+ integrity sha512-10d7ZAvKhq47L271AqvHEd8KzJqGU45TY+rwM2Z3JHuB070FeTi7oJJd7elfrnKaEvaktw3hH2wKnRWxk/3oWQ==
dependencies:
- "@google-cloud/projectify" "^1.0.0"
- "@google-cloud/promisify" "^1.0.0"
- arrify "^2.0.0"
- duplexify "^3.6.0"
+ "@google-cloud/projectify" "^2.0.0"
+ "@google-cloud/promisify" "^2.0.0"
+ arrify "^2.0.1"
+ duplexify "^4.1.1"
ent "^2.2.0"
extend "^3.0.2"
- google-auth-library "^5.5.0"
- retry-request "^4.0.0"
- teeny-request "^6.0.0"
+ google-auth-library "^6.1.1"
+ retry-request "^4.1.1"
+ teeny-request "^7.0.0"
-"@google-cloud/firestore@^3.0.0":
- version "3.8.6"
- resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-3.8.6.tgz#9e6dea57323a5824563430a759244825fb01d834"
- integrity sha512-ox80NbrM1MLJgvAAUd1quFLx/ie/nSjrk1PtscSicpoYDlKb9e6j7pHrVpbopBMyliyfNl3tLJWaDh+x+uCXqw==
+"@google-cloud/firestore@^4.5.0":
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-4.8.1.tgz#bcba4d45d4d53dd4eaed5b19300ae238e65a3106"
+ integrity sha512-x/8ixlYqQuH9DoluhBj/uj3MqwoQN1lSCT2v+ieOXuh2L+8eoA7H+FF7f+UJ/D6hzo0MMWJd6q7QaBkpzp203Q==
dependencies:
- deep-equal "^2.0.0"
+ fast-deep-equal "^3.1.1"
functional-red-black-tree "^1.0.1"
- google-gax "^1.15.3"
- readable-stream "^3.4.0"
- through2 "^3.0.0"
+ google-gax "^2.9.2"
-"@google-cloud/paginator@^2.0.0":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-2.0.3.tgz#c7987ad05d1c3ebcef554381be80e9e8da4e4882"
- integrity sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg==
+"@google-cloud/paginator@^3.0.0":
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.5.tgz#9d6b96c421a89bd560c1bc2c197c7611ef21db6c"
+ integrity sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw==
dependencies:
arrify "^2.0.0"
extend "^3.0.2"
-"@google-cloud/projectify@^1.0.0":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-1.0.4.tgz#28daabebba6579ed998edcadf1a8f3be17f3b5f0"
- integrity sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg==
+"@google-cloud/projectify@^2.0.0":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.0.1.tgz#13350ee609346435c795bbfe133a08dfeab78d65"
+ integrity sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ==
-"@google-cloud/promisify@^1.0.0":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-1.0.4.tgz#ce86ffa94f9cfafa2e68f7b3e4a7fad194189723"
- integrity sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ==
+"@google-cloud/promisify@^2.0.0":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.3.tgz#f934b5cdc939e3c7039ff62b9caaf59a9d89e3a8"
+ integrity sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw==
-"@google-cloud/storage@^4.1.2":
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-4.7.0.tgz#a7466086a83911c7979cc238d00a127ffb645615"
- integrity sha512-f0guAlbeg7Z0m3gKjCfBCu7FG9qS3M3oL5OQQxlvGoPtK7/qg3+W+KQV73O2/sbuS54n0Kh2mvT5K2FWzF5vVQ==
+"@google-cloud/storage@^5.3.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-5.7.0.tgz#1cdbeeaab21f78b69de060c11b765c2b5591de91"
+ integrity sha512-6nPTylNaYWsVo5yHDdjQfUSh9qP/DFwahhyvOAf9CSDKfeoOys8+PAyHsoKyL29uyYoC6ymws7uJDO48y/SzBA==
dependencies:
- "@google-cloud/common" "^2.1.1"
- "@google-cloud/paginator" "^2.0.0"
- "@google-cloud/promisify" "^1.0.0"
+ "@google-cloud/common" "^3.5.0"
+ "@google-cloud/paginator" "^3.0.0"
+ "@google-cloud/promisify" "^2.0.0"
arrify "^2.0.0"
compressible "^2.0.12"
- concat-stream "^2.0.0"
- date-and-time "^0.13.0"
- duplexify "^3.5.0"
+ date-and-time "^0.14.0"
+ duplexify "^4.0.0"
extend "^3.0.2"
- gaxios "^3.0.0"
- gcs-resumable-upload "^2.2.4"
+ gaxios "^4.0.0"
+ gcs-resumable-upload "^3.1.0"
+ get-stream "^6.0.0"
hash-stream-validation "^0.2.2"
mime "^2.2.0"
mime-types "^2.0.8"
onetime "^5.1.0"
- p-limit "^2.2.0"
+ p-limit "^3.0.1"
pumpify "^2.0.0"
- readable-stream "^3.4.0"
snakeize "^0.1.0"
stream-events "^1.0.1"
- through2 "^3.0.0"
xdg-basedir "^4.0.0"
-"@grpc/grpc-js@~1.0.3":
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.0.5.tgz#09948c0810e62828fdd61455b2eb13d7879888b0"
- integrity sha512-Hm+xOiqAhcpT9RYM8lc15dbQD7aQurM7ZU8ulmulepiPlN7iwBXXwP3vSBUimoFoApRqz7pSIisXU8pZaCB4og==
+"@grpc/grpc-js@~1.1.1":
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.1.8.tgz#2845f0fc3d1bfbb150ed7a78a76bdf41b126d367"
+ integrity sha512-64hg5rmEm6F/NvlWERhHmmgxbWU8nD2TMWE+9TvG7/WcOrFT3fzg/Uu631pXRFwmJ4aWO/kp9vVSlr8FUjBDLA==
dependencies:
+ "@grpc/proto-loader" "^0.6.0-pre14"
+ "@types/node" "^12.12.47"
+ google-auth-library "^6.0.0"
semver "^6.2.0"
"@grpc/proto-loader@^0.5.1":
@@ -139,6 +138,17 @@
lodash.camelcase "^4.3.0"
protobufjs "^6.8.6"
+"@grpc/proto-loader@^0.6.0-pre14":
+ version "0.6.0-pre9"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.0-pre9.tgz#0c6fe42f6c5ef9ce1b3cef7be64d5b09d6fe4d6d"
+ integrity sha512-oM+LjpEjNzW5pNJjt4/hq1HYayNeQT+eGrOPABJnYHv7TyNPDNzkQ76rDYZF86X5swJOa4EujEMzQ9iiTdPgww==
+ dependencies:
+ "@types/long" "^4.0.1"
+ lodash.camelcase "^4.3.0"
+ long "^4.0.0"
+ protobufjs "^6.9.0"
+ yargs "^15.3.1"
+
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
@@ -252,13 +262,6 @@
"@types/express-serve-static-core" "*"
"@types/serve-static" "*"
-"@types/fs-extra@^8.0.1":
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.1.tgz#1e49f22d09aa46e19b51c0b013cb63d0d923a068"
- integrity sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w==
- dependencies:
- "@types/node" "*"
-
"@types/http-cache-semantics@*":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a"
@@ -291,16 +294,21 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce"
integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ==
+"@types/node@^10.10.0":
+ version "10.17.49"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.49.tgz#ecf0b67bab4b84d0ec9b0709db4aac3824a51c4a"
+ integrity sha512-PGaJNs5IZz5XgzwJvL/1zRfZB7iaJ5BydZ8/Picm+lUNYoNO9iVTQkVy5eUh0dZDrx3rBOIs3GCbCRmMuYyqwg==
+
+"@types/node@^12.12.47":
+ version "12.19.9"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.9.tgz#990ad687ad8b26ef6dcc34a4f69c33d40c95b679"
+ integrity sha512-yj0DOaQeUrk3nJ0bd3Y5PeDRJ6W0r+kilosLA+dzF3dola/o9hxhMSg2sFvVcA2UHS5JSOsZp4S0c1OEXc4m1Q==
+
"@types/node@^13.7.0":
version "13.13.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.12.tgz#9c72e865380a7dc99999ea0ef20fc9635b503d20"
integrity sha512-zWz/8NEPxoXNT9YyF2osqyA9WjssZukYpgI4UYZpOjcyqwIUqWGkcCionaEb9Ki+FULyPyvNFpg/329Kd2/pbw==
-"@types/node@^8.10.59":
- version "8.10.61"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.61.tgz#d299136ce54bcaf1abaa4a487f9e4bedf6b0d393"
- integrity sha512-l+zSbvT8TPRaCxL1l9cwHCb0tSqGAGcjPJFItGGYat5oCTiq1uQQKYg5m7AF1mgnEBzFXGLJ2LRmNjtreRX76Q==
-
"@types/qs@*":
version "6.9.3"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.3.tgz#b755a0934564a200d3efdf88546ec93c369abd03"
@@ -358,28 +366,28 @@ ansi-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-array-filter@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
- integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=
+ansi-regex@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
+ integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+
+ansi-styles@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
-arrify@^2.0.0:
+arrify@^2.0.0, arrify@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
-available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5"
- integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==
- dependencies:
- array-filter "^1.0.0"
-
base64-js@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
@@ -416,11 +424,6 @@ buffer-equal-constant-time@1.0.1:
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
-buffer-from@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
- integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
-
bytes@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
@@ -449,6 +452,11 @@ camelcase@^4.1.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
cliui@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
@@ -458,6 +466,15 @@ cliui@^4.0.0:
strip-ansi "^4.0.0"
wrap-ansi "^2.0.0"
+cliui@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
+ integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^6.2.0"
+
clone-response@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
@@ -470,6 +487,18 @@ code-point-at@^1.0.0:
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
compressible@^2.0.12:
version "2.0.18"
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
@@ -477,16 +506,6 @@ compressible@^2.0.12:
dependencies:
mime-db ">= 1.43.0 < 2"
-concat-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1"
- integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==
- dependencies:
- buffer-from "^1.0.0"
- inherits "^2.0.3"
- readable-stream "^3.0.2"
- typedarray "^0.0.6"
-
configstore@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
@@ -550,10 +569,10 @@ crypto-random-string@^2.0.0:
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
-date-and-time@^0.13.0:
- version "0.13.1"
- resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.13.1.tgz#d12ba07ac840d5b112dc4c83f8a03e8a51f78dd6"
- integrity sha512-/Uge9DJAT+s+oAcDxtBhyR8+sKjUnZbYmyhbmWjTHNtX7B7oWD8YyYdeXcBRbwSj6hVvj+IQegJam7m7czhbFw==
+date-and-time@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.14.1.tgz#969634697b78956fb66b8be6fb0f39fbd631f2f6"
+ integrity sha512-M4RggEH5OF2ZuCOxgOU67R6Z9ohjKbxGvAQz48vj53wLmL0bAgumkBvycR32f30pK+Og9pIR+RFDyChbaE4oLA==
debug@2.6.9:
version "2.6.9"
@@ -569,7 +588,7 @@ debug@4, debug@^4.1.1:
dependencies:
ms "^2.1.1"
-decamelize@^1.1.1:
+decamelize@^1.1.1, decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@@ -581,38 +600,11 @@ decompress-response@^6.0.0:
dependencies:
mimic-response "^3.1.0"
-deep-equal@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0"
- integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA==
- dependencies:
- es-abstract "^1.17.5"
- es-get-iterator "^1.1.0"
- is-arguments "^1.0.4"
- is-date-object "^1.0.2"
- is-regex "^1.0.5"
- isarray "^2.0.5"
- object-is "^1.1.2"
- object-keys "^1.1.1"
- object.assign "^4.1.0"
- regexp.prototype.flags "^1.3.0"
- side-channel "^1.0.2"
- which-boxed-primitive "^1.0.1"
- which-collection "^1.0.1"
- which-typed-array "^1.1.2"
-
defer-to-connect@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1"
integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==
-define-properties@^1.1.2, define-properties@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
- dependencies:
- object-keys "^1.0.12"
-
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
@@ -637,17 +629,7 @@ dot-prop@^5.2.0:
dependencies:
is-obj "^2.0.0"
-duplexify@^3.5.0, duplexify@^3.6.0:
- version "3.7.1"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
- integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
- dependencies:
- end-of-stream "^1.0.0"
- inherits "^2.0.1"
- readable-stream "^2.0.0"
- stream-shift "^1.0.0"
-
-duplexify@^4.1.1:
+duplexify@^4.0.0, duplexify@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61"
integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==
@@ -674,12 +656,17 @@ email-validator@^2.0.3:
resolved "https://registry.yarnpkg.com/email-validator/-/email-validator-2.0.4.tgz#b8dfaa5d0dae28f1b03c95881d904d4e40bfe7ed"
integrity sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1:
+end-of-stream@^1.1.0, end-of-stream@^1.4.1:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
@@ -691,45 +678,6 @@ ent@^2.2.0:
resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0=
-es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5:
- version "1.17.6"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a"
- integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==
- dependencies:
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.1"
- is-callable "^1.2.0"
- is-regex "^1.1.0"
- object-inspect "^1.7.0"
- object-keys "^1.1.1"
- object.assign "^4.1.0"
- string.prototype.trimend "^1.0.1"
- string.prototype.trimstart "^1.0.1"
-
-es-get-iterator@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8"
- integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==
- dependencies:
- es-abstract "^1.17.4"
- has-symbols "^1.0.1"
- is-arguments "^1.0.4"
- is-map "^2.0.1"
- is-set "^2.0.1"
- is-string "^1.0.5"
- isarray "^2.0.5"
-
-es-to-primitive@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
- integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
- dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
-
escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
@@ -799,6 +747,11 @@ extend@^3.0.2:
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
fast-text-encoding@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53"
@@ -831,19 +784,28 @@ find-up@^2.1.0:
dependencies:
locate-path "^2.0.0"
-firebase-admin@^8.10.0:
- version "8.13.0"
- resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-8.13.0.tgz#997d34ae8357d7dc162ba622148bbebcf7f2e923"
- integrity sha512-krXj5ncWMJBhCpXSn9UFY6zmDWjFjqgx+1e9ATXKFYndEjmKtNBuJzqdrAdDh7aTUR7X6+0TPx4Hbc08kd0lwQ==
+find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+firebase-admin@^9.4.2:
+ version "9.4.2"
+ resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-9.4.2.tgz#190d5d7ca5e3f251d99503feb6e05e7ab1623851"
+ integrity sha512-mRnBJbW6BAz6DJkZ0GOUTkmnmCrwVzMreMc6O+RXWukFydOzi5Xr6TKSiPKxoOQw41r9IluP2AZ3Qzvlx2SR+g==
dependencies:
- "@firebase/database" "^0.6.0"
- "@types/node" "^8.10.59"
+ "@firebase/database" "^0.8.1"
+ "@firebase/database-types" "^0.6.1"
+ "@types/node" "^10.10.0"
dicer "^0.3.0"
jsonwebtoken "^8.5.1"
- node-forge "^0.7.6"
+ node-forge "^0.10.0"
optionalDependencies:
- "@google-cloud/firestore" "^3.0.0"
- "@google-cloud/storage" "^4.1.2"
+ "@google-cloud/firestore" "^4.5.0"
+ "@google-cloud/storage" "^5.3.0"
firebase-functions-test@^0.2.0:
version "0.2.1"
@@ -863,11 +825,6 @@ firebase-functions@^3.6.1:
express "^4.17.1"
lodash "^4.17.14"
-foreach@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
- integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
-
forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
@@ -878,20 +835,15 @@ fresh@0.5.2:
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
functional-red-black-tree@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-gaxios@^2.0.0, gaxios@^2.1.0:
- version "2.3.4"
- resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.3.4.tgz#eea99353f341c270c5f3c29fc46b8ead56f0a173"
- integrity sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==
+gaxios@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-3.0.3.tgz#497730758f5b0d43a32ebdbebe5f1bd9f7db7aed"
+ integrity sha512-PkzQludeIFhd535/yucALT/Wxyj/y2zLyrMwPcJmnLHDugmV49NvAi/vb+VUq/eWztATZCNcb8ue+ywPG+oLuw==
dependencies:
abort-controller "^3.0.0"
extend "^3.0.2"
@@ -899,10 +851,10 @@ gaxios@^2.0.0, gaxios@^2.1.0:
is-stream "^2.0.0"
node-fetch "^2.3.0"
-gaxios@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-3.0.3.tgz#497730758f5b0d43a32ebdbebe5f1bd9f7db7aed"
- integrity sha512-PkzQludeIFhd535/yucALT/Wxyj/y2zLyrMwPcJmnLHDugmV49NvAi/vb+VUq/eWztATZCNcb8ue+ywPG+oLuw==
+gaxios@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.1.0.tgz#e8ad466db5a4383c70b9d63bfd14dfaa87eb0099"
+ integrity sha512-vb0to8xzGnA2qcgywAjtshOKKVDf2eQhJoiL6fHhgW5tVN7wNk7egnYIO9zotfn3lQ3De1VPdf7V5/BWfCtCmg==
dependencies:
abort-controller "^3.0.0"
extend "^3.0.2"
@@ -910,23 +862,24 @@ gaxios@^3.0.0:
is-stream "^2.0.0"
node-fetch "^2.3.0"
-gcp-metadata@^3.4.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-3.5.0.tgz#6d28343f65a6bbf8449886a0c0e4a71c77577055"
- integrity sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==
+gcp-metadata@^4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.2.1.tgz#31849fbcf9025ef34c2297c32a89a1e7e9f2cd62"
+ integrity sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==
dependencies:
- gaxios "^2.1.0"
- json-bigint "^0.3.0"
+ gaxios "^4.0.0"
+ json-bigint "^1.0.0"
-gcs-resumable-upload@^2.2.4:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-2.3.3.tgz#02c616ed17eff6676e789910aeab3907d412c5f8"
- integrity sha512-sf896I5CC/1AxeaGfSFg3vKMjUq/r+A3bscmVzZm10CElyRanN0XwPu/MxeIO4LSP+9uF6yKzXvNsaTsMXUG6Q==
+gcs-resumable-upload@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-3.1.1.tgz#67c766a0555d6a352f9651b7603337207167d0de"
+ integrity sha512-RS1osvAicj9+MjCc6jAcVL1Pt3tg7NK2C2gXM5nqD1Gs0klF2kj5nnAFSBy97JrtslMIQzpb7iSuxaG8rFWd2A==
dependencies:
abort-controller "^3.0.0"
configstore "^5.0.0"
- gaxios "^2.0.0"
- google-auth-library "^5.0.0"
+ extend "^3.0.2"
+ gaxios "^3.0.0"
+ google-auth-library "^6.0.0"
pumpify "^2.0.0"
stream-events "^1.0.4"
@@ -935,6 +888,11 @@ get-caller-file@^1.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
get-stream@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
@@ -949,48 +907,48 @@ get-stream@^5.1.0:
dependencies:
pump "^3.0.0"
-google-auth-library@^5.0.0, google-auth-library@^5.5.0:
- version "5.10.1"
- resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-5.10.1.tgz#504ec75487ad140e68dd577c21affa363c87ddff"
- integrity sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==
+get-stream@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718"
+ integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==
+
+google-auth-library@^6.0.0, google-auth-library@^6.1.1, google-auth-library@^6.1.3:
+ version "6.1.3"
+ resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-6.1.3.tgz#39d868140b70d0c4b32c6f6d8f4ccc1400d84dca"
+ integrity sha512-m9mwvY3GWbr7ZYEbl61isWmk+fvTmOt0YNUfPOUY2VH8K5pZlAIWJjxEi0PqR3OjMretyiQLI6GURMrPSwHQ2g==
dependencies:
arrify "^2.0.0"
base64-js "^1.3.0"
ecdsa-sig-formatter "^1.0.11"
fast-text-encoding "^1.0.0"
- gaxios "^2.1.0"
- gcp-metadata "^3.4.0"
- gtoken "^4.1.0"
+ gaxios "^4.0.0"
+ gcp-metadata "^4.2.0"
+ gtoken "^5.0.4"
jws "^4.0.0"
- lru-cache "^5.0.0"
+ lru-cache "^6.0.0"
-google-gax@^1.15.3:
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.15.3.tgz#e88cdcbbd19c7d88cc5fd7d7b932c4d1979a5aca"
- integrity sha512-3JKJCRumNm3x2EksUTw4P1Rad43FTpqrtW9jzpf3xSMYXx+ogaqTM1vGo7VixHB4xkAyATXVIa3OcNSh8H9zsQ==
+google-gax@^2.9.2:
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.9.2.tgz#780b2c0fc031c864007e1e198a9b90c7e946cca0"
+ integrity sha512-Pve4osEzNKpBZqFXMfGKBbKCtgnHpUe5IQMh5Ou+Xtg8nLcba94L3gF0xgM5phMdGRRqJn0SMjcuEVmOYu7EBg==
dependencies:
- "@grpc/grpc-js" "~1.0.3"
+ "@grpc/grpc-js" "~1.1.1"
"@grpc/proto-loader" "^0.5.1"
- "@types/fs-extra" "^8.0.1"
"@types/long" "^4.0.0"
abort-controller "^3.0.0"
- duplexify "^3.6.0"
- google-auth-library "^5.0.0"
+ duplexify "^4.0.0"
+ google-auth-library "^6.1.3"
is-stream-ended "^0.1.4"
- lodash.at "^4.6.0"
- lodash.has "^4.5.2"
- node-fetch "^2.6.0"
- protobufjs "^6.8.9"
+ node-fetch "^2.6.1"
+ protobufjs "^6.9.0"
retry-request "^4.0.0"
- semver "^6.0.0"
- walkdir "^0.4.0"
-google-p12-pem@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-2.0.4.tgz#036462394e266472632a78b685f0cc3df4ef337b"
- integrity sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==
+google-p12-pem@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.0.3.tgz#673ac3a75d3903a87f05878f3c75e06fc151669e"
+ integrity sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==
dependencies:
- node-forge "^0.9.0"
+ node-forge "^0.10.0"
got@^11.3.0:
version "11.3.0"
@@ -1025,28 +983,16 @@ gravatar@^1.8.0:
querystring "0.2.0"
yargs "^11.0.0"
-gtoken@^4.1.0:
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-4.1.4.tgz#925ff1e7df3aaada06611d30ea2d2abf60fcd6a7"
- integrity sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==
+gtoken@^5.0.4:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.1.0.tgz#4ba8d2fc9a8459098f76e7e8fd7beaa39fda9fe4"
+ integrity sha512-4d8N6Lk8TEAHl9vVoRVMh9BNOKWVgl2DdNtr3428O75r3QFrF/a5MMu851VmK0AA8+iSvbwRv69k5XnMLURGhg==
dependencies:
- gaxios "^2.1.0"
- google-p12-pem "^2.0.0"
+ gaxios "^4.0.0"
+ google-p12-pem "^3.0.3"
jws "^4.0.0"
mime "^2.2.0"
-has-symbols@^1.0.0, has-symbols@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
- integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
-
-has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
-
hash-stream-validation@^0.2.2:
version "0.2.3"
resolved "https://registry.yarnpkg.com/hash-stream-validation/-/hash-stream-validation-0.2.3.tgz#44e3479d1767c4f1d6924cc2da61eca08ebba8af"
@@ -1128,7 +1074,7 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
+inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -1143,31 +1089,6 @@ ipaddr.js@1.9.1:
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
-is-arguments@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
- integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
-
-is-bigint@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4"
- integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==
-
-is-boolean-object@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e"
- integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==
-
-is-callable@^1.1.4, is-callable@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
- integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
-
-is-date-object@^1.0.1, is-date-object@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
- integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
-
is-fullwidth-code-point@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
@@ -1180,33 +1101,16 @@ is-fullwidth-code-point@^2.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-is-map@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1"
- integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==
-
-is-number-object@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
- integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-obj@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
-is-regex@^1.0.5, is-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff"
- integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==
- dependencies:
- has-symbols "^1.0.1"
-
-is-set@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43"
- integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==
-
is-stream-ended@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda"
@@ -1222,48 +1126,11 @@ is-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
-is-string@^1.0.4, is-string@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
- integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
-
-is-symbol@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
- integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
- dependencies:
- has-symbols "^1.0.1"
-
-is-typed-array@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d"
- integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==
- dependencies:
- available-typed-arrays "^1.0.0"
- es-abstract "^1.17.4"
- foreach "^2.0.5"
- has-symbols "^1.0.1"
-
is-typedarray@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-is-weakmap@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
- integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==
-
-is-weakset@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83"
- integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==
-
-isarray@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
- integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
-
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -1274,10 +1141,10 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-json-bigint@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-0.3.1.tgz#0c1729d679f580d550899d6a2226c228564afe60"
- integrity sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==
+json-bigint@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1"
+ integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==
dependencies:
bignumber.js "^9.0.0"
@@ -1358,21 +1225,18 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
-lodash.at@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.at/-/lodash.at-4.6.0.tgz#93cdce664f0a1994ea33dd7cd40e23afd11b0ff8"
- integrity sha1-k83OZk8KGZTqM9181A4jr9EbD/g=
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
-lodash.has@^4.5.2:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862"
- integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=
-
lodash.includes@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
@@ -1423,12 +1287,12 @@ lowercase-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
-lru-cache@^5.0.0:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
- integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
dependencies:
- yallist "^3.0.2"
+ yallist "^4.0.0"
make-dir@^3.0.0:
version "3.1.0"
@@ -1530,20 +1394,20 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.6.0:
+node-fetch@^2.3.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
-node-forge@^0.7.6:
- version "0.7.6"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac"
- integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==
+node-fetch@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
+ integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
-node-forge@^0.9.0:
- version "0.9.1"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5"
- integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ==
+node-forge@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
+ integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
normalize-url@^4.1.0:
version "4.5.0"
@@ -1567,34 +1431,6 @@ object-assign@^4:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-object-inspect@^1.7.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
- integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
-
-object-is@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6"
- integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.5"
-
-object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object.assign@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
- integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
- dependencies:
- define-properties "^1.1.2"
- function-bind "^1.1.1"
- has-symbols "^1.0.0"
- object-keys "^1.0.11"
-
on-finished@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
@@ -1659,6 +1495,13 @@ p-limit@^2.2.0:
dependencies:
p-try "^2.0.0"
+p-limit@^3.0.1:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
@@ -1666,6 +1509,13 @@ p-locate@^2.0.0:
dependencies:
p-limit "^1.1.0"
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
p-try@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
@@ -1686,6 +1536,11 @@ path-exists@^3.0.0:
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
path-key@^2.0.0, path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
@@ -1701,7 +1556,7 @@ process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-protobufjs@^6.8.6, protobufjs@^6.8.9:
+protobufjs@^6.8.6:
version "6.9.0"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.9.0.tgz#c08b2bf636682598e6fabbf0edb0b1256ff090bd"
integrity sha512-LlGVfEWDXoI/STstRDdZZKb/qusoAWUnmLg9R8OLSO473mBLWHowx8clbX5/+mKDEI+v7GzjoK9tRPZMMcoTrg==
@@ -1720,6 +1575,25 @@ protobufjs@^6.8.6, protobufjs@^6.8.9:
"@types/node" "^13.7.0"
long "^4.0.0"
+protobufjs@^6.9.0:
+ version "6.10.2"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.10.2.tgz#b9cb6bd8ec8f87514592ba3fdfd28e93f33a469b"
+ integrity sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.0"
+ "@types/long" "^4.0.1"
+ "@types/node" "^13.7.0"
+ long "^4.0.0"
+
proxy-addr@~2.0.5:
version "2.0.6"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
@@ -1775,7 +1649,7 @@ raw-body@2.4.0:
iconv-lite "0.4.24"
unpipe "1.0.0"
-"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0:
+"readable-stream@2 || 3", readable-stream@^3.1.1:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -1784,7 +1658,7 @@ raw-body@2.4.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
-readable-stream@^2.0.0, readable-stream@~2.3.6:
+readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -1797,14 +1671,6 @@ readable-stream@^2.0.0, readable-stream@~2.3.6:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-regexp.prototype.flags@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75"
- integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.0-next.1"
-
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -1815,6 +1681,11 @@ require-main-filename@^1.0.1:
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
resolve-alpn@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c"
@@ -1835,6 +1706,13 @@ retry-request@^4.0.0:
debug "^4.1.1"
through2 "^3.0.1"
+retry-request@^4.1.1:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.1.3.tgz#d5f74daf261372cff58d08b0a1979b4d7cab0fde"
+ integrity sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==
+ dependencies:
+ debug "^4.1.1"
+
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -1911,14 +1789,6 @@ shebang-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-side-channel@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947"
- integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==
- dependencies:
- es-abstract "^1.17.0-next.1"
- object-inspect "^1.7.0"
-
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
@@ -1968,21 +1838,14 @@ string-width@^2.0.0, string-width@^2.1.1:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
-string.prototype.trimend@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
- integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
+ integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.5"
-
-string.prototype.trimstart@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
- integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.5"
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.0"
string_decoder@^1.1.1:
version "1.3.0"
@@ -2012,6 +1875,13 @@ strip-ansi@^4.0.0:
dependencies:
ansi-regex "^3.0.0"
+strip-ansi@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+ dependencies:
+ ansi-regex "^5.0.0"
+
strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
@@ -2022,16 +1892,16 @@ stubs@^3.0.0:
resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b"
integrity sha1-6NK6H6nJBXAwPAMLaQD31fiavls=
-teeny-request@^6.0.0:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-6.0.3.tgz#b617f9d5b7ba95c76a3f257f6ba2342b70228b1f"
- integrity sha512-TZG/dfd2r6yeji19es1cUIwAlVD8y+/svB1kAC2Y0bjEyysrfbO8EZvJBRwIE6WkwmUoB7uvWLwTIhJbMXZ1Dw==
+teeny-request@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c"
+ integrity sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw==
dependencies:
http-proxy-agent "^4.0.0"
https-proxy-agent "^5.0.0"
- node-fetch "^2.2.0"
+ node-fetch "^2.6.1"
stream-events "^1.0.5"
- uuid "^7.0.0"
+ uuid "^8.0.0"
through2@^2.0.0:
version "2.0.5"
@@ -2041,7 +1911,7 @@ through2@^2.0.0:
readable-stream "~2.3.6"
xtend "~4.0.1"
-through2@^3.0.0, through2@^3.0.1:
+through2@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4"
integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==
@@ -2074,11 +1944,6 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"
-typedarray@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
- integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-
unique-string@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
@@ -2101,21 +1966,16 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-uuid@^7.0.0:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
- integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
+uuid@^8.0.0:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
vary@^1, vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
-walkdir@^0.4.0:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39"
- integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==
-
websocket-driver@>=0.5.1:
version "0.7.4"
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
@@ -2130,44 +1990,11 @@ websocket-extensions@>=0.1.1:
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
-which-boxed-primitive@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1"
- integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==
- dependencies:
- is-bigint "^1.0.0"
- is-boolean-object "^1.0.0"
- is-number-object "^1.0.3"
- is-string "^1.0.4"
- is-symbol "^1.0.2"
-
-which-collection@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906"
- integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==
- dependencies:
- is-map "^2.0.1"
- is-set "^2.0.1"
- is-weakmap "^2.0.1"
- is-weakset "^2.0.1"
-
which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which-typed-array@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2"
- integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==
- dependencies:
- available-typed-arrays "^1.0.2"
- es-abstract "^1.17.5"
- foreach "^2.0.5"
- function-bind "^1.1.1"
- has-symbols "^1.0.1"
- is-typed-array "^1.1.3"
-
which@^1.2.9:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
@@ -2183,6 +2010,15 @@ wrap-ansi@^2.0.0:
string-width "^1.0.1"
strip-ansi "^3.0.1"
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -2213,10 +2049,23 @@ y18n@^3.2.1:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
-yallist@^3.0.2:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
- integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+y18n@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
+ integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yargs-parser@^18.1.2:
+ version "18.1.3"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
yargs-parser@^9.0.2:
version "9.0.2"
@@ -2242,3 +2091,25 @@ yargs@^11.0.0:
which-module "^2.0.0"
y18n "^3.2.1"
yargs-parser "^9.0.2"
+
+yargs@^15.3.1:
+ version "15.4.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
+ integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
+ dependencies:
+ cliui "^6.0.0"
+ decamelize "^1.2.0"
+ find-up "^4.1.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^4.2.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^18.1.2"
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
diff --git a/package.json b/package.json
index 7fd4bfa..9fd543a 100644
--- a/package.json
+++ b/package.json
@@ -10,20 +10,19 @@
"@testing-library/user-event": "^7.1.2",
"@xstate/react": "^0.8.1",
"firebase": "^7.15.5",
- "firebase-admin": "^8.13.0",
+ "firebase-admin": "^9.4.2",
"firebase-functions": "^3.7.0",
"framer-motion": "^2.0.0-beta.77",
"gravatar": "^1.8.1",
"ky": "^0.20.0",
"marked": "^1.2.5",
"mini-debounce": "^1.0.8",
- "react": "^0.0.0-experimental-4ead6b530",
- "react-dom": "^0.0.0-experimental-4ead6b530",
+ "react": "0.0.0-experimental-3310209d0",
+ "react-dom": "0.0.0-experimental-3310209d0",
"react-dropzone": "^11.0.2",
"react-router-dom": "5",
"react-scripts": "^4.0.1",
"react-transition-group": "^4.4.1",
- "reactfire": "^2.0.3",
"uuid": "^8.2.0",
"wicg-inert": "^3.0.3",
"xss": "^1.0.8",
diff --git a/src/components/CharacterCard.js b/src/components/CharacterCard.js
index c8848e8..5619401 100644
--- a/src/components/CharacterCard.js
+++ b/src/components/CharacterCard.js
@@ -1,9 +1,12 @@
+import {Suspense, useMemo} from 'react'
import {Link as RouterLink} from 'react-router-dom'
import {useUser} from '../shared/firebase.js'
-import {createResource, fetchImageURL} from '../shared/resources'
+import {createResource, fetchImageURL} from '../shared/resources.js'
import '../styles/character-card.css'
+import {Center} from './center'
+import {Spinner} from '@fluentui/react'
/**
* @param {{resource: ResourceReader, alt: string}} props
@@ -14,14 +17,35 @@ function CharacterCardArt({resource, alt}) {
return
}
-export function CharacterCard({userID, character}) {
- const user = useUser()
- const imageResource = createResource(fetchImageURL(userID, character.files[0]))
+/**
+ *
+ * @param {{character: Character}} props
+ * @returns {JSX.Element}
+ * @constructor
+ */
+export function CharacterCard({character}) {
+ const {uid} = useUser()
+ const imageResource = useMemo(() => {
+ if (character.files.length > 0) return createResource(fetchImageURL(uid, character.files[0]))
+ return null
+ }, [character.files])
return (
{/*TODO: replace alt with alt from data*/}
-
+ {imageResource ? (
+
+
+
+ }
+ >
+
+
+ ) : (
+ {character.name[0]}
+ )}
{character.name}
diff --git a/src/components/action-button.js b/src/components/action-button.js
index 5a29290..e287b43 100644
--- a/src/components/action-button.js
+++ b/src/components/action-button.js
@@ -1,24 +1,24 @@
import {FontIcon, Text} from '@fluentui/react'
import {motion} from 'framer-motion'
import {colors} from '../shared/theme'
-import '../styles/action-button-styles.css'
+import '../styles/action-button.css'
/*
- * @param {{ variant: 'round' | 'flat' | 'bold-orange' | 'bold-pink', iconName: string }} options
+ * @param {{ variant: 'round' | 'flat' | 'bold-orange' | 'bold-pink' | 'danger', iconName: string }} options
*/
export function ActionButton({variant, iconName, children, className, ...props}) {
return (
-
{children && (
-
+
{children}
)}
-
+
)
}
diff --git a/src/components/center.js b/src/components/center.js
index 5454574..82b208b 100644
--- a/src/components/center.js
+++ b/src/components/center.js
@@ -1,5 +1,13 @@
import {Stack} from '@fluentui/react'
-export function Center(props) {
- return
+const empty = {}
+export function Center({style = empty, ...props}) {
+ return (
+
+ )
}
diff --git a/src/components/character-parts.js b/src/components/character-parts.js
new file mode 100644
index 0000000..59dc8b2
--- /dev/null
+++ b/src/components/character-parts.js
@@ -0,0 +1,94 @@
+import {memo, Suspense} from 'react'
+
+import xss from 'xss'
+import marked from 'marked'
+import {motion} from 'framer-motion'
+import {Spinner} from '@fluentui/react'
+
+import {Center} from './center.js'
+import {colors} from '../shared/theme.js'
+import {artworkWrapperStyles} from './slideshow-parts.js'
+
+export const CharacterStory = memo(({story}) => (
+
+))
+
+const empty = {}
+/**
+ *
+ * @param {{
+ * slideshow: JSX.Element,
+ * name: JSX.Element,
+ * story: JSX.Element,
+ * actions: [JSX.Element],
+ * mode: 'display' | 'edit',
+ * onSubmit: function(React.SyntheticEvent)
+ * }} props
+ * @constructor
+ */
+export function CharacterLayout({slideshow, name, story, actions, mode, onSubmit}) {
+ const content = (
+
+
+
+
+
+ }
+ >
+ {slideshow}
+
+
+
+ {name}
+ {story}
+
+
+
+
+ )
+
+ let wrapped
+ if (mode === 'display') {
+ wrapped = (
+
+ {content}
+
+ )
+ } else if (mode === 'edit') {
+ wrapped = (
+
+
+
+ )
+ } else {
+ throw new Error(`Invalid mode '${mode}' is not supported.`)
+ }
+
+ return wrapped
+}
diff --git a/src/components/profile-menu.js b/src/components/profile-menu.js
index e628731..4d65750 100644
--- a/src/components/profile-menu.js
+++ b/src/components/profile-menu.js
@@ -1,12 +1,13 @@
-import {colors} from '../shared/theme'
-import {PROFILE_SIZE, ProfilePhoto} from './profile-photo'
-import {AnimatePresence, motion} from 'framer-motion'
-import {useMachine} from '@xstate/react'
import {useEffect, useRef} from 'react'
-import {forEachNonDescendantTree} from '../shared/helpers'
-import {transitions} from '../shared/config'
+
import {Text} from '@fluentui/react'
-import {profileMenuMachine} from '../shared/machines'
+import {useMachine} from '@xstate/react'
+import {AnimatePresence, motion} from 'framer-motion'
+
+import {colors, transitions} from '../shared/theme.js'
+import {PROFILE_SIZE, ProfilePhoto} from './profile-photo.js'
+import {forEachNonDescendantTree} from '../shared/helpers.js'
+import {profileMenuMachine} from '../shared/machines.js'
const profileMenuStyles = {
position: 'absolute',
diff --git a/src/components/slideshow-parts.js b/src/components/slideshow-parts.js
new file mode 100644
index 0000000..acab4d7
--- /dev/null
+++ b/src/components/slideshow-parts.js
@@ -0,0 +1,63 @@
+import {ActionButton} from './action-button'
+import {colors} from '../shared/theme'
+
+export const artworkWrapperStyles = {
+ position: 'relative',
+ backgroundColor: colors.lightOrange,
+ width: '100%',
+ height: 262,
+ display: 'flex',
+ justifyContent: 'center',
+ alignItems: 'center',
+}
+export const artworkStyles = {
+ objectFit: 'contain',
+ maxWidth: '100%',
+ maxHeight: '100%',
+}
+
+const nextButtonStyles = {
+ position: 'absolute',
+ bottom: 0,
+ right: 0,
+ width: 46,
+ height: 46,
+ borderRadius: 0,
+ borderTopLeftRadius: 8,
+}
+export function NextButton(props) {
+ return (
+
+ )
+}
+
+const previousButtonStyles = {
+ position: 'absolute',
+ top: 0,
+ left: 0,
+ width: 46,
+ height: 46,
+ borderRadius: 0,
+ borderBottomRightRadius: 8,
+}
+export function PreviousButton(props) {
+ return (
+
+ )
+}
diff --git a/src/index.js b/src/index.js
index 43a911e..7b8d729 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,32 +1,30 @@
import {StrictMode, Suspense} from 'react'
import ReactDOM from 'react-dom'
-import './styles/index.css'
-import * as serviceWorker from './serviceWorker'
-import {FirebaseAppProvider} from 'reactfire'
-import {Login, Register} from './pages/authentication'
import {loadTheme, Spinner} from '@fluentui/react'
-
-import {initializeIcons} from 'office-ui-fabric-react/lib/Icons'
-import {TransitionRouter} from './components/transition-router'
-import {Home} from './pages/home'
-import {Landing} from './pages/landing'
-import {Center} from './components/center'
import {Route, Redirect} from 'react-router-dom'
-import {config, FirebaseProvider, useUser} from './shared/firebase'
-import {theme} from './shared/theme'
-import {BasicBoundary} from './components/error-boundary'
-import {NoRoute} from './pages/404'
-import {NewCharacter} from './pages/new-character'
-import {Character} from './pages/character'
+import {initializeIcons} from 'office-ui-fabric-react/lib/Icons'
+
+import {Login, Register} from './pages/authentication.js'
+import {TransitionRouter} from './components/transition-router.js'
+import {Home} from './pages/home.js'
+import {Landing} from './pages/landing.js'
+import {Center} from './components/center.js'
+import {FirebaseProvider, useUser} from './shared/firebase.js'
+import {theme} from './shared/theme.js'
+import {BasicBoundary} from './components/error-boundary.js'
+import {NoRoute} from './pages/404.js'
+import {NewCharacter} from './pages/new-character.js'
+import {CharacterPage} from './pages/character.js'
+
+import * as serviceWorker from './serviceWorker.js'
+import './styles/index.css'
loadTheme(theme)
initializeIcons()
/**
* A route that will only render when logged in. Redirects to "/login" when logged out.
- * @param as
- * @param props
- * @returns {JSX.Element|null}
+ * @returns {JSX.Element}
* @constructor
*/
function PrivateRoute({as, ...props}) {
@@ -38,8 +36,6 @@ function PrivateRoute({as, ...props}) {
/**
* A route for when you're not logged in. Redirects to the home page when logged in.
- * @param as
- * @param props
* @returns {JSX.Element}
* @constructor
*/
@@ -64,7 +60,7 @@ ReactDOM.render(
-
+
diff --git a/src/pages/authentication.js b/src/pages/authentication.js
index 31831e0..c0f2ba2 100644
--- a/src/pages/authentication.js
+++ b/src/pages/authentication.js
@@ -1,12 +1,12 @@
-import {useAuth} from 'reactfire'
import {useState} from 'react'
-import {DefaultButton, Link, MessageBar, MessageBarType, PrimaryButton, Stack, Text, TextField} from '@fluentui/react'
+import {motion} from 'framer-motion'
import {Link as RouterLink} from 'react-router-dom'
+import {DefaultButton, Link, MessageBar, MessageBarType, PrimaryButton, Stack, Text, TextField} from '@fluentui/react'
+
import {Center} from '../components/center.js'
+import {transitions} from '../shared/theme.js'
import {Notifications} from '../components/notifications.js'
-import {motion} from 'framer-motion'
-import {transitions} from '../shared/config.js'
import {firestore, auth, provider as googleProvider} from '../shared/firebase.js'
const initialStatus = {type: 'idle', data: null}
diff --git a/src/pages/character.js b/src/pages/character.js
index 17b535d..3843f54 100644
--- a/src/pages/character.js
+++ b/src/pages/character.js
@@ -1,108 +1,73 @@
import {useMemo} from 'react'
-import xss from 'xss'
-import marked from 'marked'
-import {motion} from 'framer-motion'
-import {Text} from '@fluentui/react'
-import {useMachine, useService} from '@xstate/react'
+import {useMachine} from '@xstate/react'
import {useParams, useHistory} from 'react-router-dom'
-import {useFirestore, useFirestoreDoc, useStorage, useUser} from 'reactfire'
-import {colors} from '../shared/theme'
-import {ActionButton} from '../components/action-button'
-import {plainSlideshowMachine} from '../shared/machines'
+import {firestore, useCharacterWithImages, useUser, withUserResource} from '../shared/firebase.js'
+import {ActionButton} from '../components/action-button.js'
+import {plainSlideshowMachine} from '../shared/machines.js'
+import {createDocumentResource, createResource, fetchImageURL, useDocumentResource} from '../shared/resources.js'
+import {artworkStyles, artworkWrapperStyles, NextButton, PreviousButton} from '../components/slideshow-parts.js'
+import {CharacterStory, CharacterLayout} from '../components/character-parts.js'
-function CharacterSlideshow({service}) {
- const [state, send] = useService(service)
+import '../styles/character.css'
- switch (state.value) {
- case 'fetching':
- return Loading...
+function CharacterSlideshow({context, send, resources}) {
+ if (resources.length === 0) return null
- case 'loaded':
- // TODO: add real alt to character art
- return
+ const url = resources[context.currentPage].read()
+ const previous = send('PREVIOUS')} />
+ const next = send('NEXT')} />
- case 'failed':
- default:
- // TODO: add real failure message and retry button
- return Failed
- }
+ // TODO: add real alt from character data
+ return (
+
+ {context.currentPage > 0 ? previous : null}
+
+ {context.currentPage < context.numberOfImages - 1 ? next : null}
+
+ )
}
-export function Character() {
- const history = useHistory()
- const {characterID} = useParams()
+/**
+ * @param {{userRef: DocumentRef, resource: ResourceReader}} props
+ * @constructor
+ */
+export function CharacterPage() {
+ const {characterID: id} = useParams()
+ const {character, imageResources} = useCharacterWithImages(id)
+ const history = useHistory()
function back() {
history.replace('/')
}
- const storage = useStorage()
- const user = useUser()
- const userRef = useFirestore().collection('users').doc(user.uid)
- const userInfo = useFirestoreDoc(userRef)
-
- const character = useMemo(() => {
- const characters = userInfo.data().characters
- return characters.find(character => character.id === characterID)
- }, [userInfo, characterID])
-
- const [state, send, interpreter] = useMachine(
+ const [state, send] = useMachine(
plainSlideshowMachine.withContext({
...plainSlideshowMachine.context,
- storage,
- userID: user.uid,
- fileIDs: character.files,
+ numberOfImages: imageResources.length,
}),
)
- let slideshow = null
- if (state.matches('photos')) {
- const imageService = state.context.imageURLs[state.context.currentPage]
-
- if (imageService) slideshow =
- }
-
return (
-
-
-
-
-
+ }
+ name={{character.name} }
+ story={ }
+ actions={
+ <>
+ {}} type="button">
+ Delete
+
+
Back
-
+
Edit
-
-
-
+ >
+ }
+ />
)
}
diff --git a/src/pages/edit-character.js b/src/pages/edit-character.js
new file mode 100644
index 0000000..568d797
--- /dev/null
+++ b/src/pages/edit-character.js
@@ -0,0 +1,10 @@
+import {useMemo} from 'react'
+
+import {useParams} from 'react-router-dom'
+
+import {firestore, useCharacterWithImages, useUser, withUserResource} from '../shared/firebase.js'
+
+export const EditCharacterPage = withUserResource(({resource}) => {
+ const {characterID: id} = useParams()
+ const {character, imageResources} = useCharacterWithImages(id, resource)
+})
diff --git a/src/pages/home.js b/src/pages/home.js
index 782eeaa..81f87e5 100644
--- a/src/pages/home.js
+++ b/src/pages/home.js
@@ -1,4 +1,4 @@
-import {Suspense} from 'react'
+import {Suspense, unstable_SuspenseList as SuspenseList, useEffect, useState} from 'react'
import {useHistory} from 'react-router-dom'
import {motion} from 'framer-motion'
@@ -10,7 +10,7 @@ import {CharacterCard} from '../components/CharacterCard'
import {ProfileMenu, ProfileMenuItem} from '../components/profile-menu'
import {colors} from '../shared/theme'
-import {auth, firestore, useUser} from '../shared/firebase.js'
+import {auth, firestore, useCharacters, useUser} from '../shared/firebase.js'
import {createDocumentResource, useDocumentResource} from '../shared/resources.js'
import '../styles/profile-menu.css'
@@ -35,75 +35,112 @@ import 'wicg-inert'
* @returns {JSX.Element|[JSX.Element]}
* @constructor
*/
-function CharacterCardList({userID, documentRef, resource}) {
- const {characters} = useDocumentResource(documentRef, resource)
+function CharacterCardList({documentRef, resource}) {
+ const characters = useCharacters()
+ // Render all the Character Cards if there are any.
if (characters.length > 0) {
- // Render all the Character Cards.
- const characterCards = []
- for (const character of characters) characterCards.push( )
- return characterCards
- } else {
- // Inform the user of how to create a character.
- // TODO: Add alt for pride-drawing.svg
+ const listOfCharacters = characters.map((character, index) => )
return (
-
-
-
- To get started, add some characters with the "New" button.
-
-
+
+ {listOfCharacters}
+
)
}
+
+ // Otherwise, inform the user of how to create a character.
+ // TODO: Add alt for pride-drawing.svg
+ return (
+
+
+
+ To get started, add some characters with the "New" button.
+
+
+ )
}
/**
- * Home page
+ * Renders the Home page's header with the profile image. It handles scroll animations.
* @returns {JSX.Element}
* @constructor
*/
-export function Home() {
+function ProfileHeader() {
const user = useUser()
+ const [status, setStatus] = useState('flat')
- /** @type {DocumentReference} */
- const ref = firestore.collection('users').doc(user.uid)
- const resource = createDocumentResource(ref)
+ useEffect(() => {
+ function handler() {
+ setStatus(prevStatus => {
+ if (window.scrollY > 0) return 'floating'
+ return 'flat'
+ })
+ }
- const history = useHistory()
- function openNewCharacterPage() {
- history.push('/new-character')
- }
+ window.addEventListener('scroll', handler)
+ return () => {
+ window.removeEventListener('scroll', handler)
+ }
+ }, [])
+ const history = useHistory()
function signOut() {
auth.signOut().then(() => {
history.push('/login')
})
}
+ return (
+
+
+ 💛 Art Hub
+
+
+ Share
+ Settings
+ Help
+ Sign Out
+
+
+ )
+}
+
+/**
+ * Home page
+ * @returns {JSX.Element}
+ * @constructor
+ */
+export function Home() {
+ const history = useHistory()
+ function openNewCharacterPage() {
+ history.push('/new-character')
+ }
+
return (
-
-
- 💛 Art Hub
-
-
- Share
- Settings
- Help
- Sign Out
-
-
-
-
+
+
+
@@ -111,12 +148,12 @@ export function Home() {
}
>
-
+
diff --git a/src/pages/new-character.js b/src/pages/new-character.js
index f7611a6..853961b 100644
--- a/src/pages/new-character.js
+++ b/src/pages/new-character.js
@@ -1,70 +1,35 @@
import {useEffect, useState} from 'react'
-import {useHistory} from 'react-router-dom'
+
import {motion} from 'framer-motion'
-import {Text, Label} from '@fluentui/react'
-import {useId} from '@uifabric/react-hooks'
-import '../styles/new-character-styles.css'
-import {colors} from '../shared/theme'
-import {ActionButton} from '../components/action-button'
import {debounce} from 'mini-debounce'
-import {useFirestore, useStorage, useUser} from 'reactfire'
-import {useDropzone} from 'react-dropzone'
import {useMachine} from '@xstate/react'
-import {newCharacterMachine, uploadSlideshowMachine} from '../shared/machines'
-import {FontIcon} from '@fluentui/react'
-import {AutoExpandingTextarea} from '../components/auto-expanding-textarea'
-import {SavingDialog} from '../components/saving-dialog'
+import {useHistory} from 'react-router-dom'
+import {useId} from '@uifabric/react-hooks'
+import {Text, Label, FontIcon} from '@fluentui/react'
+import {useDropzone} from 'react-dropzone'
+
+import {ActionButton} from '../components/action-button.js'
+import {SavingDialog} from '../components/saving-dialog.js'
+import {useUser} from '../shared/firebase.js'
+import {newCharacterMachine, uploadSlideshowMachine} from '../shared/machines.js'
+import {AutoExpandingTextarea} from '../components/auto-expanding-textarea.js'
+import {NextButton, artworkStyles, artworkWrapperStyles, PreviousButton} from '../components/slideshow-parts.js'
+
+import {colors} from '../shared/theme.js'
+import '../styles/new-character.css'
const artistSVGStyles = {
width: 298,
height: 220,
marginBottom: 5,
}
-const fadeStyles = {
- position: 'absolute',
- bottom: 0,
- left: 0,
- width: '100%',
- height: 96,
- background: 'linear-gradient(180deg, transparent 0%, hsla(0, 0%, 100%, 0.85) 100%)',
- pointerEvents: 'none',
-}
-const previewWrapperStyles = {
- position: 'relative',
- backgroundColor: colors.lightOrange,
- width: '100%',
- height: 262,
- display: 'flex',
- justifyContent: 'center',
- alignItems: 'center',
-}
-const previewStyles = {
- objectFit: 'contain',
- maxWidth: '100%',
- maxHeight: '100%',
-}
-const previousButtonStyles = {
- position: 'absolute',
- top: 0,
- left: 0,
- width: 46,
- height: 46,
- borderBottomRightRadius: 8,
-}
-const nextButtonStyles = {
- position: 'absolute',
- bottom: 0,
- right: 0,
- width: 46,
- height: 46,
- borderTopLeftRadius: 8,
-}
const removeButtonStyles = {
position: 'absolute',
top: 0,
right: 0,
width: 46,
height: 46,
+ borderRadius: 0,
borderBottomLeftRadius: 8,
}
@@ -129,29 +94,8 @@ function useSlideshow() {
},
})
- /* TODO: style buttons */
- const previousButton = (
- send('PREVIOUS')}
- style={previousButtonStyles}
- />
- )
- const nextButton = (
- send('NEXT')}
- style={nextButtonStyles}
- />
- )
+ const previousButton = send('PREVIOUS')} />
+ const nextButton = send('NEXT')} />
let slideshowSection
if (state.matches('noPhotos'))
@@ -171,13 +115,12 @@ function useSlideshow() {
className="drop-target"
{...dropzone.getRootProps({style: artistSVGStyles})}
/>
-
)
else if (state.matches('newPhoto'))
// TODO: Make drop target accessible
slideshowSection = (
-
+
{previousButton}
+
{state.context.currentPage > 0 && previousButton}
-
+
{
@@ -269,7 +208,7 @@ export function NewCharacter() {
clearStorage()
history.push(`/character/${saveState.context.characterID}`)
}
- }, [saveState.value, saveState.context.characterID, history, saveState])
+ }, [history, saveState])
return (
@@ -294,7 +233,7 @@ export function NewCharacter() {
} */
+const FirebaseContext = createContext({user: null, characters: []})
+
+function FirebaseCharactersResource({user, resource, children}) {
+ const {characters} = resource.read()
+ const value = useMemo(() => ({user, characters}), [user, characters])
+ return {children}
+}
+
+/**
+ * @param {{resource: ResourceReader, children: any}} props
+ * @returns {JSX.Element}
+ * @constructor
+ */
+function FirebaseUserResource({resource, children}) {
const [user, setUser] = useState(resource.read())
useEffect(() => {
@@ -40,24 +65,57 @@ function FirebaseResources({resource, children}) {
})
}, [])
- const value = useMemo(() => ({user}), [user])
- return {children}
+ const userDocumentResource = useMemo(() => {
+ return createDocumentResource(firestore.collection('users').doc(user.uid))
+ }, [user.uid])
+
+ return (
+
+ {children}
+
+ )
}
+/**
+ * Provides access to active Firebase values.
+ * @returns {JSX.Element}
+ * @constructor
+ */
export function FirebaseProvider({children}) {
const resource = createResourceFromSubscription(auth.onAuthStateChanged.bind(auth))
- return {children}
+ return {children}
}
+/** @returns {firebase.User} */
export function useUser() {
const state = useContext(FirebaseContext)
return state.user
}
-export const corsAnywhere = ky.create({prefixUrl: '//cors-anywhere.herokuapp.com/'})
+export function useCharacters() {
+ const state = useContext(FirebaseContext)
+ return state.characters
+}
-// Workaround from https://github.com/FirebaseExtended/reactfire/discussions/228#discussioncomment-182830
-export function clearFirestoreCache() {
- const map = window._reactFirePreloadedObservables
- for (const key of map.keys()) if (key.includes('firestore')) map.delete(key)
+/**
+ * Takes a character's ID and user document resource and retrieves the specified character.
+ * After that, each image is fetched and a resource is created for each fetch
+ * @param {string} id The character's ID.
+ * @param {ResourceReader} resource A resource that contains the user's account data.
+ * @returns {{
+ * character: Character,
+ * imageResources: [ResourceReader]
+ * }}
+ */
+export function useCharacterWithImages(id) {
+ const user = useUser()
+ const characters = useCharacters()
+
+ return useMemo(() => {
+ const character = characters.find(character => character.id === id)
+ const imageResources = character.files.map(id => createResource(fetchImageURL(user.uid, id)))
+ return {character, imageResources}
+ }, [characters, user.uid, id])
}
+
+export const corsAnywhere = ky.create({prefixUrl: '//cors-anywhere.herokuapp.com/'})
diff --git a/src/shared/helpers.js b/src/shared/helpers.js
index 9995415..4820054 100644
--- a/src/shared/helpers.js
+++ b/src/shared/helpers.js
@@ -26,8 +26,8 @@
* forEachNonDescendantTree(modal, element => element.inert = true)
* ````
*
- * @param element
- * @param callback
+ * @param {Element} element
+ * @param {function(Element)} callback
*/
export function forEachNonDescendantTree(element, callback) {
let currentElement = element
diff --git a/src/shared/machines.js b/src/shared/machines.js
index 0112649..43f52f4 100644
--- a/src/shared/machines.js
+++ b/src/shared/machines.js
@@ -1,13 +1,10 @@
-import {assign, createMachine, spawn} from 'xstate'
+import {assign, createMachine} from 'xstate'
import gravatar from 'gravatar'
import {v1 as uuidv1} from 'uuid'
-import {corsAnywhere} from './firebase'
-import {MissingGravatarProfileError, UnreachableGravatarPhotoError, UnreachableGravatarProfileError} from './errors'
-
-// TODO: remove this and use src/shared/firebase.js
import * as firebase from 'firebase'
-import {fetchImageURL} from './resources'
+import {firestore, storage, corsAnywhere} from './firebase.js'
+import {MissingGravatarProfileError, UnreachableGravatarPhotoError, UnreachableGravatarProfileError} from './errors'
export const uploadSlideshowMachine = createMachine(
{
@@ -91,16 +88,13 @@ export const plainSlideshowMachine = createMachine(
initial: 'idle',
context: {
currentPage: 0,
- fileIDs: [],
- imageURLs: [],
- storage: null,
- userID: null,
+ numberOfImages: 0,
},
states: {
idle: {
always: [
{
- cond: ctx => ctx.fileIDs.length > 0,
+ cond: ctx => ctx.numberOfImages > 0,
target: 'photos',
},
{
@@ -109,7 +103,6 @@ export const plainSlideshowMachine = createMachine(
],
},
photos: {
- entry: ['spawnImageLoaders'],
on: {
PREVIOUS: {
cond: 'notAtBeginningOfPhotos',
@@ -133,22 +126,10 @@ export const plainSlideshowMachine = createMachine(
decrementPage: assign({currentPage: ctx => ctx.currentPage - 1}),
decrementPageOrZero: assign({currentPage: ctx => Math.max(ctx.currentPage - 1, 0)}),
incrementPage: assign({currentPage: ctx => ctx.currentPage + 1}),
- spawnImageLoaders: assign({
- imageURLs: ctx =>
- ctx.fileIDs.map(id =>
- spawn(
- fetchImageURL(ctx.userID, id),
- {
- name: id,
- sync: true,
- },
- ),
- ),
- }),
},
guards: {
notAtBeginningOfPhotos: ctx => ctx.currentPage > 0,
- notAtEndOfPhotos: ctx => ctx.currentPage < ctx.files.length - 1,
+ notAtEndOfPhotos: ctx => ctx.currentPage < ctx.numberOfImages - 1,
},
},
)
@@ -182,7 +163,10 @@ export const profileMenuMachine = createMachine({
},
})
+const gravatarCache = new Map()
async function fetchGravatarThumbnail(email) {
+ if (gravatarCache.has(email)) return gravatarCache.get(email)
+
const profileURL = gravatar.profile_url(email)
try {
const data = await corsAnywhere
@@ -197,7 +181,9 @@ async function fetchGravatarThumbnail(email) {
try {
const blob = await corsAnywhere.get(photoURL).blob()
- return URL.createObjectURL(blob)
+ const url = URL.createObjectURL(blob)
+ gravatarCache.set(email, url)
+ return url
} catch (error) {
throw new UnreachableGravatarPhotoError(email, error?.response)
}
@@ -270,8 +256,6 @@ export const newCharacterMachine = createMachine(
story: '',
files: [],
uid: '',
- storage: null,
- firestore: null,
},
states: {
idle: {
@@ -288,7 +272,7 @@ export const newCharacterMachine = createMachine(
uploadingFiles: {
entry: ['createIDs'],
invoke: {
- src: ({files, fileIDs, storage, uid}, event) => {
+ src: ({files, fileIDs, uid}, event) => {
return Promise.all(
files.map((file, index) => {
const ref = storage.ref().child(`${uid}/${fileIDs[index]}`)
@@ -305,7 +289,7 @@ export const newCharacterMachine = createMachine(
},
updatingCharacterInfo: {
invoke: {
- src: ({characterID, fileIDs, firestore, name, story, uid}) => {
+ src: ({characterID, fileIDs, name, story, uid}) => {
return firestore
.collection('users')
.doc(uid)
@@ -336,14 +320,14 @@ export const newCharacterMachine = createMachine(
},
{
actions: {
- getUploadInformation: assign((ctx, {name, story, files, uid, storage, firestore}) => {
- return {name, story, files, uid, storage, firestore}
+ getUploadInformation: assign((ctx, {name, story, files, uid}) => {
+ return {name, story, files, uid}
}),
createIDs: assign({
fileIDs: ({files}) => files.map(() => uuidv1()),
}),
setError: assign({error: (ctx, event) => event.data}),
- cleanUpFileTransfers({fileIDs, storage, uid}) {
+ cleanUpFileTransfers({fileIDs, uid}) {
for (const fileID of fileIDs) {
storage
.ref()
diff --git a/src/shared/resources.js b/src/shared/resources.js
index dc1957d..57cd9b4 100644
--- a/src/shared/resources.js
+++ b/src/shared/resources.js
@@ -1,7 +1,7 @@
import {useEffect, useState} from 'react'
import {storage} from './firebase.js'
-const imageDataURLMap = new Map()
+const imageDataURLCache = new Map()
/**
* Retrieves the URL of an image from a file ID then fetches the image and caches then returns the data URL.
* @param {string} userID
@@ -9,14 +9,14 @@ const imageDataURLMap = new Map()
* @returns {Promise}
*/
export async function fetchImageURL(userID, fileID) {
- if (imageDataURLMap.has(fileID)) return imageDataURLMap.get(fileID)
+ if (imageDataURLCache.has(fileID)) return imageDataURLCache.get(fileID)
const url = await storage.ref().child(`${userID}/${fileID}`).getDownloadURL()
return await fetch(url)
.then(res => res.blob())
.then(blob => {
const dataURL = URL.createObjectURL(blob)
- imageDataURLMap.set(fileID, dataURL)
+ imageDataURLCache.set(fileID, dataURL)
return dataURL
})
}
@@ -27,16 +27,17 @@ export async function fetchImageURL(userID, fileID) {
*
* @template V
* @param {{status: string, suspender: Promise, result: V}} resource
- * @returns {V | undefined}
+ * @returns {V}
*/
export function readResource({status, suspender, result}) {
switch (status) {
case 'loading':
throw suspender
- case 'success':
- return result
case 'error':
throw result
+ case 'success':
+ default:
+ return result
}
}
@@ -79,7 +80,8 @@ export function createResource(promise) {
* During the time it takes for the first value of the subscription to come through, the resource is suspended.
*
* @template V
- * @param {Callback} subscribe
+ * @template E
+ * @param {function(function(V, E))} subscribe
* @returns {ResourceReader}
*/
export function createResourceFromSubscription(subscribe) {
@@ -115,6 +117,7 @@ export function createResourceFromSubscription(subscribe) {
* @returns {ResourceReader}
*/
export function createDocumentResource(documentRef) {
+ console.log('Creating a new document resource')
return createResource(documentRef.get().then(doc => doc.data()))
}
@@ -125,13 +128,19 @@ export function createDocumentResource(documentRef) {
* @template V
* @param {DocumentReference} documentRef
* @param {ResourceReader} resource
- * @returns {V | undefined}
+ * @returns {V}
*/
export function useDocumentResource(documentRef, resource) {
const [result, setResult] = useState(resource.read())
useEffect(() => {
+ let isFirst = true
return documentRef.onSnapshot((snapshot, error) => {
+ if (isFirst) {
+ isFirst = false
+ return
+ }
+
if (error) console.warn(error)
else setResult(snapshot.data())
})
diff --git a/src/shared/theme.js b/src/shared/theme.js
index f2b7be7..c53bc6c 100644
--- a/src/shared/theme.js
+++ b/src/shared/theme.js
@@ -49,6 +49,20 @@ export const theme = createTheme({
},
})
+export const transitions = {
+ smooth: {
+ type: 'spring',
+ mass: 0.5,
+ damping: 20,
+ },
+ menu: {
+ type: 'spring',
+ stiffness: 500,
+ damping: 60,
+ mass: 1,
+ },
+}
+
export const colors = {
lightPink: 'hsl(353, 82%, 98%)',
pink: 'hsl(350, 78%, 91%)',
@@ -59,6 +73,9 @@ export const colors = {
orangeShadow: 'hsla(19, 72%, 75%, 0.25)',
dark: 'hsl(0, 0%, 10%)',
notAsDark: 'hsl(0, 0%, 35%)',
+ light: 'hsl(0, 0%, 99%)',
+ lightShadow: 'hsla(0, 0%, 0%, 0.1)',
+ danger: 'hsl(0, 87%, 41%)',
}
for (const colorName in colors) {
diff --git a/src/styles/action-button-styles.css b/src/styles/action-button.css
similarity index 54%
rename from src/styles/action-button-styles.css
rename to src/styles/action-button.css
index 57138b0..49ca6b7 100644
--- a/src/styles/action-button-styles.css
+++ b/src/styles/action-button.css
@@ -2,14 +2,15 @@
display: flex;
justify-content: space-evenly;
align-items: center;
-
height: 51px;
+ color: var(--real-orange);
border: none;
cursor: pointer;
transition: box-shadow 0.12s ease-out;
}
+
/* Has Text Content */
.ActionButton--content {
width: 111px;
@@ -22,41 +23,39 @@
margin-right: 15px;
}
+/* TODO: Add hover/active styles for each */
/* ROUND */
-.ActionButton--round:focus {
- outline: none;
- box-shadow: 0 0 0 1px var(--real-orange);
-}
-.ActionButton--round {
- background: var(--light-orange);
-
+.ActionButton[class*='ActionButton--round'] {
border-radius: 26px;
- box-shadow: var(--orange-shadow) 0 5px 7px 0;
}
-
-/* FLAT */
-.ActionButton--flat {
- background: transparent;
+.ActionButton--round-orange {
+ background: var(--real-orange);
+ box-shadow: var(--orange-shadow) 0 5px 7px 0;
}
-.ActionButton--flat:focus {
+.ActionButton--round-orange:focus {
outline: none;
+ box-shadow: 0 0 0px 6px var(--orange);
}
-.ActionButton--flat:focus span {
- text-decoration: underline;
+.ActionButton--round-orange [data-icon-name] {
+ color: var(--light-orange);
}
-
-/* BOLD */
-.ActionButton--bold-pink {
- background: var(--real-pink);
- box-shadow: var(--pink-shadow);
+.ActionButton--round-light-orange {
+ background: var(--light-orange);
+}
+.ActionButton--round-light-orange:focus {
+ outline: none;
+ box-shadow: 0 0 0 1px var(--real-orange);
}
-.ActionButton--bold-pink [data-icon-name] {
- color: var(--light-pink);
+
+/* FLAT */
+.ActionButton[class*='ActionButton--flat'] {
+ background: transparent;
}
-.ActionButton--bold-orange {
- background: var(--real-orange);
- box-shadow: var(--orange-shadow);
+.ActionButton--flat-danger,
+.ActionButton--flat-danger [data-icon-name] {
+ color: var(--danger);
}
-.ActionButton--bold-orange [data-icon-name] {
- color: var(--light-orange);
+.ActionButton--flat-pink,
+.ActionButton--flat-pink [data-icon-name] {
+ color: var(--real-pink);
}
diff --git a/src/styles/character-card.css b/src/styles/character-card.css
index 365279e..93fb901 100644
--- a/src/styles/character-card.css
+++ b/src/styles/character-card.css
@@ -40,8 +40,8 @@
color: white;
- font-size: 20px;
- font-family: 'Inter', sans-serif;
+ font-size: 25px;
+ font-family: 'Nunito Sans', sans-serif;
text-align: center;
text-overflow: ellipsis;
@@ -88,3 +88,16 @@
.CharacterCard__view-button:focus {
outline-offset: -2px;
}
+
+.CharacterCard__letter {
+ display: block;
+ height: 100%;
+ width: 100%;
+
+ color: var(--real-pink);
+ background-color: var(--pink);
+
+ font-size: 170px;
+ text-align: center;
+ line-height: 220px;
+}
diff --git a/src/styles/character.css b/src/styles/character.css
index 72faed8..b12feb9 100644
--- a/src/styles/character.css
+++ b/src/styles/character.css
@@ -1,12 +1,16 @@
.Character__name {
width: 100%;
padding: 0;
+ margin-bottom: 10px;
+
color: var(--dark);
- line-height: 25px;
- font-size: 20px;
+ font-size: 40px;
font-family: 'Nunito Sans', sans-serif;
font-weight: 500;
+ line-height: 40px;
+ text-align: center;
+
border: none;
box-shadow: none;
}
diff --git a/src/styles/new-character-styles.css b/src/styles/new-character.css
similarity index 100%
rename from src/styles/new-character-styles.css
rename to src/styles/new-character.css
diff --git a/yarn.lock b/yarn.lock
index 1b0f010..25bce5e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1487,6 +1487,14 @@
"@firebase/util" "0.2.50"
tslib "^1.11.1"
+"@firebase/component@0.1.21":
+ version "0.1.21"
+ resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.21.tgz#56062eb0d449dc1e7bbef3c084a9b5fa48c7c14d"
+ integrity sha512-kd5sVmCLB95EK81Pj+yDTea8pzN2qo/1yr0ua9yVi6UgMzm6zAeih73iVUkaat96MAHy26yosMufkvd3zC4IKg==
+ dependencies:
+ "@firebase/util" "0.3.4"
+ tslib "^1.11.1"
+
"@firebase/database-types@0.5.1":
version "0.5.1"
resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.5.1.tgz#fab2f3fb48eec374a9f435ed21e138635cb9b71c"
@@ -1494,7 +1502,14 @@
dependencies:
"@firebase/app-types" "0.6.1"
-"@firebase/database@0.6.6", "@firebase/database@^0.6.0":
+"@firebase/database-types@0.6.1", "@firebase/database-types@^0.6.1":
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.6.1.tgz#cf1cfc03e617ed4c2561703781f85ba4c707ff65"
+ integrity sha512-JtL3FUbWG+bM59iYuphfx9WOu2Mzf0OZNaqWiQ7lJR8wBe7bS9rIm9jlBFtksB7xcya1lZSQPA/GAy2jIlMIkA==
+ dependencies:
+ "@firebase/app-types" "0.6.1"
+
+"@firebase/database@0.6.6":
version "0.6.6"
resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.6.6.tgz#77b9bef3c38589975c1f9b3b79089916139e8212"
integrity sha512-TqUJOaCATF/h3wpqhPT9Fz1nZI6gBv/M2pHZztUjX4A9o9Bq93NyqUurYiZnGB7zpSkEADFCVT4f0VBrWdHlNw==
@@ -1507,6 +1522,19 @@
faye-websocket "0.11.3"
tslib "^1.11.1"
+"@firebase/database@^0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.8.1.tgz#a7bc1c01052d35817a242c21bfe09ab29ee485a3"
+ integrity sha512-/1HhR4ejpqUaM9Cn3KSeNdQvdlehWIhdfTVWFxS73ZlLYf7ayk9jITwH10H3ZOIm5yNzxF67p/U7Z/0IPhgWaQ==
+ dependencies:
+ "@firebase/auth-interop-types" "0.1.5"
+ "@firebase/component" "0.1.21"
+ "@firebase/database-types" "0.6.1"
+ "@firebase/logger" "0.2.6"
+ "@firebase/util" "0.3.4"
+ faye-websocket "0.11.3"
+ tslib "^1.11.1"
+
"@firebase/firestore-types@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-1.11.0.tgz#ccb734fd424b8b6c3aff3ad1921a89ee31be229b"
@@ -1563,6 +1591,11 @@
resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.5.tgz#bac27bfef32b36e3ecc4b9a5018e9441cb4765e6"
integrity sha512-qqw3m0tWs/qrg7axTZG/QZq24DIMdSY6dGoWuBn08ddq7+GLF5HiqkRj71XznYeUUbfRq5W9C/PSFnN4JxX+WA==
+"@firebase/logger@0.2.6":
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989"
+ integrity sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==
+
"@firebase/messaging-types@0.4.5":
version "0.4.5"
resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.4.5.tgz#452572d3c5b7fa83659fdb1884450477229f5dc4"
@@ -1645,6 +1678,13 @@
dependencies:
tslib "^1.11.1"
+"@firebase/util@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.3.4.tgz#e389d0e0e2aac88a5235b06ba9431db999d4892b"
+ integrity sha512-VwjJUE2Vgr2UMfH63ZtIX9Hd7x+6gayi6RUXaTqEYxSbf/JmehLmAEYSuxS/NckfzAXWeGnKclvnXVibDgpjQQ==
+ dependencies:
+ tslib "^1.11.1"
+
"@firebase/webchannel-wrapper@0.2.41":
version "0.2.41"
resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.41.tgz#4e470c25a99fa0b1f629f1c5ef180a318d399fd0"
@@ -1696,76 +1736,72 @@
office-ui-fabric-react "^7.121.4"
tslib "^1.10.0"
-"@google-cloud/common@^2.1.1":
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-2.4.0.tgz#2783b7de8435024a31453510f2dab5a6a91a4c82"
- integrity sha512-zWFjBS35eI9leAHhjfeOYlK5Plcuj/77EzstnrJIZbKgF/nkqjcQuGiMCpzCwOfPyUbz8ZaEOYgbHa759AKbjg==
+"@google-cloud/common@^3.5.0":
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-3.5.0.tgz#0959e769e8075a06eb0823cc567eef00fd0c2d02"
+ integrity sha512-10d7ZAvKhq47L271AqvHEd8KzJqGU45TY+rwM2Z3JHuB070FeTi7oJJd7elfrnKaEvaktw3hH2wKnRWxk/3oWQ==
dependencies:
- "@google-cloud/projectify" "^1.0.0"
- "@google-cloud/promisify" "^1.0.0"
- arrify "^2.0.0"
- duplexify "^3.6.0"
+ "@google-cloud/projectify" "^2.0.0"
+ "@google-cloud/promisify" "^2.0.0"
+ arrify "^2.0.1"
+ duplexify "^4.1.1"
ent "^2.2.0"
extend "^3.0.2"
- google-auth-library "^5.5.0"
- retry-request "^4.0.0"
- teeny-request "^6.0.0"
+ google-auth-library "^6.1.1"
+ retry-request "^4.1.1"
+ teeny-request "^7.0.0"
-"@google-cloud/firestore@^3.0.0":
- version "3.8.6"
- resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-3.8.6.tgz#9e6dea57323a5824563430a759244825fb01d834"
- integrity sha512-ox80NbrM1MLJgvAAUd1quFLx/ie/nSjrk1PtscSicpoYDlKb9e6j7pHrVpbopBMyliyfNl3tLJWaDh+x+uCXqw==
+"@google-cloud/firestore@^4.5.0":
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-4.8.1.tgz#bcba4d45d4d53dd4eaed5b19300ae238e65a3106"
+ integrity sha512-x/8ixlYqQuH9DoluhBj/uj3MqwoQN1lSCT2v+ieOXuh2L+8eoA7H+FF7f+UJ/D6hzo0MMWJd6q7QaBkpzp203Q==
dependencies:
- deep-equal "^2.0.0"
+ fast-deep-equal "^3.1.1"
functional-red-black-tree "^1.0.1"
- google-gax "^1.15.3"
- readable-stream "^3.4.0"
- through2 "^3.0.0"
+ google-gax "^2.9.2"
-"@google-cloud/paginator@^2.0.0":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-2.0.3.tgz#c7987ad05d1c3ebcef554381be80e9e8da4e4882"
- integrity sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg==
+"@google-cloud/paginator@^3.0.0":
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.5.tgz#9d6b96c421a89bd560c1bc2c197c7611ef21db6c"
+ integrity sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw==
dependencies:
arrify "^2.0.0"
extend "^3.0.2"
-"@google-cloud/projectify@^1.0.0":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-1.0.4.tgz#28daabebba6579ed998edcadf1a8f3be17f3b5f0"
- integrity sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg==
+"@google-cloud/projectify@^2.0.0":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.0.1.tgz#13350ee609346435c795bbfe133a08dfeab78d65"
+ integrity sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ==
-"@google-cloud/promisify@^1.0.0":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-1.0.4.tgz#ce86ffa94f9cfafa2e68f7b3e4a7fad194189723"
- integrity sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ==
+"@google-cloud/promisify@^2.0.0":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.3.tgz#f934b5cdc939e3c7039ff62b9caaf59a9d89e3a8"
+ integrity sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw==
-"@google-cloud/storage@^4.1.2":
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-4.7.0.tgz#a7466086a83911c7979cc238d00a127ffb645615"
- integrity sha512-f0guAlbeg7Z0m3gKjCfBCu7FG9qS3M3oL5OQQxlvGoPtK7/qg3+W+KQV73O2/sbuS54n0Kh2mvT5K2FWzF5vVQ==
+"@google-cloud/storage@^5.3.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-5.7.0.tgz#1cdbeeaab21f78b69de060c11b765c2b5591de91"
+ integrity sha512-6nPTylNaYWsVo5yHDdjQfUSh9qP/DFwahhyvOAf9CSDKfeoOys8+PAyHsoKyL29uyYoC6ymws7uJDO48y/SzBA==
dependencies:
- "@google-cloud/common" "^2.1.1"
- "@google-cloud/paginator" "^2.0.0"
- "@google-cloud/promisify" "^1.0.0"
+ "@google-cloud/common" "^3.5.0"
+ "@google-cloud/paginator" "^3.0.0"
+ "@google-cloud/promisify" "^2.0.0"
arrify "^2.0.0"
compressible "^2.0.12"
- concat-stream "^2.0.0"
- date-and-time "^0.13.0"
- duplexify "^3.5.0"
+ date-and-time "^0.14.0"
+ duplexify "^4.0.0"
extend "^3.0.2"
- gaxios "^3.0.0"
- gcs-resumable-upload "^2.2.4"
+ gaxios "^4.0.0"
+ gcs-resumable-upload "^3.1.0"
+ get-stream "^6.0.0"
hash-stream-validation "^0.2.2"
mime "^2.2.0"
mime-types "^2.0.8"
onetime "^5.1.0"
- p-limit "^2.2.0"
+ p-limit "^3.0.1"
pumpify "^2.0.0"
- readable-stream "^3.4.0"
snakeize "^0.1.0"
stream-events "^1.0.1"
- through2 "^3.0.0"
xdg-basedir "^4.0.0"
"@grpc/grpc-js@^1.0.0":
@@ -1775,11 +1811,14 @@
dependencies:
semver "^6.2.0"
-"@grpc/grpc-js@~1.0.3":
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.0.5.tgz#09948c0810e62828fdd61455b2eb13d7879888b0"
- integrity sha512-Hm+xOiqAhcpT9RYM8lc15dbQD7aQurM7ZU8ulmulepiPlN7iwBXXwP3vSBUimoFoApRqz7pSIisXU8pZaCB4og==
+"@grpc/grpc-js@~1.1.1":
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.1.8.tgz#2845f0fc3d1bfbb150ed7a78a76bdf41b126d367"
+ integrity sha512-64hg5rmEm6F/NvlWERhHmmgxbWU8nD2TMWE+9TvG7/WcOrFT3fzg/Uu631pXRFwmJ4aWO/kp9vVSlr8FUjBDLA==
dependencies:
+ "@grpc/proto-loader" "^0.6.0-pre14"
+ "@types/node" "^12.12.47"
+ google-auth-library "^6.0.0"
semver "^6.2.0"
"@grpc/proto-loader@^0.5.0", "@grpc/proto-loader@^0.5.1":
@@ -1790,6 +1829,17 @@
lodash.camelcase "^4.3.0"
protobufjs "^6.8.6"
+"@grpc/proto-loader@^0.6.0-pre14":
+ version "0.6.0-pre9"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.0-pre9.tgz#0c6fe42f6c5ef9ce1b3cef7be64d5b09d6fe4d6d"
+ integrity sha512-oM+LjpEjNzW5pNJjt4/hq1HYayNeQT+eGrOPABJnYHv7TyNPDNzkQ76rDYZF86X5swJOa4EujEMzQ9iiTdPgww==
+ dependencies:
+ "@types/long" "^4.0.1"
+ lodash.camelcase "^4.3.0"
+ long "^4.0.0"
+ protobufjs "^6.9.0"
+ yargs "^15.3.1"
+
"@hapi/address@2.x.x":
version "2.1.4"
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
@@ -2492,13 +2542,6 @@
"@types/express-serve-static-core" "*"
"@types/serve-static" "*"
-"@types/fs-extra@^8.0.1":
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.1.tgz#1e49f22d09aa46e19b51c0b013cb63d0d923a068"
- integrity sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w==
- dependencies:
- "@types/node" "*"
-
"@types/glob@^7.1.1":
version "7.1.1"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
@@ -2587,16 +2630,21 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349"
integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg==
+"@types/node@^10.10.0":
+ version "10.17.49"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.49.tgz#ecf0b67bab4b84d0ec9b0709db4aac3824a51c4a"
+ integrity sha512-PGaJNs5IZz5XgzwJvL/1zRfZB7iaJ5BydZ8/Picm+lUNYoNO9iVTQkVy5eUh0dZDrx3rBOIs3GCbCRmMuYyqwg==
+
+"@types/node@^12.12.47":
+ version "12.19.9"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.9.tgz#990ad687ad8b26ef6dcc34a4f69c33d40c95b679"
+ integrity sha512-yj0DOaQeUrk3nJ0bd3Y5PeDRJ6W0r+kilosLA+dzF3dola/o9hxhMSg2sFvVcA2UHS5JSOsZp4S0c1OEXc4m1Q==
+
"@types/node@^13.7.0":
version "13.13.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.12.tgz#9c72e865380a7dc99999ea0ef20fc9635b503d20"
integrity sha512-zWz/8NEPxoXNT9YyF2osqyA9WjssZukYpgI4UYZpOjcyqwIUqWGkcCionaEb9Ki+FULyPyvNFpg/329Kd2/pbw==
-"@types/node@^8.10.59":
- version "8.10.61"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.61.tgz#d299136ce54bcaf1abaa4a487f9e4bedf6b0d393"
- integrity sha512-l+zSbvT8TPRaCxL1l9cwHCb0tSqGAGcjPJFItGGYat5oCTiq1uQQKYg5m7AF1mgnEBzFXGLJ2LRmNjtreRX76Q==
-
"@types/normalize-package-data@^2.4.0":
version "2.4.0"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
@@ -3313,11 +3361,6 @@ arr-union@^3.1.0:
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-array-filter@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
- integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=
-
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
@@ -3482,13 +3525,6 @@ autoprefixer@^9.6.1:
postcss "^7.0.26"
postcss-value-parser "^4.0.2"
-available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5"
- integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==
- dependencies:
- array-filter "^1.0.0"
-
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@@ -4099,15 +4135,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001035:
- version "1.0.30001035"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e"
- integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ==
-
-caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001165:
- version "1.0.30001165"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz#32955490d2f60290bb186bb754f2981917fa744f"
- integrity sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001165:
+ version "1.0.30001170"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001170.tgz"
+ integrity sha512-Dd4d/+0tsK0UNLrZs3CvNukqalnVTRrxb5mcQm8rHL49t7V5ZaTygwXkrq+FB+dVDf++4ri8eJnFEJAB8332PA==
capture-exit@^2.0.0:
version "2.0.0"
@@ -4425,16 +4456,6 @@ concat-stream@^1.5.0:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-concat-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1"
- integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==
- dependencies:
- buffer-from "^1.0.0"
- inherits "^2.0.3"
- readable-stream "^3.0.2"
- typedarray "^0.0.6"
-
configstore@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
@@ -4944,10 +4965,10 @@ data-urls@^2.0.0:
whatwg-mimetype "^2.3.0"
whatwg-url "^8.0.0"
-date-and-time@^0.13.0:
- version "0.13.1"
- resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.13.1.tgz#d12ba07ac840d5b112dc4c83f8a03e8a51f78dd6"
- integrity sha512-/Uge9DJAT+s+oAcDxtBhyR8+sKjUnZbYmyhbmWjTHNtX7B7oWD8YyYdeXcBRbwSj6hVvj+IQegJam7m7czhbFw==
+date-and-time@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.14.1.tgz#969634697b78956fb66b8be6fb0f39fbd631f2f6"
+ integrity sha512-M4RggEH5OF2ZuCOxgOU67R6Z9ohjKbxGvAQz48vj53wLmL0bAgumkBvycR32f30pK+Og9pIR+RFDyChbaE4oLA==
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
version "2.6.9"
@@ -5002,26 +5023,6 @@ deep-equal@^1.0.1:
object-keys "^1.1.1"
regexp.prototype.flags "^1.2.0"
-deep-equal@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0"
- integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA==
- dependencies:
- es-abstract "^1.17.5"
- es-get-iterator "^1.1.0"
- is-arguments "^1.0.4"
- is-date-object "^1.0.2"
- is-regex "^1.0.5"
- isarray "^2.0.5"
- object-is "^1.1.2"
- object-keys "^1.1.1"
- object.assign "^4.1.0"
- regexp.prototype.flags "^1.3.0"
- side-channel "^1.0.2"
- which-boxed-primitive "^1.0.1"
- which-collection "^1.0.1"
- which-typed-array "^1.1.2"
-
deep-is@^0.1.3, deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
@@ -5316,7 +5317,7 @@ duplexer@^0.1.1:
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
-duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0:
+duplexify@^3.4.2, duplexify@^3.6.0:
version "3.7.1"
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
@@ -5326,7 +5327,7 @@ duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0:
readable-stream "^2.0.0"
stream-shift "^1.0.0"
-duplexify@^4.1.1:
+duplexify@^4.0.0, duplexify@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61"
integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==
@@ -5507,7 +5508,7 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2:
string.prototype.trimleft "^2.1.1"
string.prototype.trimright "^2.1.1"
-es-abstract@^1.17.4, es-abstract@^1.17.5:
+es-abstract@^1.17.5:
version "1.17.6"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a"
integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==
@@ -5542,19 +5543,6 @@ es-abstract@^1.18.0-next.1:
string.prototype.trimend "^1.0.1"
string.prototype.trimstart "^1.0.1"
-es-get-iterator@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8"
- integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==
- dependencies:
- es-abstract "^1.17.4"
- has-symbols "^1.0.1"
- is-arguments "^1.0.4"
- is-map "^2.0.1"
- is-set "^2.0.1"
- is-string "^1.0.5"
- isarray "^2.0.5"
-
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
@@ -6237,19 +6225,20 @@ find-up@^3.0.0:
dependencies:
locate-path "^3.0.0"
-firebase-admin@^8.13.0:
- version "8.13.0"
- resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-8.13.0.tgz#997d34ae8357d7dc162ba622148bbebcf7f2e923"
- integrity sha512-krXj5ncWMJBhCpXSn9UFY6zmDWjFjqgx+1e9ATXKFYndEjmKtNBuJzqdrAdDh7aTUR7X6+0TPx4Hbc08kd0lwQ==
+firebase-admin@^9.4.2:
+ version "9.4.2"
+ resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-9.4.2.tgz#190d5d7ca5e3f251d99503feb6e05e7ab1623851"
+ integrity sha512-mRnBJbW6BAz6DJkZ0GOUTkmnmCrwVzMreMc6O+RXWukFydOzi5Xr6TKSiPKxoOQw41r9IluP2AZ3Qzvlx2SR+g==
dependencies:
- "@firebase/database" "^0.6.0"
- "@types/node" "^8.10.59"
+ "@firebase/database" "^0.8.1"
+ "@firebase/database-types" "^0.6.1"
+ "@types/node" "^10.10.0"
dicer "^0.3.0"
jsonwebtoken "^8.5.1"
- node-forge "^0.7.6"
+ node-forge "^0.10.0"
optionalDependencies:
- "@google-cloud/firestore" "^3.0.0"
- "@google-cloud/storage" "^4.1.2"
+ "@google-cloud/firestore" "^4.5.0"
+ "@google-cloud/storage" "^5.3.0"
firebase-functions@^3.7.0:
version "3.7.0"
@@ -6324,11 +6313,6 @@ for-in@^1.0.2:
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-foreach@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
- integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
-
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -6482,10 +6466,10 @@ functional-red-black-tree@^1.0.1:
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-gaxios@^2.0.0, gaxios@^2.1.0:
- version "2.3.4"
- resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.3.4.tgz#eea99353f341c270c5f3c29fc46b8ead56f0a173"
- integrity sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==
+gaxios@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-3.0.3.tgz#497730758f5b0d43a32ebdbebe5f1bd9f7db7aed"
+ integrity sha512-PkzQludeIFhd535/yucALT/Wxyj/y2zLyrMwPcJmnLHDugmV49NvAi/vb+VUq/eWztATZCNcb8ue+ywPG+oLuw==
dependencies:
abort-controller "^3.0.0"
extend "^3.0.2"
@@ -6493,10 +6477,10 @@ gaxios@^2.0.0, gaxios@^2.1.0:
is-stream "^2.0.0"
node-fetch "^2.3.0"
-gaxios@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-3.0.3.tgz#497730758f5b0d43a32ebdbebe5f1bd9f7db7aed"
- integrity sha512-PkzQludeIFhd535/yucALT/Wxyj/y2zLyrMwPcJmnLHDugmV49NvAi/vb+VUq/eWztATZCNcb8ue+ywPG+oLuw==
+gaxios@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.1.0.tgz#e8ad466db5a4383c70b9d63bfd14dfaa87eb0099"
+ integrity sha512-vb0to8xzGnA2qcgywAjtshOKKVDf2eQhJoiL6fHhgW5tVN7wNk7egnYIO9zotfn3lQ3De1VPdf7V5/BWfCtCmg==
dependencies:
abort-controller "^3.0.0"
extend "^3.0.2"
@@ -6504,23 +6488,24 @@ gaxios@^3.0.0:
is-stream "^2.0.0"
node-fetch "^2.3.0"
-gcp-metadata@^3.4.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-3.5.0.tgz#6d28343f65a6bbf8449886a0c0e4a71c77577055"
- integrity sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==
+gcp-metadata@^4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.2.1.tgz#31849fbcf9025ef34c2297c32a89a1e7e9f2cd62"
+ integrity sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==
dependencies:
- gaxios "^2.1.0"
- json-bigint "^0.3.0"
+ gaxios "^4.0.0"
+ json-bigint "^1.0.0"
-gcs-resumable-upload@^2.2.4:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-2.3.3.tgz#02c616ed17eff6676e789910aeab3907d412c5f8"
- integrity sha512-sf896I5CC/1AxeaGfSFg3vKMjUq/r+A3bscmVzZm10CElyRanN0XwPu/MxeIO4LSP+9uF6yKzXvNsaTsMXUG6Q==
+gcs-resumable-upload@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-3.1.1.tgz#67c766a0555d6a352f9651b7603337207167d0de"
+ integrity sha512-RS1osvAicj9+MjCc6jAcVL1Pt3tg7NK2C2gXM5nqD1Gs0klF2kj5nnAFSBy97JrtslMIQzpb7iSuxaG8rFWd2A==
dependencies:
abort-controller "^3.0.0"
configstore "^5.0.0"
- gaxios "^2.0.0"
- google-auth-library "^5.0.0"
+ extend "^3.0.2"
+ gaxios "^3.0.0"
+ google-auth-library "^6.0.0"
pumpify "^2.0.0"
stream-events "^1.0.4"
@@ -6572,6 +6557,11 @@ get-stream@^5.0.0:
dependencies:
pump "^3.0.0"
+get-stream@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718"
+ integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==
+
get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
@@ -6669,48 +6659,43 @@ globby@^6.1.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
-google-auth-library@^5.0.0, google-auth-library@^5.5.0:
- version "5.10.1"
- resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-5.10.1.tgz#504ec75487ad140e68dd577c21affa363c87ddff"
- integrity sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==
+google-auth-library@^6.0.0, google-auth-library@^6.1.1, google-auth-library@^6.1.3:
+ version "6.1.3"
+ resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-6.1.3.tgz#39d868140b70d0c4b32c6f6d8f4ccc1400d84dca"
+ integrity sha512-m9mwvY3GWbr7ZYEbl61isWmk+fvTmOt0YNUfPOUY2VH8K5pZlAIWJjxEi0PqR3OjMretyiQLI6GURMrPSwHQ2g==
dependencies:
arrify "^2.0.0"
base64-js "^1.3.0"
ecdsa-sig-formatter "^1.0.11"
fast-text-encoding "^1.0.0"
- gaxios "^2.1.0"
- gcp-metadata "^3.4.0"
- gtoken "^4.1.0"
+ gaxios "^4.0.0"
+ gcp-metadata "^4.2.0"
+ gtoken "^5.0.4"
jws "^4.0.0"
- lru-cache "^5.0.0"
+ lru-cache "^6.0.0"
-google-gax@^1.15.3:
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.15.3.tgz#e88cdcbbd19c7d88cc5fd7d7b932c4d1979a5aca"
- integrity sha512-3JKJCRumNm3x2EksUTw4P1Rad43FTpqrtW9jzpf3xSMYXx+ogaqTM1vGo7VixHB4xkAyATXVIa3OcNSh8H9zsQ==
+google-gax@^2.9.2:
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.9.2.tgz#780b2c0fc031c864007e1e198a9b90c7e946cca0"
+ integrity sha512-Pve4osEzNKpBZqFXMfGKBbKCtgnHpUe5IQMh5Ou+Xtg8nLcba94L3gF0xgM5phMdGRRqJn0SMjcuEVmOYu7EBg==
dependencies:
- "@grpc/grpc-js" "~1.0.3"
+ "@grpc/grpc-js" "~1.1.1"
"@grpc/proto-loader" "^0.5.1"
- "@types/fs-extra" "^8.0.1"
"@types/long" "^4.0.0"
abort-controller "^3.0.0"
- duplexify "^3.6.0"
- google-auth-library "^5.0.0"
+ duplexify "^4.0.0"
+ google-auth-library "^6.1.3"
is-stream-ended "^0.1.4"
- lodash.at "^4.6.0"
- lodash.has "^4.5.2"
- node-fetch "^2.6.0"
- protobufjs "^6.8.9"
+ node-fetch "^2.6.1"
+ protobufjs "^6.9.0"
retry-request "^4.0.0"
- semver "^6.0.0"
- walkdir "^0.4.0"
-google-p12-pem@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-2.0.4.tgz#036462394e266472632a78b685f0cc3df4ef337b"
- integrity sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==
+google-p12-pem@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.0.3.tgz#673ac3a75d3903a87f05878f3c75e06fc151669e"
+ integrity sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==
dependencies:
- node-forge "^0.9.0"
+ node-forge "^0.10.0"
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.3"
@@ -6737,13 +6722,13 @@ growly@^1.3.0:
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
-gtoken@^4.1.0:
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-4.1.4.tgz#925ff1e7df3aaada06611d30ea2d2abf60fcd6a7"
- integrity sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==
+gtoken@^5.0.4:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.1.0.tgz#4ba8d2fc9a8459098f76e7e8fd7beaa39fda9fe4"
+ integrity sha512-4d8N6Lk8TEAHl9vVoRVMh9BNOKWVgl2DdNtr3428O75r3QFrF/a5MMu851VmK0AA8+iSvbwRv69k5XnMLURGhg==
dependencies:
- gaxios "^2.1.0"
- google-p12-pem "^2.0.0"
+ gaxios "^4.0.0"
+ google-p12-pem "^3.0.3"
jws "^4.0.0"
mime "^2.2.0"
@@ -7322,11 +7307,6 @@ is-arrayish@^0.3.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-is-bigint@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4"
- integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==
-
is-binary-path@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
@@ -7341,11 +7321,6 @@ is-binary-path@~2.1.0:
dependencies:
binary-extensions "^2.0.0"
-is-boolean-object@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e"
- integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==
-
is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -7406,7 +7381,7 @@ is-data-descriptor@^1.0.0:
dependencies:
kind-of "^6.0.0"
-is-date-object@^1.0.1, is-date-object@^1.0.2:
+is-date-object@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
@@ -7485,11 +7460,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
dependencies:
is-extglob "^2.1.1"
-is-map@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1"
- integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==
-
is-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
@@ -7500,11 +7470,6 @@ is-negative-zero@^2.0.0:
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
-is-number-object@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
- integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==
-
is-number@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
@@ -7599,11 +7564,6 @@ is-root@2.1.0:
resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==
-is-set@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43"
- integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==
-
is-stream-ended@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda"
@@ -7619,7 +7579,7 @@ is-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
-is-string@^1.0.4, is-string@^1.0.5:
+is-string@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
@@ -7638,31 +7598,11 @@ is-symbol@^1.0.2:
dependencies:
has-symbols "^1.0.1"
-is-typed-array@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d"
- integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ==
- dependencies:
- available-typed-arrays "^1.0.0"
- es-abstract "^1.17.4"
- foreach "^2.0.5"
- has-symbols "^1.0.1"
-
is-typedarray@^1.0.0, is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-is-weakmap@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
- integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==
-
-is-weakset@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83"
- integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==
-
is-windows@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
@@ -7695,11 +7635,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-isarray@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
- integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
-
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -8291,10 +8226,10 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-json-bigint@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-0.3.1.tgz#0c1729d679f580d550899d6a2226c228564afe60"
- integrity sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==
+json-bigint@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1"
+ integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==
dependencies:
bignumber.js "^9.0.0"
@@ -8581,21 +8516,11 @@ lodash._reinterpolate@^3.0.0:
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-lodash.at@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.at/-/lodash.at-4.6.0.tgz#93cdce664f0a1994ea33dd7cd40e23afd11b0ff8"
- integrity sha1-k83OZk8KGZTqM9181A4jr9EbD/g=
-
lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
-lodash.has@^4.5.2:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862"
- integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=
-
lodash.includes@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
@@ -8695,7 +8620,7 @@ lower-case@^2.0.1:
dependencies:
tslib "^1.10.0"
-lru-cache@^5.0.0, lru-cache@^5.1.1:
+lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
@@ -9145,25 +9070,25 @@ node-fetch@^1.0.1:
encoding "^0.1.11"
is-stream "^1.0.1"
-node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.6.0:
+node-fetch@^2.3.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
+node-fetch@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
+ integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
+
node-forge@0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579"
integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==
-node-forge@^0.7.6:
- version "0.7.6"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac"
- integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==
-
-node-forge@^0.9.0:
- version "0.9.1"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5"
- integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ==
+node-forge@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
+ integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
node-int64@^0.4.0:
version "0.4.0"
@@ -9335,14 +9260,6 @@ object-is@^1.0.1:
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4"
integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==
-object-is@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6"
- integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.5"
-
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
@@ -9563,7 +9480,7 @@ p-limit@^2.0.0, p-limit@^2.2.0:
dependencies:
p-try "^2.0.0"
-p-limit@^3.0.2:
+p-limit@^3.0.1, p-limit@^3.0.2:
version "3.1.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
@@ -10703,7 +10620,7 @@ prop-types@^15.6.2, prop-types@^15.7.2:
object-assign "^4.1.1"
react-is "^16.8.1"
-protobufjs@^6.8.6, protobufjs@^6.8.9:
+protobufjs@^6.8.6:
version "6.9.0"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.9.0.tgz#c08b2bf636682598e6fabbf0edb0b1256ff090bd"
integrity sha512-LlGVfEWDXoI/STstRDdZZKb/qusoAWUnmLg9R8OLSO473mBLWHowx8clbX5/+mKDEI+v7GzjoK9tRPZMMcoTrg==
@@ -10722,6 +10639,25 @@ protobufjs@^6.8.6, protobufjs@^6.8.9:
"@types/node" "^13.7.0"
long "^4.0.0"
+protobufjs@^6.9.0:
+ version "6.10.2"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.10.2.tgz#b9cb6bd8ec8f87514592ba3fdfd28e93f33a469b"
+ integrity sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.0"
+ "@types/long" "^4.0.1"
+ "@types/node" "^13.7.0"
+ long "^4.0.0"
+
proxy-addr@~2.0.5:
version "2.0.6"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
@@ -10925,14 +10861,14 @@ react-dev-utils@^11.0.1:
strip-ansi "6.0.0"
text-table "0.2.0"
-react-dom@^0.0.0-experimental-4ead6b530:
- version "0.0.0-experimental-4ead6b530"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.0.0-experimental-4ead6b530.tgz#6ca831f5aa7ab86f7299b9a2f7b81dffabfa4eb4"
- integrity sha512-a03ptS8lhhEENNgne6zQMXQWX/Z6WMEBGJQY0laOC0NgJywidePYpgkiE72fUAaj/r7t9a6XsdVyqx4UsEZijg==
+react-dom@0.0.0-experimental-3310209d0:
+ version "0.0.0-experimental-3310209d0"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.0.0-experimental-3310209d0.tgz#da24ddc969d34406d25210c88ba6d33c101532fa"
+ integrity sha512-5Ibs6pnu5rrEgq6gTVHjnMlIFiOFHpTeLbPcqPjnFnAX7WR06+rJK32lW5U13ktmpzqUdGruwE5oweWI7uPQhA==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
- scheduler "0.0.0-experimental-4ead6b530"
+ scheduler "0.0.0-experimental-3310209d0"
react-dropzone@^11.0.2:
version "11.0.2"
@@ -11108,22 +11044,14 @@ react-transition-group@^4.4.1:
loose-envify "^1.4.0"
prop-types "^15.6.2"
-react@^0.0.0-experimental-4ead6b530:
- version "0.0.0-experimental-4ead6b530"
- resolved "https://registry.yarnpkg.com/react/-/react-0.0.0-experimental-4ead6b530.tgz#88cdae012012a758dd039a63104758c6351115df"
- integrity sha512-tpbYm6FEuC1L6tCVXIKYAhgGAkS8DShzKpmXosowZvLqeByeLQQe77Ef6bi5HdEkFm2v0lZffLWckSM8R4TToA==
+react@0.0.0-experimental-3310209d0:
+ version "0.0.0-experimental-3310209d0"
+ resolved "https://registry.yarnpkg.com/react/-/react-0.0.0-experimental-3310209d0.tgz#1421b0338fbb0c98bbe1ffcaaf88d101209d7194"
+ integrity sha512-TVDPZZ2rbxtbIlb3knyqXG1ij8veXpMTzxWmJC/+0POtKSE0HeUNVoQX8j0h0p0rHCKmAfT/mIZaoG9P0bJ+TA==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
-reactfire@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/reactfire/-/reactfire-2.0.3.tgz#5e791d786768d0134dc416ac912a5134c00d90ff"
- integrity sha512-9QH2iUUPo5QUe8NJtKotBCztxDB7vGWfa7ldsWc9XswZ24YfDcLDZRdjjzb44BLqjqopNxK1ysrsQ08fuDS21w==
- dependencies:
- rxfire "^3.6.3"
- rxjs "^6.4.0"
-
read-pkg-up@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
@@ -11173,7 +11101,7 @@ read-pkg@^5.2.0:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0:
+"readable-stream@2 || 3", readable-stream@^3.0.6, readable-stream@^3.1.1:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -11494,6 +11422,13 @@ retry-request@^4.0.0:
debug "^4.1.1"
through2 "^3.0.1"
+retry-request@^4.1.1:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.1.3.tgz#d5f74daf261372cff58d08b0a1979b4d7cab0fde"
+ integrity sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==
+ dependencies:
+ debug "^4.1.1"
+
retry@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
@@ -11601,20 +11536,6 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
-rxfire@^3.6.3:
- version "3.13.5"
- resolved "https://registry.yarnpkg.com/rxfire/-/rxfire-3.13.5.tgz#465a88561b1c139a383216efc2e156f85143fa19"
- integrity sha512-NyGc9syGjx5W0I5L6c4YioXbjrJTXMSo74RWTiozunOAo04sD+LM/+vQ7HWk+XUZISC/Nk8s/NKo6+mkT0ov6w==
- dependencies:
- tslib "^1.11.1"
-
-rxjs@^6.4.0:
- version "6.5.5"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec"
- integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==
- dependencies:
- tslib "^1.9.0"
-
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -11680,10 +11601,10 @@ saxes@^5.0.0:
dependencies:
xmlchars "^2.2.0"
-scheduler@0.0.0-experimental-4ead6b530:
- version "0.0.0-experimental-4ead6b530"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-4ead6b530.tgz#0dca3287308d34caed0651941f1ce7c9d64a0824"
- integrity sha512-AzUR6EiDuY32oAnfELgVFPasfovJw4+NtRy7RIam0IUOSgNZKcazqcHzsoW1zDw3AzIBlD1VlRvl5SPJRSlTPg==
+scheduler@0.0.0-experimental-3310209d0:
+ version "0.0.0-experimental-3310209d0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-3310209d0.tgz#228ef98604dd0dc6d5c594945277e28eae2118f1"
+ integrity sha512-TklIjh2ps3KbU8ZSDg96VUp56VZIb1tb3gy8Y16VKeg2Zf0q7FW+LhqT2gzmfN7OxZVUUHMzXilVVIHtV10gnA==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
@@ -12509,16 +12430,16 @@ tar@^6.0.2:
mkdirp "^1.0.3"
yallist "^4.0.0"
-teeny-request@^6.0.0:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-6.0.3.tgz#b617f9d5b7ba95c76a3f257f6ba2342b70228b1f"
- integrity sha512-TZG/dfd2r6yeji19es1cUIwAlVD8y+/svB1kAC2Y0bjEyysrfbO8EZvJBRwIE6WkwmUoB7uvWLwTIhJbMXZ1Dw==
+teeny-request@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c"
+ integrity sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw==
dependencies:
http-proxy-agent "^4.0.0"
https-proxy-agent "^5.0.0"
- node-fetch "^2.2.0"
+ node-fetch "^2.6.1"
stream-events "^1.0.5"
- uuid "^7.0.0"
+ uuid "^8.0.0"
temp-dir@^1.0.0:
version "1.0.0"
@@ -12626,7 +12547,7 @@ through2@^2.0.0:
readable-stream "~2.3.6"
xtend "~4.0.1"
-through2@^3.0.0, through2@^3.0.1:
+through2@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4"
integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==
@@ -13086,21 +13007,16 @@ uuid@^3.3.2, uuid@^3.4.0:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-uuid@^7.0.0:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
- integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
+uuid@^8.0.0, uuid@^8.3.0:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
uuid@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e"
integrity sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q==
-uuid@^8.3.0:
- version "8.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
- integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-
v8-compile-cache@^2.0.3:
version "2.1.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
@@ -13171,11 +13087,6 @@ wait-for-expect@^3.0.2:
resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.2.tgz#d2f14b2f7b778c9b82144109c8fa89ceaadaa463"
integrity sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==
-walkdir@^0.4.0:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39"
- integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==
-
walker@^1.0.7, walker@~1.0.5:
version "1.0.7"
resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
@@ -13387,44 +13298,11 @@ whatwg-url@^8.0.0:
tr46 "^2.0.2"
webidl-conversions "^6.1.0"
-which-boxed-primitive@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1"
- integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==
- dependencies:
- is-bigint "^1.0.0"
- is-boolean-object "^1.0.0"
- is-number-object "^1.0.3"
- is-string "^1.0.4"
- is-symbol "^1.0.2"
-
-which-collection@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906"
- integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==
- dependencies:
- is-map "^2.0.1"
- is-set "^2.0.1"
- is-weakmap "^2.0.1"
- is-weakset "^2.0.1"
-
which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which-typed-array@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2"
- integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ==
- dependencies:
- available-typed-arrays "^1.0.2"
- es-abstract "^1.17.5"
- foreach "^2.0.5"
- function-bind "^1.1.1"
- has-symbols "^1.0.1"
- is-typed-array "^1.1.3"
-
which@^1.2.9, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
@@ -13758,7 +13636,7 @@ yargs@^13.3.2:
y18n "^4.0.0"
yargs-parser "^13.1.2"
-yargs@^15.4.1:
+yargs@^15.3.1, yargs@^15.4.1:
version "15.4.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==