From 07c6ed21bc67ec916f3d24e50df3a28236acb46c Mon Sep 17 00:00:00 2001 From: Gimleux Date: Tue, 24 Nov 2020 09:26:27 +0100 Subject: [PATCH 01/20] changed favicon & logos --- webapp_frontend/public/favicon.ico | Bin 3150 -> 2166 bytes webapp_frontend/public/logo192.png | Bin 5347 -> 2815 bytes webapp_frontend/public/logo512.png | Bin 9664 -> 4722 bytes .../src/assets/images/logos/logo.png | Bin 8212 -> 9807 bytes .../src/components/pages/Registration.tsx | 51 ++++++++---------- 5 files changed, 22 insertions(+), 29 deletions(-) diff --git a/webapp_frontend/public/favicon.ico b/webapp_frontend/public/favicon.ico index bcd5dfd67cd0361b78123e95c2dd96031f27f743..e0a96e5ea469c3300f4bd0bd8c7727c3d03b0d98 100644 GIT binary patch literal 2166 zcmeH|J#5oZ5XaAPYWq20yG}`*2KTK3f1R05B0i1N65wn96eWq`72l9^4vUBFE(Iy zb^}h%HR1e16E0j|h1#9FaOu`M+`P68Ymck2a{nPL+}nT`PaZ*K?Jd-weumpGx8dFE z=kW8*E13VV1JS4V@NDZBw7-7=x$|vUOQZN`0;381rwQ=HvgxLG#U9evY&T&~8sj~j zjg2K4Y#`^1Wn+!(-oFVw^{7b+bRJ{rvHhH5ToGDT59yjVM4T*>8O*U^P16u(G6U;L zm|%i?@2B!vVm;@jTW;&LHI=17luNcYFYA<$V=QN~ToUba4>2VmXUq(OIHAkSo^9)N z1Y<#vv+Z5HT;?8eT}S;Kt*V=}zKooE9wji#!KYU&`aVzZhZs3!*t+F7x?$``3oQC- zP#kfIR?Z#E_mStP#*5=d$_bZL0v7weZ@8{uxJEwFC-npeVSv|g(en83a#ikFL8uO) z+Ps@jc&hFM3Fe$|p@6y6U&8l=VO)*j0-92aIjWZ?CMG9UsPBP1E-%Fc=!5v8IF+mM z?515l1grYt)p311nt!z^g6AiLAIfE23VHgsknUF@AAA(D^+U+0CZqr%+vq|=H-%g` zMQ2qP9YYfxT@&pFEQw7Bq6i>r1GJVP*o@G(TEX&4G`;LbqQOxG^))Glj&7oJ^g8+< D+zZiA literal 3150 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 MDeX2GIKR{Qf5okjU;qFB diff --git a/webapp_frontend/public/logo192.png b/webapp_frontend/public/logo192.png index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..6f131e0dada27bfd0a88360528beda6051c61875 100644 GIT binary patch literal 2815 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 X@eDJUQo;Ye2mwlRsf>eOo$d8TdJ|n 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/webapp_frontend/src/assets/images/logos/logo.png b/webapp_frontend/src/assets/images/logos/logo.png index 07f2b0ecd6cf17f06c45afc0d9bcee19058b7044..74bea3c929f61f497d7fb9f5440f0f0296830a1e 100644 GIT binary patch literal 9807 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 literal 8212 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 diff --git a/webapp_frontend/src/components/pages/Registration.tsx b/webapp_frontend/src/components/pages/Registration.tsx index cffca77a..d793bbb1 100644 --- a/webapp_frontend/src/components/pages/Registration.tsx +++ b/webapp_frontend/src/components/pages/Registration.tsx @@ -10,6 +10,7 @@ import {registerNewUser} from "../../background/api/registration"; export default function Registration(): ReactElement { const MIN_PASSWORD_LENGTH = 8; const MAX_PASSWORD_LENGTH = 20; + const DEFAULT_ALERT_DURATION = 3500; const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); @@ -26,52 +27,44 @@ export default function Registration(): ReactElement { useEffect(() => { reviewPasswordMatch() // eslint-disable-next-line - },[passwordConfirmation, password]) + }, [passwordConfirmation, password]) const handleSubmit = async (event: FormEvent) => { console.log("[REGISTRATION] handleSubmit") event.preventDefault(); reviewPasswordMatch(); - if (!username){ - setAlertColor("danger"); - setAlertMessage("Error: Please choose an username.") - handleAlertVisibility(3500) + if (!username) { + handleAlertVisibility(DEFAULT_ALERT_DURATION, "danger", "Error: Please choose an username.") } else if (!passwordsMatch) { - setAlertColor("danger"); - setAlertMessage("Error: Password and password confirmation must match.") - handleAlertVisibility(3500) - } else if (!passwordInformationNumber || !passwordInformationLowercase || !passwordInformationUppercase || !passwordInformationLength){ - setAlertColor("danger"); - setAlertMessage("Error: Please pay attention to the notes below the input field."); - handleAlertVisibility(3500) + handleAlertVisibility(DEFAULT_ALERT_DURATION, "danger", "Error: Password and password confirmation must match.") + } else if (!passwordInformationNumber || !passwordInformationLowercase || !passwordInformationUppercase || !passwordInformationLength) { + handleAlertVisibility(DEFAULT_ALERT_DURATION, "danger", "Error: Please pay attention to the notes below the input fields.") } else { await registerNewUser(username, password, passwordConfirmation) .then(res => { - setAlertMessage("Worked: " + (res.outputMessage ? res.outputMessage : (res.httpStatus + " " + res.httpMessage))); - setAlertColor("success"); - console.table(res); + handleAlertVisibility(DEFAULT_ALERT_DURATION, "success", "Worked: " + (res.outputMessage ? res.outputMessage : (res.httpStatus + " " + res.httpMessage))); }) .catch(err => { - setAlertColor("danger"); - setAlertMessage("Error: " + (err.outputMessage ? err.outputMessage : (err.httpStatus + " " + err.httpMessage))) - console.table(err) + handleAlertVisibility(DEFAULT_ALERT_DURATION, "danger", "Error: " + (err.outputMessage ? err.outputMessage : (err.httpStatus + " " + err.httpMessage))) }) - .finally(() => handleAlertVisibility(3500)) } } - const handleAlertVisibility = (duration: number) => { + const handleAlertVisibility = (duration: number, color: "primary" | "secondary" | "success" | "danger" | "warning" | "info" | "light" | "dark", message: string) => { if (!alertVisibility) { + setAlertMessage(message); + setAlertColor(color); setAlertVisibility(true); setTimeout(() => { - setAlertVisibility(false) - }, duration) + setAlertVisibility(false); + }, duration); } } - const makePasswordInputFitRules = (input:string):string|null => { + const makePasswordInputFitRules = (input: string): string | null => { input = deleteSpaces(input); - if (biggerMaxStrLength(input, MAX_PASSWORD_LENGTH)){ + if (biggerMaxStrLength(input, MAX_PASSWORD_LENGTH)) { + handleAlertVisibility(DEFAULT_ALERT_DURATION, "warning", "Maximum password length exceeded. Input was undone."); return null } return input; @@ -79,8 +72,8 @@ export default function Registration(): ReactElement { const handlePasswordChange = (event: ChangeEvent) => { event.preventDefault(); - let value:string|null = makePasswordInputFitRules(event.target.value); - if (!value){ + let value: string | null = makePasswordInputFitRules(event.target.value); + if (!value) { value = password; } setPasswordInformationLength(!notMinStrLength(value, MIN_PASSWORD_LENGTH)); @@ -92,14 +85,14 @@ export default function Registration(): ReactElement { const handlePasswordConfirmationChange = async (event: ChangeEvent) => { event.preventDefault(); - let value:string|null = makePasswordInputFitRules(event.target.value); - if (!value){ + let value: string | null = makePasswordInputFitRules(event.target.value); + if (!value) { value = passwordConfirmation; } setPasswordConfirmation(value); } - const reviewPasswordMatch = ():void => { + const reviewPasswordMatch = (): void => { setPasswordsMatch(password === passwordConfirmation); } From e72f4f201ac2b77a8331ce2adefc1ec538d6b66d Mon Sep 17 00:00:00 2001 From: Gimleux Date: Tue, 24 Nov 2020 10:24:33 +0100 Subject: [PATCH 02/20] Added Console comments to index.html --- webapp_frontend/public/index.html | 27 +++++++++++-------- webapp_frontend/src/components/App.tsx | 2 +- .../src/components/pages/Health.tsx | 14 ++++++---- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/webapp_frontend/public/index.html b/webapp_frontend/public/index.html index aa069f27..3dc31afe 100644 --- a/webapp_frontend/public/index.html +++ b/webapp_frontend/public/index.html @@ -24,20 +24,25 @@ work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> - React App + FileFighter
- + + + + + + + + + + + + + + + diff --git a/webapp_frontend/src/components/App.tsx b/webapp_frontend/src/components/App.tsx index 57e56fce..3d1d96f7 100644 --- a/webapp_frontend/src/components/App.tsx +++ b/webapp_frontend/src/components/App.tsx @@ -45,7 +45,7 @@ function App(props: Props): ReactElement { if (props.tokens.checkedCookies) { - if (props.tokens.refreshToken && props.tokens.accessToken) { + if ((props.tokens.refreshToken && props.tokens.accessToken)) { return (
diff --git a/webapp_frontend/src/components/pages/Health.tsx b/webapp_frontend/src/components/pages/Health.tsx index 8a193d92..c0e5aa5d 100644 --- a/webapp_frontend/src/components/pages/Health.tsx +++ b/webapp_frontend/src/components/pages/Health.tsx @@ -7,12 +7,16 @@ import {logout} from "../../background/api/auth"; export default function Health() { - const [backendLiveTime, setBackendLiveTime] = useState("not reachable"); - const [backendUserCount, setBackendUserCount] = useState("not reachable"); + const [backendLiveTime, setBackendLiveTime] = useState("not reachable"); + const [backendUserCount, setBackendUserCount] = useState("not reachable"); useEffect(() => { - updateVariables() - }, []); + const timer = setTimeout(() => { + updateVariables() + }, 60000) + // Clear timeout if the component is unmounted + return () => clearTimeout(timer); + }); function updateVariables(): void { Promise.all([callBackendHealth()]) @@ -39,7 +43,7 @@ export default function Health() {
- + {/**/} From 36192589a468f50546b402bfaeff8f7d73e0b820 Mon Sep 17 00:00:00 2001 From: Gimleux Date: Tue, 24 Nov 2020 10:33:01 +0100 Subject: [PATCH 03/20] Streched ui to 100% --- webapp_frontend/public/index.html | 6 +++--- webapp_frontend/src/components/pages/Health.tsx | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/webapp_frontend/public/index.html b/webapp_frontend/public/index.html index 3dc31afe..e8e88522 100644 --- a/webapp_frontend/public/index.html +++ b/webapp_frontend/public/index.html @@ -1,5 +1,5 @@ - + @@ -26,9 +26,9 @@ --> FileFighter - + -
+
diff --git a/webapp_frontend/src/components/pages/Health.tsx b/webapp_frontend/src/components/pages/Health.tsx index c0e5aa5d..2e383d39 100644 --- a/webapp_frontend/src/components/pages/Health.tsx +++ b/webapp_frontend/src/components/pages/Health.tsx @@ -10,6 +10,10 @@ export default function Health() { const [backendLiveTime, setBackendLiveTime] = useState("not reachable"); const [backendUserCount, setBackendUserCount] = useState("not reachable"); + useEffect(() => { + updateVariables(); + }, []) + useEffect(() => { const timer = setTimeout(() => { updateVariables() From c638be314e764cae3369fe2b28df19bdf52b2cf3 Mon Sep 17 00:00:00 2001 From: Gimleux Date: Tue, 24 Nov 2020 11:08:59 +0100 Subject: [PATCH 04/20] Manage CSS for NavBar, Main & Footer --- webapp_frontend/src/components/App.css | 24 ++---------------- webapp_frontend/src/components/App.tsx | 25 +++++++++++++------ webapp_frontend/src/components/Constants.tsx | 5 +++- webapp_frontend/src/components/Health.tsx | 2 -- .../src/components/basicElements/Footer.tsx | 5 ++-- 5 files changed, 26 insertions(+), 35 deletions(-) diff --git a/webapp_frontend/src/components/App.css b/webapp_frontend/src/components/App.css index 74b5e053..673d0063 100644 --- a/webapp_frontend/src/components/App.css +++ b/webapp_frontend/src/components/App.css @@ -1,10 +1,5 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; +main > .container { + padding: 60px 15px 0; } @media (prefers-reduced-motion: no-preference) { @@ -13,21 +8,6 @@ } } -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - @keyframes App-logo-spin { from { transform: rotate(0deg); diff --git a/webapp_frontend/src/components/App.tsx b/webapp_frontend/src/components/App.tsx index 3d1d96f7..52ef3353 100644 --- a/webapp_frontend/src/components/App.tsx +++ b/webapp_frontend/src/components/App.tsx @@ -16,10 +16,13 @@ import Login from "./basicElements/Login"; import {checkForCookie} from "../background/api/auth"; - // this takes the redux store and maps everything that is needed to the function props const mapState = (state: SystemState) => ({ - tokens: {refreshToken: state.tokens.refreshToken, accessToken: state.tokens.accessToken, checkedCookies: state.tokens.checkedCookies}, + tokens: { + refreshToken: state.tokens.refreshToken, + accessToken: state.tokens.accessToken, + checkedCookies: state.tokens.checkedCookies + }, user: state.user }) @@ -48,13 +51,19 @@ function App(props: Props): ReactElement { if ((props.tokens.refreshToken && props.tokens.accessToken)) { return ( -
+
-
- - - -
+
+
+
+
+ + + +
+
+
+
diff --git a/webapp_frontend/src/components/Constants.tsx b/webapp_frontend/src/components/Constants.tsx index 4a6bfc76..42a2ec9a 100644 --- a/webapp_frontend/src/components/Constants.tsx +++ b/webapp_frontend/src/components/Constants.tsx @@ -10,7 +10,10 @@ function Constants(): ReactElement { // url + host of backend - return (); + return ( + + + ); } diff --git a/webapp_frontend/src/components/Health.tsx b/webapp_frontend/src/components/Health.tsx index 870bcd02..67870b24 100644 --- a/webapp_frontend/src/components/Health.tsx +++ b/webapp_frontend/src/components/Health.tsx @@ -1,6 +1,5 @@ import React, {ReactElement, useEffect, useState} from "react"; import {callBackendHealth} from "../background/api/api"; -import Header from "./basicElements/Header"; import {Button, Container, Table} from "react-bootstrap"; import logo from "../assets/images/logos/logo.png"; @@ -30,7 +29,6 @@ function Health(): ReactElement { return (
-

FileFighter diff --git a/webapp_frontend/src/components/basicElements/Footer.tsx b/webapp_frontend/src/components/basicElements/Footer.tsx index 8aab8e8c..246b1d7b 100644 --- a/webapp_frontend/src/components/basicElements/Footer.tsx +++ b/webapp_frontend/src/components/basicElements/Footer.tsx @@ -1,8 +1,9 @@ import React, {ReactElement} from 'react'; +import { Container } from 'react-bootstrap'; export default function Footer(): ReactElement { return ( -
+

@@ -11,7 +12,7 @@ export default function Footer(): ReactElement {
-
+ ); } From c2e65373cef34546c2346ac2109ce7b794fe103c Mon Sep 17 00:00:00 2001 From: Gimleux Date: Tue, 24 Nov 2020 11:31:50 +0100 Subject: [PATCH 05/20] WIP --- webapp_frontend/src/components/App.tsx | 4 +--- webapp_frontend/src/components/pages/Registration.tsx | 6 +++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/webapp_frontend/src/components/App.tsx b/webapp_frontend/src/components/App.tsx index 52ef3353..d82f8257 100644 --- a/webapp_frontend/src/components/App.tsx +++ b/webapp_frontend/src/components/App.tsx @@ -57,9 +57,7 @@ function App(props: Props): ReactElement {
- - - +
diff --git a/webapp_frontend/src/components/pages/Registration.tsx b/webapp_frontend/src/components/pages/Registration.tsx index d793bbb1..3ea78b42 100644 --- a/webapp_frontend/src/components/pages/Registration.tsx +++ b/webapp_frontend/src/components/pages/Registration.tsx @@ -5,6 +5,7 @@ import {biggerMaxStrLength, notMinStrLength} from "../../background/methods/chec import info_svg from "../../assets/images/icons/material.io/info-24px.svg"; import check_svg from "../../assets/images/icons/material.io/check_circle-24px.svg"; import error_svg from "../../assets/images/icons/material.io/error-24px.svg"; +import fileFighter from "../../assets/images/logos/logo.png"; import {registerNewUser} from "../../background/api/registration"; export default function Registration(): ReactElement { @@ -97,7 +98,7 @@ export default function Registration(): ReactElement { } return ( - +

Create new account

@@ -163,6 +164,9 @@ export default function Registration(): ReactElement {
+
+ logo +
) } From ff85ffaaf97f0f71f3d1d0bb99c319e9ddd34036 Mon Sep 17 00:00:00 2001 From: Gimleux Date: Tue, 24 Nov 2020 12:09:19 +0100 Subject: [PATCH 06/20] Removed code smell --- webapp_frontend/src/style/custom.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp_frontend/src/style/custom.scss b/webapp_frontend/src/style/custom.scss index 2c2f4f67..4b7858bf 100644 --- a/webapp_frontend/src/style/custom.scss +++ b/webapp_frontend/src/style/custom.scss @@ -1,7 +1,7 @@ //read this: https://getbootstrap.com/docs/4.1/getting-started/theming // Override default variables before the import (see node_modules/bootstrap/scss/_variables.scss for all) -$body-bg: #2a313d;; +$body-bg: #2a313d; $body-color: #FFF; $blue: #1a4965; From 8f94485be91c3c1043665a4ea12b9708b6bcda2b Mon Sep 17 00:00:00 2001 From: Gimleux Date: Tue, 24 Nov 2020 14:03:56 +0100 Subject: [PATCH 07/20] trying to save to world aka restore wrong PR --- webapp_frontend/public/index.html | 12 ++++++------ .../src/background/{constants.tsx => constants.ts} | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) rename webapp_frontend/src/background/{constants.tsx => constants.ts} (63%) diff --git a/webapp_frontend/public/index.html b/webapp_frontend/public/index.html index e8e88522..f654b812 100644 --- a/webapp_frontend/public/index.html +++ b/webapp_frontend/public/index.html @@ -32,12 +32,12 @@ - - - - - - + + + + + + diff --git a/webapp_frontend/src/background/constants.tsx b/webapp_frontend/src/background/constants.ts similarity index 63% rename from webapp_frontend/src/background/constants.tsx rename to webapp_frontend/src/background/constants.ts index f77a3cd0..f68f07d3 100644 --- a/webapp_frontend/src/background/constants.tsx +++ b/webapp_frontend/src/background/constants.ts @@ -11,7 +11,8 @@ const prod: constants = { const dev: constants = { url: { - API_URL: 'https://cors-anywhere.herokuapp.com/http://filefighter.ddns.net:3001', + API_URL: 'http://filefighter.ddns.net:1081/http://filefighter.ddns.net:3001', + //API_URL: 'https://cors-anywhere.herokuapp.com/http://filefighter.ddns.net:3001', // API_URL: 'http://localhost:8080', } }; From d76432877dc0f8e889647e491736559f4a946466 Mon Sep 17 00:00:00 2001 From: Gimleux Date: Tue, 24 Nov 2020 14:06:32 +0100 Subject: [PATCH 08/20] deleted warning --- webapp_frontend/src/components/App.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/webapp_frontend/src/components/App.tsx b/webapp_frontend/src/components/App.tsx index d82f8257..6bc42aff 100644 --- a/webapp_frontend/src/components/App.tsx +++ b/webapp_frontend/src/components/App.tsx @@ -1,6 +1,5 @@ import React, {ReactElement} from 'react'; import './App.css'; -import {Container} from 'react-bootstrap'; import Header from "./basicElements/Header"; import Footer from "./basicElements/Footer"; import {BrowserRouter} from "react-router-dom"; From 992b3f2a1107b5854b69bcecb10cb00b8f92c101 Mon Sep 17 00:00:00 2001 From: Gimleux Date: Tue, 24 Nov 2020 22:56:03 +0100 Subject: [PATCH 09/20] Fixed missing catch in Health --- webapp_frontend/src/components/Health.tsx | 58 +++++++++---------- .../src/components/pages/Health.tsx | 4 ++ 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/webapp_frontend/src/components/Health.tsx b/webapp_frontend/src/components/Health.tsx index 67870b24..4ce835f5 100644 --- a/webapp_frontend/src/components/Health.tsx +++ b/webapp_frontend/src/components/Health.tsx @@ -6,8 +6,8 @@ import logo from "../assets/images/logos/logo.png"; function Health(): ReactElement { - const [backendLiveTime, setBackendLiveTime] = useState("not reachable"); - const [backendUserCount, setBackendUserCount] = useState("not reachable"); + const [backendLiveTime, setBackendLiveTime] = useState("not reachable"); + const [backendUserCount, setBackendUserCount] = useState("not reachable"); useEffect(() => { @@ -28,39 +28,37 @@ function Health(): ReactElement { } return ( -
- -

- FileFighter -

+ +

+ FileFighter +

- logo + logo -
- - - - - +
+ +
Backend information
+ + + - - - - - - - - - - - - -
Backend information
Uptime{backendLiveTime}
Usercount{backendUserCount}
-
-
-
+ + + + + Uptime + {backendLiveTime} + + + Usercount + {backendUserCount} + + + +
+ ); } diff --git a/webapp_frontend/src/components/pages/Health.tsx b/webapp_frontend/src/components/pages/Health.tsx index 2e383d39..74b5549e 100644 --- a/webapp_frontend/src/components/pages/Health.tsx +++ b/webapp_frontend/src/components/pages/Health.tsx @@ -28,6 +28,10 @@ export default function Health() { setBackendLiveTime(backendHealthData.uptimeInSeconds); setBackendUserCount(backendHealthData.userCount) }) + .catch(() => { + setBackendLiveTime("not reachable"); + setBackendUserCount("not reachable"); + }) } return ( From 3d562289fc32aa79089d8680340aaa7a1a7810dc Mon Sep 17 00:00:00 2001 From: Gimleux Date: Tue, 24 Nov 2020 22:56:27 +0100 Subject: [PATCH 10/20] Deleted outdated Health.tsx --- webapp_frontend/src/components/Health.tsx | 65 ----------------------- 1 file changed, 65 deletions(-) delete mode 100644 webapp_frontend/src/components/Health.tsx diff --git a/webapp_frontend/src/components/Health.tsx b/webapp_frontend/src/components/Health.tsx deleted file mode 100644 index 4ce835f5..00000000 --- a/webapp_frontend/src/components/Health.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React, {ReactElement, useEffect, useState} from "react"; -import {callBackendHealth} from "../background/api/api"; -import {Button, Container, Table} from "react-bootstrap"; -import logo from "../assets/images/logos/logo.png"; - -function Health(): ReactElement { - - - const [backendLiveTime, setBackendLiveTime] = useState("not reachable"); - const [backendUserCount, setBackendUserCount] = useState("not reachable"); - - - useEffect(() => { - callInitialBackendRequests() - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - function callInitialBackendRequests(): void { - updateVariables() - } - - function updateVariables(): void { - Promise.all([callBackendHealth()]) - .then(([backendHealthData]) => { - setBackendLiveTime(backendHealthData.uptimeInSeconds); - setBackendUserCount(backendHealthData.userCount) - }) - } - - return ( - -

- FileFighter -

- - - logo - - -
- - - - - - - - - - - - - - - - - - -
Backend information
Uptime{backendLiveTime}
Usercount{backendUserCount}
-
-
- ); -} - -export default Health; \ No newline at end of file From b46fa5474ff1a9bfaba54597ad9a8f92f4b21574 Mon Sep 17 00:00:00 2001 From: Gimleux <56401687+Gimleux@users.noreply.github.com> Date: Thu, 3 Dec 2020 09:52:31 +0100 Subject: [PATCH 11/20] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 05643243..a01bd8cb 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,10 @@ Frontend Web Application for FileFighter. ![CodeFactor](https://www.codefactor.io/repository/github/filefighter/webapp/badge) ![Docker Release](https://img.shields.io/github/v/release/filefighter/webapp?color=dark-green&label=Stable%20Version&logo=docker&style=for-the-badge) ![Docker Pulls](https://img.shields.io/docker/pulls/filefighter/frontend?logo=docker&style=for-the-badge) -[![Quality Gate Status](http://filefighter.ddns.net:9000/api/project_badges/measure?project=de.filefighter.frontend&metric=alert_status)](http://filefighter.ddns.net:9000/dashboard?id=de.filefighter.frontend) +[![Code Smells](http://filefighter.ddns.net:9000/api/project_badges/measure?project=de.filefighter.frontend&metric=code_smells)](http://filefighter.ddns.net:9000/dashboard?id=de.filefighter.frontend) [![Lines of Code](http://filefighter.ddns.net:9000/api/project_badges/measure?project=de.filefighter.frontend&metric=ncloc)](http://filefighter.ddns.net:9000/dashboard?id=de.filefighter.frontend) [![Security Rating](http://filefighter.ddns.net:9000/api/project_badges/measure?project=de.filefighter.frontend&metric=security_rating)](http://filefighter.ddns.net:9000/dashboard?id=de.filefighter.frontend) [![Bugs](http://filefighter.ddns.net:9000/api/project_badges/measure?project=de.filefighter.frontend&metric=bugs)](http://filefighter.ddns.net:9000/dashboard?id=de.filefighter.frontend) -[![Code Smells](http://filefighter.ddns.net:9000/api/project_badges/measure?project=de.filefighter.frontend&metric=code_smells)](http://filefighter.ddns.net:9000/dashboard?id=de.filefighter.frontend) [![Duplicated Lines Density](http://filefighter.ddns.net:9000/api/project_badges/measure?project=de.filefighter.frontend&metric=duplicated_lines_density)](http://filefighter.ddns.net:9000/dashboard?id=de.filefighter.frontend) ## Deployment From dc626d58dd2ad3457c83622cc0af443879aa0684 Mon Sep 17 00:00:00 2001 From: Gimleux Date: Fri, 4 Dec 2020 13:17:51 +0100 Subject: [PATCH 12/20] Added Submit Runner --- webapp_frontend/src/background/constants.ts | 4 +- .../src/background/methods/style.js | 13 ++++ .../src/background/methods/windowSize.ts | 35 +++++++++ .../src/components/basicElements/Login.tsx | 4 +- .../src/components/pages/Registration.tsx | 73 +++++++++++++++---- 5 files changed, 111 insertions(+), 18 deletions(-) create mode 100644 webapp_frontend/src/background/methods/style.js create mode 100644 webapp_frontend/src/background/methods/windowSize.ts diff --git a/webapp_frontend/src/background/constants.ts b/webapp_frontend/src/background/constants.ts index f68f07d3..810db30f 100644 --- a/webapp_frontend/src/background/constants.ts +++ b/webapp_frontend/src/background/constants.ts @@ -11,8 +11,8 @@ const prod: constants = { const dev: constants = { url: { - API_URL: 'http://filefighter.ddns.net:1081/http://filefighter.ddns.net:3001', - //API_URL: 'https://cors-anywhere.herokuapp.com/http://filefighter.ddns.net:3001', + // API_URL: 'http://filefighter.ddns.net:1081/http://filefighter.ddns.net:3001', + API_URL: 'https://cors-anywhere.herokuapp.com/http://filefighter.ddns.net:3001', // API_URL: 'http://localhost:8080', } }; diff --git a/webapp_frontend/src/background/methods/style.js b/webapp_frontend/src/background/methods/style.js new file mode 100644 index 00000000..d1ebd805 --- /dev/null +++ b/webapp_frontend/src/background/methods/style.js @@ -0,0 +1,13 @@ +export function getStyleValue(element, strCssRule) { + //https://stackoverflow.com/questions/5227909/how-to-get-an-elements-padding-value-using-javascript + let strValue = ""; + if (document.defaultView && document.defaultView.getComputedStyle) { + strValue = document.defaultView.getComputedStyle(element, "").getPropertyValue(strCssRule); + } else if (element.currentStyle) { + strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1) { + return p1.toUpperCase(); + }); + strValue = element.currentStyle[strCssRule]; + } + return strValue; +} \ No newline at end of file diff --git a/webapp_frontend/src/background/methods/windowSize.ts b/webapp_frontend/src/background/methods/windowSize.ts new file mode 100644 index 00000000..0c93e6cc --- /dev/null +++ b/webapp_frontend/src/background/methods/windowSize.ts @@ -0,0 +1,35 @@ +export interface getWindowSize_Interface { + viewportWidth: number, + viewportHeight: number +} +export function getWindowSize():getWindowSize_Interface { + + let viewportwidth:number; + let viewportheight:number; + +// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight + + if (typeof window.innerWidth != 'undefined') { + viewportwidth = window.innerWidth + viewportheight = window.innerHeight + } + +// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document) + + else if (typeof document.documentElement != 'undefined' && + typeof document.documentElement.clientWidth != ('undefined' || 0)){ + viewportwidth = document.documentElement.clientWidth + viewportheight = document.documentElement.clientHeight + } + +// older versions of IE + + else { + viewportwidth = document.getElementsByTagName('body')[0].clientWidth + viewportheight = document.getElementsByTagName('body')[0].clientHeight + } + return { + viewportHeight: viewportheight, + viewportWidth: viewportwidth + } +} \ No newline at end of file diff --git a/webapp_frontend/src/components/basicElements/Login.tsx b/webapp_frontend/src/components/basicElements/Login.tsx index adea9893..4f64bb30 100644 --- a/webapp_frontend/src/components/basicElements/Login.tsx +++ b/webapp_frontend/src/components/basicElements/Login.tsx @@ -5,7 +5,7 @@ import {loginWithUsernameAndPassword} from "../../background/api/auth"; function Login(): ReactElement { const [userName, setUsername] = useState(""); const [password, setPassword] = useState(""); - const [stayLoggedIn, setStayLoggedIn] = useState(false); + const [stayLoggedIn, setStayLoggedIn] = useState(true); const [errorMessage, setErrorMessage] = useState(""); const [loading,setLoading]=useState(false); @@ -47,7 +47,7 @@ function Login(): ReactElement { - setStayLoggedIn(!stayLoggedIn)}/> + setStayLoggedIn(!stayLoggedIn)}/> ) + return ( +
+ +
+ ) } export default Header; \ No newline at end of file diff --git a/webapp_frontend/src/components/basicElements/TopBanner.tsx b/webapp_frontend/src/components/basicElements/TopBanner.tsx new file mode 100644 index 00000000..6dba7079 --- /dev/null +++ b/webapp_frontend/src/components/basicElements/TopBanner.tsx @@ -0,0 +1,9 @@ +import React, {ReactElement} from "react"; + +export function TopBanner():ReactElement { + return( +
+ Black Lives Matter +
+ ) +} \ No newline at end of file diff --git a/webapp_frontend/src/components/pages/Health.tsx b/webapp_frontend/src/components/pages/Health.tsx index 74b5549e..ff48e58d 100644 --- a/webapp_frontend/src/components/pages/Health.tsx +++ b/webapp_frontend/src/components/pages/Health.tsx @@ -1,6 +1,6 @@ import React, {useEffect, useState} from "react"; import logo from "../../assets/images/logos/logo.png"; -import {Button, Table} from "react-bootstrap"; +import {Button, Table, Container} from "react-bootstrap"; import {callBackendHealth} from "../../background/api/api"; import {audioOnOff, setAudioVolumeByID} from "../../background/methods/sound" import {logout} from "../../background/api/auth"; @@ -35,7 +35,7 @@ export default function Health() { } return ( - <> +

FileFighter

@@ -72,6 +72,6 @@ export default function Health() { - +
) } diff --git a/webapp_frontend/src/components/pages/Registration.tsx b/webapp_frontend/src/components/pages/Registration.tsx index 3de3af11..f490b393 100644 --- a/webapp_frontend/src/components/pages/Registration.tsx +++ b/webapp_frontend/src/components/pages/Registration.tsx @@ -27,6 +27,9 @@ export default function Registration(): ReactElement { const [alertVariant, setAlertColor] = useState<"primary" | "secondary" | "success" | "danger" | "warning" | "info" | "light" | "dark">("success"); const [alertVisibility, setAlertVisibility] = useState(false); + const registrationContainer = document.getElementById("registrationContainer") + const logoSubmit = document.getElementById("logoSubmit") + useEffect(() => { function repositionSubmitLogo() { const logo = document.getElementById("logoSubmit") @@ -36,13 +39,13 @@ export default function Registration(): ReactElement { let containerPadding:string|number|null = getStyleValue(container, "padding-left"); const pxPosition = containerPadding.indexOf("px"); - containerPadding = pxPosition == -1 ? null : Number(containerPadding.substr(0, pxPosition)) + containerPadding = pxPosition === -1 ? null : Number(containerPadding.substr(0, pxPosition)) logo.style.left = -(leftContainerOffset+logo.offsetWidth*2+(containerPadding ?? 20)) + "px"; } } repositionSubmitLogo() - },[document.getElementById("registrationContainer"), document.getElementById("logoSubmit")]) + },[registrationContainer, logoSubmit]) useEffect(() => { reviewPasswordMatch() diff --git a/webapp_frontend/src/style/custom.scss b/webapp_frontend/src/style/custom.scss index 4b7858bf..ed8d03bd 100644 --- a/webapp_frontend/src/style/custom.scss +++ b/webapp_frontend/src/style/custom.scss @@ -26,5 +26,7 @@ $blue: #1a4965; @import "~bootstrap/scss/forms"; @import "~bootstrap/scss/spinners"; @import "~bootstrap/scss/alert"; +@import "~bootstrap/scss/navbar"; +@import "~bootstrap/scss/nav"; From 25d464f844100c86f9741e8d24dce48c25142d0d Mon Sep 17 00:00:00 2001 From: Gimleux Date: Fri, 4 Dec 2020 16:25:42 +0100 Subject: [PATCH 15/20] Added Footer --- webapp_frontend/package-lock.json | 13 ++++++++++++ webapp_frontend/package.json | 3 ++- webapp_frontend/src/components/App.tsx | 4 ++-- .../src/components/basicElements/Footer.tsx | 20 ++++++++++--------- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/webapp_frontend/package-lock.json b/webapp_frontend/package-lock.json index 3409c4ab..24858607 100644 --- a/webapp_frontend/package-lock.json +++ b/webapp_frontend/package-lock.json @@ -15296,6 +15296,11 @@ } } }, + "opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==" + }, "opn": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", @@ -19651,6 +19656,14 @@ } } }, + "super-tiny-icons": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/super-tiny-icons/-/super-tiny-icons-0.4.0.tgz", + "integrity": "sha512-PEHlUQsSdEtQNeP4pNOBCDU9cJe6bsrMmG3yV62icvMDgjCC+srl9AfJ5RGwfKbyvGNbYRUtcmkka+k7yhZxOA==", + "requires": { + "opencollective-postinstall": "^2.0.2" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", diff --git a/webapp_frontend/package.json b/webapp_frontend/package.json index fa985817..5d3bc5fe 100644 --- a/webapp_frontend/package.json +++ b/webapp_frontend/package.json @@ -26,6 +26,7 @@ "react-toastify": "^6.1.0", "redux": "^4.0.5", "redux-types": "^2.0.3", + "super-tiny-icons": "^0.4.0", "typescript": "^3.8.3" }, "scripts": { @@ -35,7 +36,7 @@ "eject": "react-scripts eject", "storybook": "start-storybook -p 6006 -s public --no-dll", "build-storybook": "build-storybook -s public --no-dll", - "sonar": "SONAR_LOGIN=$SONAR_LOGIN SONAR_PASSWORD=$SONAR_PASSWORD node src/sonar-scanner.js" + "sonar": "SONAR_LOGIN=$SONAR_LOGIN SONAR_PASSWORD=$SONAR_PASSWORD node src/sonar-scanner.js" }, "eslintConfig": { "extends": "react-app" diff --git a/webapp_frontend/src/components/App.tsx b/webapp_frontend/src/components/App.tsx index fe40524d..0e7c0481 100644 --- a/webapp_frontend/src/components/App.tsx +++ b/webapp_frontend/src/components/App.tsx @@ -46,9 +46,9 @@ function App(props: Props): ReactElement { console.log(props.tokens) console.log(props.user) - if (props.tokens.checkedCookies) { + if (!props.tokens.checkedCookies) { - if ((props.tokens.refreshToken && props.tokens.accessToken)) { + if (!(props.tokens.refreshToken && props.tokens.accessToken)) { return (
diff --git a/webapp_frontend/src/components/basicElements/Footer.tsx b/webapp_frontend/src/components/basicElements/Footer.tsx index 246b1d7b..cf6ebabc 100644 --- a/webapp_frontend/src/components/basicElements/Footer.tsx +++ b/webapp_frontend/src/components/basicElements/Footer.tsx @@ -1,17 +1,19 @@ import React, {ReactElement} from 'react'; -import { Container } from 'react-bootstrap'; +import {Container} from 'react-bootstrap'; +import github from "super-tiny-icons/images/svg/github.svg" export default function Footer(): ReactElement { return ( - - - - - - - -
FooterFooter
+
+ {"github + Made by +
+ Gimleux + Open-Schnick + qvalentin +
+
); } From 9fcb4c644ac2143aeb7c7ea3e75bb2a333b72182 Mon Sep 17 00:00:00 2001 From: Gimleux Date: Fri, 4 Dec 2020 16:41:57 +0100 Subject: [PATCH 16/20] Fixed wrong bootstrap in NavBar --- webapp_frontend/src/components/App.tsx | 4 +-- .../src/components/basicElements/Header.tsx | 30 +++++++++---------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/webapp_frontend/src/components/App.tsx b/webapp_frontend/src/components/App.tsx index 0e7c0481..fe40524d 100644 --- a/webapp_frontend/src/components/App.tsx +++ b/webapp_frontend/src/components/App.tsx @@ -46,9 +46,9 @@ function App(props: Props): ReactElement { console.log(props.tokens) console.log(props.user) - if (!props.tokens.checkedCookies) { + if (props.tokens.checkedCookies) { - if (!(props.tokens.refreshToken && props.tokens.accessToken)) { + if ((props.tokens.refreshToken && props.tokens.accessToken)) { return (
diff --git a/webapp_frontend/src/components/basicElements/Header.tsx b/webapp_frontend/src/components/basicElements/Header.tsx index 3eb7c3c0..79e63b33 100644 --- a/webapp_frontend/src/components/basicElements/Header.tsx +++ b/webapp_frontend/src/components/basicElements/Header.tsx @@ -2,6 +2,7 @@ import React, {ReactElement} from 'react'; import {useHistory} from "react-router-dom"; import {redirect} from "../../background/methods/redirect"; import logo from "../../assets/images/logos/logo.png" +import {Nav, Navbar, NavbarBrand} from "react-bootstrap"; export interface navBarElement_Interface { name: string, @@ -33,36 +34,33 @@ function Header(): ReactElement { const final: ReactElement[] = [] navBarElements.forEach((element) => { final.push( - { + onClick={(event: any) => { redirect(history, element.link, event); if (element.onClick) element.onClick() }} - >{element.text} + >{element.text} ) }) return (
) From 78bdee798d22acea9b6a2dd447abc074b657d40e Mon Sep 17 00:00:00 2001 From: qvalentin Date: Fri, 4 Dec 2020 16:56:29 +0100 Subject: [PATCH 17/20] fixed expansion of navbar on mobile --- webapp_frontend/package-lock.json | 841 ++++++++++++++++++ .../src/components/basicElements/Header.tsx | 4 +- webapp_frontend/src/style/custom.scss | 1 + 3 files changed, 844 insertions(+), 2 deletions(-) diff --git a/webapp_frontend/package-lock.json b/webapp_frontend/package-lock.json index 24858607..33282c45 100644 --- a/webapp_frontend/package-lock.json +++ b/webapp_frontend/package-lock.json @@ -1782,6 +1782,12 @@ "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz", "integrity": "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==" }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, "@storybook/addon-actions": { "version": "6.0.28", "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.0.28.tgz", @@ -6558,6 +6564,15 @@ } } }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -6593,6 +6608,12 @@ } } }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -6613,6 +6634,23 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, + "archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", + "dev": true, + "requires": { + "file-type": "^4.2.0" + }, + "dependencies": { + "file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", + "dev": true + } + } + }, "are-we-there-yet": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", @@ -7740,6 +7778,16 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" }, + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", @@ -8109,6 +8157,34 @@ "isarray": "^1.0.0" } }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -8190,6 +8266,72 @@ "unset-value": "^1.0.0" } }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, "call-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", @@ -8288,6 +8430,18 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, + "caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dev": true, + "requires": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + } + }, "ccount": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", @@ -8582,6 +8736,15 @@ "shallow-clone": "^0.1.2" } }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "clsx": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", @@ -8653,6 +8816,12 @@ "simple-swizzle": "^0.2.2" } }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, "colorette": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", @@ -8760,6 +8929,16 @@ "typedarray": "^0.0.6" } }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "confusing-browser-globals": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", @@ -9310,6 +9489,139 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, + "decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "dev": true, + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + } + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + } + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "dev": true, + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + } + } + }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -9737,11 +10049,60 @@ "dotenv-defaults": "^1.0.2" } }, + "download": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", + "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", + "dev": true, + "requires": { + "archive-type": "^4.0.0", + "caw": "^2.0.1", + "content-disposition": "^0.5.2", + "decompress": "^4.2.0", + "ext-name": "^5.0.0", + "file-type": "^8.1.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^8.3.1", + "make-dir": "^1.2.0", + "p-event": "^2.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -10741,6 +11102,25 @@ } } }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -10844,6 +11224,18 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -10924,6 +11316,15 @@ "bser": "2.1.1" } }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", @@ -10989,6 +11390,12 @@ } } }, + "file-type": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", + "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "dev": true + }, "filelist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz", @@ -10998,6 +11405,23 @@ "minimatch": "^3.0.4" } }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "dev": true + }, + "filenamify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, "filesize": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", @@ -11198,6 +11622,12 @@ "readable-stream": "^2.0.0" } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -11336,6 +11766,15 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, + "get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dev": true, + "requires": { + "npm-conf": "^1.1.0" + } + }, "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", @@ -11550,6 +11989,45 @@ "delegate": "^3.1.2" } }, + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -11634,11 +12112,26 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -12000,6 +12493,12 @@ } } }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -12311,6 +12810,16 @@ "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -12530,6 +13039,12 @@ "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", "dev": true }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", + "dev": true + }, "is-negative-zero": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", @@ -12606,6 +13121,12 @@ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true + }, "is-root": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", @@ -12767,6 +13288,16 @@ "html-escaper": "^2.0.0" } }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, "iterate-iterator": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", @@ -13875,6 +14406,12 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -13959,6 +14496,15 @@ "object.assign": "^4.1.0" } }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -14142,6 +14688,12 @@ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -14223,6 +14775,12 @@ "tslib": "^1.10.0" } }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, "lowlight": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.12.1.tgz", @@ -14546,6 +15104,12 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -15047,6 +15611,24 @@ "sort-keys": "^1.0.0" } }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -15369,6 +15951,12 @@ "integrity": "sha512-p8oHrMeRAKxXDMPI/EBNITj/zTVHKNnAnM59Im+xnoZUlV07FyTg46wom2286jJlXGGfcPFG/ba5NUiCwWNd4w==", "dev": true }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "dev": true + }, "p-each-series": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", @@ -15377,11 +15965,26 @@ "p-reduce": "^1.0.0" } }, + "p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "dev": true, + "requires": { + "p-timeout": "^2.0.1" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -15419,6 +16022,15 @@ "retry": "^0.12.0" } }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -15497,6 +16109,12 @@ "error-ex": "^1.2.0" } }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, "parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", @@ -15586,6 +16204,12 @@ "sha.js": "^2.4.8" } }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -16797,6 +17421,12 @@ "xtend": "^4.0.0" } }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", @@ -18389,6 +19019,15 @@ } } }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -18625,6 +19264,15 @@ } } }, + "seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dev": true, + "requires": { + "commander": "^2.8.1" + } + }, "select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -18989,6 +19637,12 @@ } } }, + "slugify": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.6.tgz", + "integrity": "sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ==", + "dev": true + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -19140,6 +19794,69 @@ } } }, + "sonarqube-scanner": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sonarqube-scanner/-/sonarqube-scanner-2.8.0.tgz", + "integrity": "sha512-zZtJsxY2+LIC1h7mRa7tZ+HjHBvNtCHLpQpVvUrhHsTVLdo+eEfgG0Au/Db9lY6GexnImHgiQJXnS9b21/effg==", + "dev": true, + "requires": { + "download": "^7.1.0", + "extend": "3.0.2", + "fancy-log": "^1.3.3", + "lodash.get": "^4.4.2", + "lodash.uniq": "^4.5.0", + "mkdirp": "^1.0.3", + "progress": "^2.0.3", + "read-pkg": "2.0.0", + "slugify": "^1.4.0" + }, + "dependencies": { + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -19148,6 +19865,15 @@ "is-plain-obj": "^1.0.0" } }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "dev": true, + "requires": { + "sort-keys": "^1.0.0" + } + }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -19586,6 +20312,15 @@ "babel-plugin-transform-object-rest-spread": "^6.26.0" } }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "requires": { + "is-natural-number": "^4.0.1" + } + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -19604,6 +20339,15 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "style-loader": { "version": "0.23.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", @@ -19768,6 +20512,21 @@ "inherits": "2" } }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, "telejson": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/telejson/-/telejson-5.1.0.tgz", @@ -20022,6 +20781,18 @@ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, "timers-browserify": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", @@ -20076,6 +20847,12 @@ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -20148,6 +20925,15 @@ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "trim-trailing-lines": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", @@ -20268,6 +21054,28 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, "uncontrollable": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz", @@ -20560,6 +21368,29 @@ "requires-port": "^1.0.0" } }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + } + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -21694,6 +22525,16 @@ } } }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", diff --git a/webapp_frontend/src/components/basicElements/Header.tsx b/webapp_frontend/src/components/basicElements/Header.tsx index 79e63b33..68468fc3 100644 --- a/webapp_frontend/src/components/basicElements/Header.tsx +++ b/webapp_frontend/src/components/basicElements/Header.tsx @@ -56,7 +56,7 @@ function Header(): ReactElement { -