From a5a80b293113d330b4ae01e1687a613e2e7802c2 Mon Sep 17 00:00:00 2001 From: jimbobding Date: Mon, 12 Jun 2023 10:57:31 +0100 Subject: [PATCH 01/77] added navbar and navbar css --- src/App.tsx | 4 ++- src/components/Nav.tsx | 46 ++++++++++++++++++++++++ src/css/Nav.css | 80 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 src/components/Nav.tsx create mode 100644 src/css/Nav.css diff --git a/src/App.tsx b/src/App.tsx index 7a425cf..72de83e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,12 +1,14 @@ import { Outlet } from "react-router-dom"; import Header from "./components/Header"; +import Nav from "./components/Nav"; +import "./css/Nav.css"; const App = () => { return ( <>
- +
- {" "} + {" "}

What we do

diff --git a/src/css/LandingPage.css b/src/css/LandingPage.css index 3bdf859..e43145e 100644 --- a/src/css/LandingPage.css +++ b/src/css/LandingPage.css @@ -47,7 +47,7 @@ } } -.fa-hippo { +.landing-hippo { font-size: 200px; display: flex; margin: auto; diff --git a/src/css/Loading.css b/src/css/Loading.css new file mode 100644 index 0000000..7e8c2b7 --- /dev/null +++ b/src/css/Loading.css @@ -0,0 +1,73 @@ +.loading-container { + background-color: #a3b18a; + height: 100vh; + display: grid; + justify-content: center; + align-items: center; + text-align: center; + min-height: 100vh; + animation-name: beat; +} + +.loading-row { + display: grid; + height: 70vh; +} + +.loading-hippo { + animation-name: beat; + animation-duration: 2s; + animation-iteration-count: infinite; + background-color: #a3b18a; + font-size: 300px; + display: flex; + margin: auto; + color: pink; + margin-top: 20px; +} + +.loading-header { + text-transform: uppercase; + color: #ffc0cb; + font-size: 60px; + animation-duration: 2s; + animation-iteration-count: infinite; +} + +@keyframes main { + from { + transform: rotate(90deg); + } + to { + transform: rotate(180deg); + } +} +@keyframes beat { + 0% { + transform: scale(1.2); + } + + 50% { + transform: scale(0.8); + } + + 100% { + transform: scale(1.2); + } +} + +.header-row { + display: grid; + grid-template-columns: 1fr 1fr 1fr; +} + +.beer { + display: grid; + animation-name: main; + animation-duration: 2s; + animation-iteration-count: infinite; +} + +.loading-header { + display: grid; +} From 25bf72014aeea3b35444de78f437bb63cc7a7a99 Mon Sep 17 00:00:00 2001 From: jimbobding Date: Wed, 5 Jul 2023 12:17:45 +0100 Subject: [PATCH 47/77] added waypoint map fromap api --- src/components/Map.tsx | 4 +- src/components/WayPoint-map/WaypointMap.tsx | 183 ++++++++++++++++++++ src/components/WaypointMap.tsx | 5 - src/css/Waypoint.css | 4 +- 4 files changed, 186 insertions(+), 10 deletions(-) create mode 100644 src/components/WayPoint-map/WaypointMap.tsx delete mode 100644 src/components/WaypointMap.tsx diff --git a/src/components/Map.tsx b/src/components/Map.tsx index 3e67d64..c21b42d 100644 --- a/src/components/Map.tsx +++ b/src/components/Map.tsx @@ -1,13 +1,11 @@ import { Autocomplete, DirectionsRenderer, - DirectionsService, GoogleMap, } from "@react-google-maps/api"; -import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { useCallback, useMemo, useRef, useState } from "react"; import Distance from "./Distance"; -import Places from "./Places"; type LatLngLiteral = google.maps.LatLngLiteral; type DirectionsResult = google.maps.DirectionsResult; diff --git a/src/components/WayPoint-map/WaypointMap.tsx b/src/components/WayPoint-map/WaypointMap.tsx new file mode 100644 index 0000000..7d9c496 --- /dev/null +++ b/src/components/WayPoint-map/WaypointMap.tsx @@ -0,0 +1,183 @@ +import { GoogleMap } from "@react-google-maps/api"; +import { useCallback, useEffect, useMemo, useRef } from "react"; + +const WaypointMap = () => { + function initMap(): void { + const directionsService = new google.maps.DirectionsService(); + const directionsRenderer = new google.maps.DirectionsRenderer(); + const map = new google.maps.Map( + document.getElementById("map") as HTMLElement, + { + zoom: 6, + center: { lat: 53.483959, lng: -2.244644 }, + } + ); + + directionsRenderer.setMap(map); + + (document.getElementById("submit") as HTMLElement).addEventListener( + "click", + () => { + calculateAndDisplayRoute(directionsService, directionsRenderer); + } + ); + } + + function calculateAndDisplayRoute( + directionsService: google.maps.DirectionsService, + directionsRenderer: google.maps.DirectionsRenderer + ) { + const waypts: google.maps.DirectionsWaypoint[] = []; + const checkboxArray = document.getElementById( + "waypoints" + ) as HTMLSelectElement; + + for (let i = 0; i < checkboxArray.length; i++) { + if (checkboxArray.options[i].selected) { + waypts.push({ + location: (checkboxArray[i] as HTMLOptionElement).value, + stopover: true, + }); + } + } + + directionsService + .route({ + origin: (document.getElementById("start") as HTMLInputElement).value, + destination: (document.getElementById("end") as HTMLInputElement).value, + waypoints: waypts, + optimizeWaypoints: true, + travelMode: google.maps.TravelMode.WALKING, + }) + .then((response) => { + directionsRenderer.setDirections(response); + console.log(response); + + const route = response.routes[0]; + const summaryPanel = document.getElementById( + "directions-panel" + ) as HTMLElement; + + summaryPanel.innerHTML = ""; + + // For each route, display summary information. + for (let i = 0; i < route.legs.length; i++) { + const routeSegment = i + 1; + + summaryPanel.innerHTML += + "Route Segment: " + routeSegment + "
"; + summaryPanel.innerHTML += route.legs[i].start_address + " to "; + summaryPanel.innerHTML += route.legs[i].end_address + "
"; + summaryPanel.innerHTML += route.legs[i].distance?.text + "

"; + } + }) + .catch((e) => window.alert("Directions request failed due to ")); + } + + useEffect(() => { + initMap(); + }, []); + + return ( + <> +
+
+ +
+ +
+
+
+
+ + ); +}; + +export default WaypointMap; diff --git a/src/components/WaypointMap.tsx b/src/components/WaypointMap.tsx deleted file mode 100644 index fabf0de..0000000 --- a/src/components/WaypointMap.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const WaypointMap = () => { - return

Waypoint Map

; -}; - -export default WaypointMap; diff --git a/src/css/Waypoint.css b/src/css/Waypoint.css index 5e08111..02647a0 100644 --- a/src/css/Waypoint.css +++ b/src/css/Waypoint.css @@ -86,9 +86,9 @@ body { height: auto; } -/* #map { +#map { flex: auto; -} */ +} #sidebar { flex: 0 1 auto; From 8de800ede66a4dea50825dfe55d1d304589b9908 Mon Sep 17 00:00:00 2001 From: jimbobding Date: Wed, 5 Jul 2023 12:44:08 +0100 Subject: [PATCH 48/77] added nav/router links for waypoint map --- src/components/LandingPage.tsx | 2 +- src/components/Nav.tsx | 2 +- .../WayPoint-map/WaypointFormMap.tsx | 13 +++++++++++ src/components/WayPoint-map/WaypointMap.tsx | 22 +++++++++++++++++-- src/router.tsx | 9 +++++--- 5 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 src/components/WayPoint-map/WaypointFormMap.tsx diff --git a/src/components/LandingPage.tsx b/src/components/LandingPage.tsx index 6f9c273..8c91bae 100644 --- a/src/components/LandingPage.tsx +++ b/src/components/LandingPage.tsx @@ -63,7 +63,7 @@ const LandingPage = () => { />
- +

Way-point map


diff --git a/src/components/Nav.tsx b/src/components/Nav.tsx index b78409c..158acd4 100644 --- a/src/components/Nav.tsx +++ b/src/components/Nav.tsx @@ -40,7 +40,7 @@ const Nav = () => { Geo Map - + Waypoint Map diff --git a/src/components/WayPoint-map/WaypointFormMap.tsx b/src/components/WayPoint-map/WaypointFormMap.tsx new file mode 100644 index 0000000..dc688b1 --- /dev/null +++ b/src/components/WayPoint-map/WaypointFormMap.tsx @@ -0,0 +1,13 @@ +import GeoForm from "../GeoLocation-map/GeoForm"; +import WaypointMap from "./WaypointMap"; + +const GeoLocationFormMap = () => { + return ( + <> + + + + ); +}; + +export default GeoLocationFormMap; diff --git a/src/components/WayPoint-map/WaypointMap.tsx b/src/components/WayPoint-map/WaypointMap.tsx index 7d9c496..773bf40 100644 --- a/src/components/WayPoint-map/WaypointMap.tsx +++ b/src/components/WayPoint-map/WaypointMap.tsx @@ -1,14 +1,24 @@ import { GoogleMap } from "@react-google-maps/api"; import { useCallback, useEffect, useMemo, useRef } from "react"; +type MapOptions = google.maps.MapOptions; + const WaypointMap = () => { + const options = useMemo( + () => ({ + mapId: "55ec9d32771d5e8c", + disableDefaultUI: true, + clickableIcons: false, + }), + [] + ); function initMap(): void { const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer(); const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { - zoom: 6, + zoom: 14, center: { lat: 53.483959, lng: -2.244644 }, } ); @@ -174,7 +184,15 @@ const WaypointMap = () => {
-
+ + {/* Map components */} + ); diff --git a/src/router.tsx b/src/router.tsx index a5fdd7d..123c1ae 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -15,7 +15,9 @@ const GeoLocationFormMap = React.lazy( () => import("./components/GeoLocation-map/GeoLocationFormMap") ); -const WaypointMap = React.lazy(() => import("./components/WaypointMap")); +const WaypointFormMap = React.lazy( + () => import("./components/WayPoint-map/WaypointFormMap") +); export const enum PageRoutes { LandingPage = "/", @@ -26,6 +28,7 @@ export const enum PageRoutes { GeoLocationFormMap = "/GeoLocationFormMap", WaypointMap = "/waypointMap", MapWithDirections = "/mapwithdirections", + WaypointFormMap = "WaypointFormMap", } const router = createBrowserRouter( @@ -46,8 +49,8 @@ const router = createBrowserRouter( /> } />} + path={PageRoutes.WaypointFormMap} + element={} />} /> ) From c51ba1b45d949ccfd15cfdd8af5b2605c22f2b89 Mon Sep 17 00:00:00 2001 From: jimbobding Date: Thu, 6 Jul 2023 14:42:05 +0100 Subject: [PATCH 49/77] put the state form for user into about page --- src/App.tsx | 3 +- src/components/About.tsx | 175 +++++++++++++++++- src/components/Distance.tsx | 2 +- src/components/FormMap.tsx | 5 +- .../GeoLocation-map/GeoInformation.tsx | 14 +- src/components/LandingPage.tsx | 10 +- src/components/Nav.tsx | 34 ++-- src/components/WayPoint-map/WaypointMap.tsx | 2 +- src/css/About.css | 69 +++++++ src/css/CalorieMap.css | 7 +- src/css/Form.css | 23 ++- src/css/Loading.css | 7 +- 12 files changed, 309 insertions(+), 42 deletions(-) create mode 100644 src/css/About.css diff --git a/src/App.tsx b/src/App.tsx index 244c8dc..1aebae2 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -2,9 +2,10 @@ import { Outlet } from "react-router-dom"; //Components import Footer from "./components/Footer"; -import Loading from "./components/GeoLocation-map/Loading"; +// import Loading from "./components/GeoLocation-map/Loading"; import Nav from "./components/Nav"; //CSS +import "./css/About.css"; import "./css/CalorieMap.css"; import "./css/Footer.css"; import "./css/Form.css"; diff --git a/src/components/About.tsx b/src/components/About.tsx index 9e1081b..4458ea0 100644 --- a/src/components/About.tsx +++ b/src/components/About.tsx @@ -1,5 +1,178 @@ +import { + faClock, + faHippo, + faPersonWalking, + faScaleBalanced, + faUser, +} from "@fortawesome/free-solid-svg-icons"; +// import { parse, icon } from '@fortawesome/fontawesome-svg-core'; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { FormEventHandler, useState } from "react"; + +import { useAppDispatch } from "../store"; +import { + setUserCalsBun, + setUserDropdown, + setUserName, + setUserTime, + setUserWeight, +} from "../store/form/formSlice"; + const About = () => { - return

About

; + const [weight, setWeight] = useState(""); + const [time, setTime] = useState(""); + const [dropdown, setDropdown] = useState("fast"); + const [calsBun, setCalsBun] = useState(""); + const [name, setName] = useState(""); + const dispatch = useAppDispatch(); + + //Function to dispatch the form input data to the redux store + const handleSubmit: FormEventHandler = (e) => { + e.preventDefault(); + dispatch(setUserName(name)); + dispatch(setUserWeight(weight)); + dispatch(setUserTime(time)); + dispatch(setUserDropdown(dropdown)); + }; + + const handleGetSpeed = ( + event: React.MouseEvent + ) => { + event.preventDefault(); + const weightValue = parseFloat(weight); + const timeValue = parseFloat(time); + const dropdownValue = parseFloat(dropdown); + + // Check if the parsed values are valid numbers + if (isNaN(weightValue) || isNaN(timeValue) || isNaN(dropdownValue)) { + setCalsBun("Invalid input"); + } else { + const calculatedCalsBun = + ((dropdownValue * 3.5 * weightValue) / 200) * timeValue; + setCalsBun(Math.ceil(calculatedCalsBun)); + } + }; + return ( + <> +
+
+ {" "} +

Bar Hop UK

+

+ Hey hello and welcome. Bar Hop UK is a unique way of combining craft + derinking with a little bit of mindfullness to health. With our maps + we intergrate your how you move with your journey so you can visit + your favourite craft venue with knowledge o what pesky calories you + can loosse oin route. Just simply fill out the short form below and + then visit on our maps. +

+
+
+ + +
+
+
+ {" "} + { + setName(e.target.value); + dispatch(setUserName(e.target.value)); + }} + placeholder="Name..." + type="text" + name="name" + required + /> +
+
+ {" "} + {" "} + { + setWeight(e.target.value); + dispatch(setUserWeight(e.target.value)); + }} + placeholder="Weight in kg's" + type="text" + name="weight" + required + /> +
+
+ {" "} + + { + setTime(e.target.value); + dispatch(setUserTime(e.target.value)); + }} + placeholder="Time" + type="text" + name="time" + required + /> +
+
+ {" "} + {" "} + +
+
+ +
+
+ +
+
+
+
+

+ {name} +

+

+ You burn {calsBun} calories on a {time} minute walk +

+
+
+
+
+
+ + +
+ {" "} +
+ + ); }; export default About; diff --git a/src/components/Distance.tsx b/src/components/Distance.tsx index 00b7b98..35e0d7a 100644 --- a/src/components/Distance.tsx +++ b/src/components/Distance.tsx @@ -125,7 +125,7 @@ const Distance: React.FC = ({ leg }) => { Duration in minutes: {parsedMins}
- Duration in days: {leg.duration?.text} + {/* Duration in days: {leg.duration?.text} */}

Directions

diff --git a/src/components/FormMap.tsx b/src/components/FormMap.tsx index e63602e..7b94be7 100644 --- a/src/components/FormMap.tsx +++ b/src/components/FormMap.tsx @@ -1,10 +1,11 @@ -import Form from "./Form"; +// import Form from "./Form"; +import GeoForm from "./GeoLocation-map/GeoForm"; import Map from "./Map"; const FormMap = () => { return ( <> -
+ ); diff --git a/src/components/GeoLocation-map/GeoInformation.tsx b/src/components/GeoLocation-map/GeoInformation.tsx index bffd948..38bccbf 100644 --- a/src/components/GeoLocation-map/GeoInformation.tsx +++ b/src/components/GeoLocation-map/GeoInformation.tsx @@ -49,6 +49,10 @@ const GeoInformation: React.FC = ({ leg }) => { if (leg.duration?.value === undefined) return "no duration"; else return (leg.duration?.value / 60).toString(); }; + const hours = () => { + if (leg.duration?.value === undefined) return "no duration"; + else return (leg.duration?.value / 60 / 60).toString(); + }; const miles = () => { if (leg.distance?.value === undefined) return "no distance"; else return Math.floor((leg.distance?.value / 1000) * 0.621371); @@ -56,6 +60,8 @@ const GeoInformation: React.FC = ({ leg }) => { const parsedMins = Math.floor(parseFloat(mins() || "0")); + // const parsedHours = Math.floor(parseFloat(hours() || "0")); + const calsLost = Math.floor( ((parsedDropdown * 3.5 * parsedWeight) / 200) * parsedMins ); @@ -87,8 +93,8 @@ const GeoInformation: React.FC = ({ leg }) => {

{leg.duration?.text}

- you will cover {leg.distance?.text} or{" "} - {miles()} Miles{" "} + you will cover {leg.distance?.text} + {/* {miles()} Miles{" "} */} {formattedCalsLost === "" @@ -112,9 +118,7 @@ const GeoInformation: React.FC = ({ leg }) => {
Duration in minutes: {parsedMins}
-
- Duration in days: {leg.duration?.text} -
+
{/* Duration in hours: {parsedHours} */}

Directions


diff --git a/src/components/LandingPage.tsx b/src/components/LandingPage.tsx index 8c91bae..255ab17 100644 --- a/src/components/LandingPage.tsx +++ b/src/components/LandingPage.tsx @@ -25,10 +25,10 @@ const LandingPage = () => {

What we do

- Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem - est eos praesentium, asperiores cumque molestias voluptas rem - quibusdam numquam temporibus hic delectus, ratione, error suscipit - architecto! Corporis ratione voluptate laudantium! + Lorem ipsum dolor sit amet consectetur adipisicing elit. Quas + ratione consequatur officia quasi dolore fugiat minus nisi quisquam! + Exercitationem, suscipit. Voluptates excepturi totam quas debitis, + quae nostrum? Modi, similique exercitationem.

@@ -41,7 +41,7 @@ const LandingPage = () => {
- + {" "}

Calorie Map

diff --git a/src/components/Nav.tsx b/src/components/Nav.tsx index 158acd4..f6eed7f 100644 --- a/src/components/Nav.tsx +++ b/src/components/Nav.tsx @@ -22,27 +22,31 @@ const Nav = () => { setToggleMenu(!toggleMenu); }; + const closeNav = () => { + setToggleMenu(false); + }; + return ( <>
Date: Thu, 6 Jul 2023 15:58:59 +0100 Subject: [PATCH 50/77] updated packages --- package-lock.json | 1891 ++++++++++++++++++++++++++++++++++++++------- package.json | 5 +- 2 files changed, 1624 insertions(+), 272 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5f3fad0..edec72a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@react-google-maps/api": "^2.18.1", "@reduxjs/toolkit": "^1.9.5", "axios": "^1.4.0", + "lint": "^0.8.19", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -44,12 +45,12 @@ "eslint-config-prettier": "^8.8.0", "eslint-config-react-app": "^7.0.1", "eslint-plugin-react": "^7.32.2", - "husky": "^8.0.0", + "husky": "^8.0.3", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "jest-watch-typeahead": "^2.2.2", "jsdom": "^22.0.0", - "lint-staged": "^13.2.2", + "lint-staged": "^13.2.3", "prettier": "^2.8.8", "typescript": "^4.9.3", "vite": "^4.2.0", @@ -3924,6 +3925,19 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -5138,7 +5152,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5205,8 +5218,7 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/aria-query": { "version": "5.1.3", @@ -5307,6 +5319,22 @@ "get-intrinsic": "^1.1.3" } }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -5349,6 +5377,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, "node_modules/axe-core": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", @@ -5577,8 +5618,15 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } }, "node_modules/blueimp-md5": { "version": "2.19.0", @@ -5591,7 +5639,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5718,7 +5765,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, "engines": { "node": ">=6" } @@ -5743,6 +5789,11 @@ } ] }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, "node_modules/chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -5787,6 +5838,11 @@ "node": ">=10" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -5839,6 +5895,28 @@ "node": ">=8" } }, + "node_modules/cli-spinners": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", + "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, "node_modules/cli-truncate": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", @@ -5855,6 +5933,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -5895,6 +5978,14 @@ "node": ">=8" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -5935,6 +6026,14 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -5958,8 +6057,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/concordance": { "version": "5.0.4", @@ -6006,6 +6104,11 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -6071,6 +6174,17 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/data-urls": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", @@ -6102,7 +6216,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -6115,6 +6228,14 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decimal.js": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", @@ -6184,6 +6305,17 @@ "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-properties": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", @@ -6283,6 +6415,15 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.437", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.437.tgz", @@ -7052,7 +7193,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -7157,6 +7297,54 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7200,8 +7388,7 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -7227,6 +7414,25 @@ "bser": "2.1.1" } }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -7327,6 +7533,14 @@ "node": ">=8.0.0" } }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -7340,11 +7554,18 @@ "node": ">= 6" } }, + "node_modules/fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", @@ -7406,7 +7627,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -7473,11 +7693,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7579,6 +7806,27 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -7705,6 +7953,20 @@ "node": ">= 6" } }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -7829,7 +8091,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7838,107 +8099,317 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" }, "engines": { - "node": ">= 0.4" + "node": ">=6.0.0" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "engines": { + "node": ">=4" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "color-convert": "^1.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, + "node_modules/inquirer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { - "has-bigints": "^1.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, + "node_modules/inquirer/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "restore-cursor": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", + "node_modules/inquirer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/inquirer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", "url": "https://www.patreon.com/feross" }, { @@ -7989,6 +8460,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -8189,6 +8668,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, "node_modules/is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -8235,6 +8719,11 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -9929,7 +10418,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -9937,6 +10425,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, "node_modules/jsdom": { "version": "22.1.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", @@ -9997,11 +10490,15 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -10009,6 +10506,11 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -10027,6 +10529,20 @@ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", @@ -10106,10 +10622,35 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/lint": { + "version": "0.8.19", + "resolved": "https://registry.npmjs.org/lint/-/lint-0.8.19.tgz", + "integrity": "sha512-i9iqBX/OO2+zSE7hEDXJ0rdLMxvBluK2T/xbCKAhEgyHE1q6kjp1HJGOVagkVB0f0UZ+FnW/wM3smsihQN0tFw==", + "hasInstallScript": true, + "dependencies": { + "chalk": "^2.4.2", + "cli-table": "^0.3.1", + "commander": "^2.17.1", + "inquirer": "^6.1.0", + "js-yaml": ">=3.13.1", + "loadash": "^1.0.0", + "moment": "^2.22.2", + "ora": "^3.0.0", + "prettier": "^1.15.3", + "replace-in-file": "^3.4.2", + "request": "^2.87.0", + "simple-git": "^3.15.0", + "write-yaml": "^1.0.0" + }, + "bin": { + "lint": "index.js", + "omnilint": "index.js" + } + }, "node_modules/lint-staged": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.2.tgz", - "integrity": "sha512-71gSwXKy649VrSU09s10uAT0rWCcY3aewhMaHyl2N84oBk4Xs9HgxvUp3AYu+bNsK4NrOYYxvSgg7FyGJ+jGcA==", + "version": "13.2.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.3.tgz", + "integrity": "sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==", "dev": true, "dependencies": { "chalk": "5.2.0", @@ -10267,42 +10808,122 @@ "node": ">= 14" } }, - "node_modules/listr2": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", - "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", - "dev": true, + "node_modules/lint/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "node": ">=4" } }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, + "node_modules/lint/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lint/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/lint/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/lint/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/lint/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/lint/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/lint/node_modules/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lint/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr2": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", + "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, "engines": { "node": ">=8" }, @@ -10353,6 +10974,12 @@ "node": ">=8" } }, + "node_modules/loadash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/loadash/-/loadash-1.0.0.tgz", + "integrity": "sha512-xlX5HBsXB3KG0FJbJJG/3kYWCfsCyCSus3T+uHVu6QL6YxAdggmm3QeyLgn54N2yi5/UE6xxL5ZWJAAiHzHYEg==", + "deprecated": "Package is unsupport. Please use the lodash package instead." + }, "node_modules/local-pkg": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", @@ -10397,6 +11024,81 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/log-symbols/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/log-update": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", @@ -10641,7 +11343,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10653,11 +11354,21 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mlly": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.0.tgz", @@ -10671,11 +11382,23 @@ "ufo": "^1.1.2" } }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==" }, "node_modules/nanoid": { "version": "3.3.6", @@ -10746,6 +11469,14 @@ "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==", "dev": true }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -10871,7 +11602,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -10908,6 +11638,155 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/ora/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -10957,7 +11836,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "engines": { "node": ">=6" } @@ -11017,7 +11895,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11063,6 +11940,11 @@ "node": "*" } }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -11292,14 +12174,12 @@ "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, "engines": { "node": ">=6" } @@ -11320,6 +12200,14 @@ } ] }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -11430,170 +12318,462 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, - "node_modules/react-router": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.13.0.tgz", - "integrity": "sha512-Si6KnfEnJw7gUQkNa70dlpI1bul46FuSxX5t5WwlUBxE25DAz2BjVkwaK8Y2s242bQrZPXCpmwLPtIO5pv4tXg==", + "node_modules/react-router": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.13.0.tgz", + "integrity": "sha512-Si6KnfEnJw7gUQkNa70dlpI1bul46FuSxX5t5WwlUBxE25DAz2BjVkwaK8Y2s242bQrZPXCpmwLPtIO5pv4tXg==", + "dependencies": { + "@remix-run/router": "1.6.3" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.13.0.tgz", + "integrity": "sha512-6Nqoqd7fgwxxVGdbiMHTpDHCYPq62d7Wk1Of7B82vH7ZPwwsRaIa22zRZKPPg413R5REVNiyuQPKDG1bubcOFA==", + "dependencies": { + "@remix-run/router": "1.6.3", + "react-router": "6.13.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-spinners": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/react-spinners/-/react-spinners-0.13.8.tgz", + "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==", + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/redux-thunk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", + "peerDependencies": { + "redux": "^4" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/replace-in-file": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-3.4.4.tgz", + "integrity": "sha512-ehq0dFsxSpfPiPLBU5kli38Ud8bZL0CQKG8WQVbvhmyilXaMJ8y4LtDZs/K3MD8C0+rHbsfW8c9r2bUEy0B/6Q==", + "dependencies": { + "chalk": "^2.4.2", + "glob": "^7.1.3", + "yargs": "^13.2.2" + }, + "bin": { + "replace-in-file": "bin/cli.js" + } + }, + "node_modules/replace-in-file/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/replace-in-file/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/replace-in-file/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/replace-in-file/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/replace-in-file/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/replace-in-file/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/replace-in-file/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/replace-in-file/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/replace-in-file/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/replace-in-file/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/replace-in-file/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/replace-in-file/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dependencies": { - "@remix-run/router": "1.6.3" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": ">=16.8" + "node": ">=6" } }, - "node_modules/react-router-dom": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.13.0.tgz", - "integrity": "sha512-6Nqoqd7fgwxxVGdbiMHTpDHCYPq62d7Wk1Of7B82vH7ZPwwsRaIa22zRZKPPg413R5REVNiyuQPKDG1bubcOFA==", + "node_modules/replace-in-file/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { - "@remix-run/router": "1.6.3", - "react-router": "6.13.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=14" + "node": ">=6" }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" - } - }, - "node_modules/react-spinners": { - "version": "0.13.8", - "resolved": "https://registry.npmjs.org/react-spinners/-/react-spinners-0.13.8.tgz", - "integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==", - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/redent": { + "node_modules/replace-in-file/node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", - "dependencies": { - "@babel/runtime": "^7.9.2" + "node_modules/replace-in-file/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" } }, - "node_modules/redux-thunk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", - "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", - "peerDependencies": { - "redux": "^4" + "node_modules/replace-in-file/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, + "node_modules/replace-in-file/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dependencies": { - "regenerate": "^1.4.2" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", - "dev": true, + "node_modules/replace-in-file/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { - "@babel/runtime": "^7.8.4" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dev": true, + "node_modules/replace-in-file/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, + "node_modules/replace-in-file/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/replace-in-file/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "cliui": "^5.0.0", + "find-up": "^3.0.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": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/replace-in-file/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dependencies": { - "jsesc": "~0.5.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" }, - "bin": { - "regjsparser": "bin/parser" + "engines": { + "node": ">= 0.12" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -11727,6 +12907,14 @@ "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", "dev": true }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -11759,6 +12947,25 @@ "tslib": "^2.1.0" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/safe-regex-test": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", @@ -11776,8 +12983,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/saxes": { "version": "6.0.0", @@ -11832,6 +13038,11 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -11877,8 +13088,21 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-git": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.19.1.tgz", + "integrity": "sha512-Ck+rcjVaE1HotraRAS8u/+xgTvToTuoMkT9/l9lvuP5jftwnYUp6DwuJzsKErHgfyRk8IB8pqGHWEbM3tLgV1w==", + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/steveukx/git-js?sponsor=1" + } }, "node_modules/sisteransi": { "version": "1.0.5", @@ -11963,8 +13187,31 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/stack-utils": { "version": "2.0.6", @@ -12276,8 +13523,7 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/time-zone": { "version": "1.0.0", @@ -12316,6 +13562,17 @@ "node": ">=14.0.0" } }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -12404,9 +13661,9 @@ } }, "node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", "dev": true }, "node_modules/tsutils": { @@ -12430,6 +13687,22 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -12595,7 +13868,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -12626,6 +13898,15 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/v8-to-istanbul": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", @@ -12640,6 +13921,19 @@ "node": ">=10.12.0" } }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "node_modules/vite": { "version": "4.3.9", "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", @@ -12842,6 +14136,14 @@ "makeerror": "1.0.12" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -12941,6 +14243,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, "node_modules/which-typed-array": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", @@ -13036,8 +14343,19 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/write/-/write-0.3.3.tgz", + "integrity": "sha512-e63bsTAFxFUU8OGClhjhhf2R72Njpq6DDTOFFBxDkfZFwoRRKZUx9rll6g/TvY0UcCdKE2OroYZje0v9ROzmfA==", + "dependencies": { + "fs-exists-sync": "^0.1.0", + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/write-file-atomic": { "version": "4.0.2", @@ -13052,6 +14370,39 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/write-yaml": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/write-yaml/-/write-yaml-1.0.0.tgz", + "integrity": "sha512-QFB0QwNlUTSsICNb1HV+822MvFpTC1gtKcOfm0B9oqz4qOQXbRuMSxWPWryTEFBEZDWbI5zXabXArvShXTdLiA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "js-yaml": "^3.8.3", + "write": "^0.3.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/write-yaml/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/write-yaml/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/ws": { "version": "8.13.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", diff --git a/package.json b/package.json index 787b584..3aade60 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@react-google-maps/api": "^2.18.1", "@reduxjs/toolkit": "^1.9.5", "axios": "^1.4.0", + "lint": "^0.8.19", "lodash": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -51,12 +52,12 @@ "eslint-config-prettier": "^8.8.0", "eslint-config-react-app": "^7.0.1", "eslint-plugin-react": "^7.32.2", - "husky": "^8.0.0", + "husky": "^8.0.3", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "jest-watch-typeahead": "^2.2.2", "jsdom": "^22.0.0", - "lint-staged": "^13.2.2", + "lint-staged": "^13.2.3", "prettier": "^2.8.8", "typescript": "^4.9.3", "vite": "^4.2.0", From 305c8e810b8f6aa856adc11fd012b5c373f93d1f Mon Sep 17 00:00:00 2001 From: jimbobding Date: Fri, 7 Jul 2023 09:55:15 +0100 Subject: [PATCH 51/77] added waypoint information and passed props from waypoint map --- .../GeoLocation-map/GeoInformation.tsx | 1 + .../GeoLocation-map/GeoLocationMap.tsx | 2 +- .../WayPoint-map/WaypointInformation.tsx | 128 +++++++++++++++++ src/components/WayPoint-map/WaypointMap.tsx | 129 +++++++++++------- 4 files changed, 209 insertions(+), 51 deletions(-) create mode 100644 src/components/WayPoint-map/WaypointInformation.tsx diff --git a/src/components/GeoLocation-map/GeoInformation.tsx b/src/components/GeoLocation-map/GeoInformation.tsx index bffd948..b82b0db 100644 --- a/src/components/GeoLocation-map/GeoInformation.tsx +++ b/src/components/GeoLocation-map/GeoInformation.tsx @@ -9,6 +9,7 @@ import { type GeoInformationProps = { leg: google.maps.DirectionsLeg; + // route: google.maps.DirectionsRoute | undefined; }; const GeoInformation: React.FC = ({ leg }) => { diff --git a/src/components/GeoLocation-map/GeoLocationMap.tsx b/src/components/GeoLocation-map/GeoLocationMap.tsx index c6dd61f..9ba82ad 100644 --- a/src/components/GeoLocation-map/GeoLocationMap.tsx +++ b/src/components/GeoLocation-map/GeoLocationMap.tsx @@ -185,7 +185,7 @@ const GeoLocationMap = () => { setStepDisplay(new google.maps.InfoWindow()); const request = { location: map.getCenter(), - radius: 1000, + radius: 5000, query: "brewery", fields: [ "name", diff --git a/src/components/WayPoint-map/WaypointInformation.tsx b/src/components/WayPoint-map/WaypointInformation.tsx new file mode 100644 index 0000000..3b29b77 --- /dev/null +++ b/src/components/WayPoint-map/WaypointInformation.tsx @@ -0,0 +1,128 @@ +import { useEffect, useState } from "react"; + +import { useAppSelector } from "../../store"; +import { + selectUserDropdown, + selectUserName, + selectUserWeight, +} from "../../store/form/formSelectors"; + +type WaypointInformationProps = { + legs: google.maps.DirectionsLeg[] | undefined; +}; +const WaypointInformation: React.FC = ({ leg }) => { + const userName = useAppSelector(selectUserName); + const userWeight = useAppSelector(selectUserWeight); + const userDropdown = useAppSelector(selectUserDropdown); + const [isOpen, setIsOpen] = useState(false); + const [formattedInstructions, setFormattedInstructions] = useState( + [] + ); + function toggle() { + setIsOpen((isOpen) => !isOpen); + } + //Will change when [leg] is changed + //Will change when [leg] is changed + useEffect(() => { + //Will only execute if leg and leg.steps exist + if (leg && leg.steps) { + //Maps over each instruction in the leg + const instructions = leg.steps.map( + (step: { instructions: any }) => step.instructions + ); + //Instructions array is mapped over and uses regEx to replpace the html tags + // with empty strings + const formatted = instructions.map((instruction: string) => + instruction.replace(/<[^>]+>/g, "") + ); + setFormattedInstructions(formatted); + } + }, [leg]); + const parsedDropdown = parseFloat(userDropdown); + const parsedWeight = parseFloat(userWeight); + const mins = () => { + if (leg.duration?.value === undefined) return "no duration"; + else return (leg.duration?.value / 60).toString(); + }; + const miles = () => { + if (leg.distance?.value === undefined) return "no distance"; + else return Math.floor((leg.distance?.value / 1000) * 0.621371); + }; + const parsedMins = Math.floor(parseFloat(mins() || "0")); + const calsLost = Math.floor( + ((parsedDropdown * 3.5 * parsedWeight) / 200) * parsedMins + ); + const formattedCalsLost = Number.isNaN(calsLost) ? "" : calsLost; + return ( + <> +
+

Distance Information

+
+
+ Start Address: {leg.start_address} +
+
+ End Address: {leg.end_address} +
+
+
+
+

Journey Information

+
+

+ {userName === undefined + ? "" + : `${userName} your journey will take `} +

+

+ {leg.duration?.text} +

+ you will cover {leg.distance?.text} or{" "} + {miles()} Miles{" "} + + + {formattedCalsLost === "" + ? "" + : `you will lose ${formattedCalsLost} calories`} + + +
+ Distance: {leg.distance?.text} +
+
+ Duration: {leg.duration?.text} +
+
+
+

Time

+
+ Duration in Seconds: {leg.duration?.value} +
+
+
+ Duration in minutes: {parsedMins} +
+
+ Duration in days: {leg.duration?.text} +
+
+

Directions

+
+ + {isOpen && ( +
+ {" "} + {formattedInstructions.map((instruction, index) => ( +

{instruction}

+ ))} +
+ )} +
+
+
+ + ); +}; +export default WaypointInformation; diff --git a/src/components/WayPoint-map/WaypointMap.tsx b/src/components/WayPoint-map/WaypointMap.tsx index 773bf40..93f32a6 100644 --- a/src/components/WayPoint-map/WaypointMap.tsx +++ b/src/components/WayPoint-map/WaypointMap.tsx @@ -1,9 +1,16 @@ import { GoogleMap } from "@react-google-maps/api"; import { useCallback, useEffect, useMemo, useRef } from "react"; +import WaypointInformation from "./WaypointInformation"; +import GeoInformation from "./WaypointInformation"; + type MapOptions = google.maps.MapOptions; -const WaypointMap = () => { +interface WaypointMapProps { + legs: google.maps.DirectionsLeg[] | undefined; +} + +const WaypointMap = ({ legs }: WaypointMapProps) => { const options = useMemo( () => ({ mapId: "55ec9d32771d5e8c", @@ -12,6 +19,7 @@ const WaypointMap = () => { }), [] ); + function initMap(): void { const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer(); @@ -31,63 +39,83 @@ const WaypointMap = () => { calculateAndDisplayRoute(directionsService, directionsRenderer); } ); - } - function calculateAndDisplayRoute( - directionsService: google.maps.DirectionsService, - directionsRenderer: google.maps.DirectionsRenderer - ) { - const waypts: google.maps.DirectionsWaypoint[] = []; - const checkboxArray = document.getElementById( - "waypoints" - ) as HTMLSelectElement; - - for (let i = 0; i < checkboxArray.length; i++) { - if (checkboxArray.options[i].selected) { - waypts.push({ - location: (checkboxArray[i] as HTMLOptionElement).value, - stopover: true, - }); - } - } + function calculateAndDisplayRoute( + directionsService: google.maps.DirectionsService, + directionsRenderer: google.maps.DirectionsRenderer + ) { + const waypts: google.maps.DirectionsWaypoint[] = []; + const checkboxArray = document.getElementById( + "waypoints" + ) as HTMLSelectElement; - directionsService - .route({ - origin: (document.getElementById("start") as HTMLInputElement).value, - destination: (document.getElementById("end") as HTMLInputElement).value, - waypoints: waypts, - optimizeWaypoints: true, - travelMode: google.maps.TravelMode.WALKING, - }) - .then((response) => { - directionsRenderer.setDirections(response); - console.log(response); - - const route = response.routes[0]; - const summaryPanel = document.getElementById( - "directions-panel" - ) as HTMLElement; - - summaryPanel.innerHTML = ""; - - // For each route, display summary information. - for (let i = 0; i < route.legs.length; i++) { - const routeSegment = i + 1; - - summaryPanel.innerHTML += - "Route Segment: " + routeSegment + "
"; - summaryPanel.innerHTML += route.legs[i].start_address + " to "; - summaryPanel.innerHTML += route.legs[i].end_address + "
"; - summaryPanel.innerHTML += route.legs[i].distance?.text + "

"; + for (let i = 0; i < checkboxArray.length; i++) { + if (checkboxArray.options[i].selected) { + waypts.push({ + location: (checkboxArray[i] as HTMLOptionElement).value, + stopover: true, + }); } - }) - .catch((e) => window.alert("Directions request failed due to ")); + } + + directionsService + .route({ + origin: (document.getElementById("start") as HTMLInputElement).value, + destination: (document.getElementById("end") as HTMLInputElement) + .value, + waypoints: waypts, + optimizeWaypoints: true, + travelMode: google.maps.TravelMode.WALKING, + }) + .then((response) => { + directionsRenderer.setDirections(response); + console.log(response); + + const route = response.routes[0]; + const summaryPanel = document.getElementById( + "directions-panel" + ) as HTMLElement; + + summaryPanel.innerHTML = ""; + + // For each route, display summary information. + if (route && route.legs) { + for (let i = 0; i < route.legs.length; i++) { + const routeSegment = i + 1; + console.log("i", i); + summaryPanel.innerHTML += + "Route Segment: " + routeSegment + "
"; + summaryPanel.innerHTML += route.legs[i].start_address + " to "; + summaryPanel.innerHTML += route.legs[i].end_address + "
"; + + const leg = route.legs[i]; + const distanceText = leg.distance?.text || "Unknown distance"; + console.log("distance", distanceText); + summaryPanel.innerHTML += distanceText + "

"; + + // const leg1 = route.legs[i]; + // if (leg1 !== undefined) + // for (let j = 0; j < leg1.steps.length; j++) { + // const step = leg1.steps[j]; + // summaryPanel.innerHTML += step.distance?.text + "
"; + + // // console.log("leg staps", leg.steps[j]); + // } + + // summaryPanel.innerHTML += "
"; + } + } + }) + .catch((e) => window.alert("Directions request failed due to " + e)); + } } useEffect(() => { initMap(); }, []); + // Rest of the code... + return ( <>
@@ -191,7 +219,8 @@ const WaypointMap = () => { center={{ lat: 41.85, lng: -87.65 }} options={options} > - {/* Map components */} + {" "} + {legs && legs.length > 0 && }
From 9fcd4ac8a5a0c7470ee97d9f207fa283349fb0b2 Mon Sep 17 00:00:00 2001 From: jimbobding Date: Mon, 10 Jul 2023 11:58:55 +0100 Subject: [PATCH 52/77] added logic to get the calories lost for each segement of the journey. Added logic to not show calories when not entered into the form --- .../GeoLocation-map/GeoInformation.tsx | 1 - .../WayPoint-map/WaypointFormMap.tsx | 4 +- .../WayPoint-map/WaypointInformation.tsx | 128 ++++-------------- src/components/WayPoint-map/WaypointMap.tsx | 99 ++++++++++---- src/css/CalorieMap.css | 1 + src/css/Waypoint.css | 2 +- 6 files changed, 104 insertions(+), 131 deletions(-) diff --git a/src/components/GeoLocation-map/GeoInformation.tsx b/src/components/GeoLocation-map/GeoInformation.tsx index b82b0db..bffd948 100644 --- a/src/components/GeoLocation-map/GeoInformation.tsx +++ b/src/components/GeoLocation-map/GeoInformation.tsx @@ -9,7 +9,6 @@ import { type GeoInformationProps = { leg: google.maps.DirectionsLeg; - // route: google.maps.DirectionsRoute | undefined; }; const GeoInformation: React.FC = ({ leg }) => { diff --git a/src/components/WayPoint-map/WaypointFormMap.tsx b/src/components/WayPoint-map/WaypointFormMap.tsx index dc688b1..e9f27b8 100644 --- a/src/components/WayPoint-map/WaypointFormMap.tsx +++ b/src/components/WayPoint-map/WaypointFormMap.tsx @@ -1,7 +1,7 @@ import GeoForm from "../GeoLocation-map/GeoForm"; import WaypointMap from "./WaypointMap"; -const GeoLocationFormMap = () => { +const WaypointFormMap = () => { return ( <> @@ -10,4 +10,4 @@ const GeoLocationFormMap = () => { ); }; -export default GeoLocationFormMap; +export default WaypointFormMap; diff --git a/src/components/WayPoint-map/WaypointInformation.tsx b/src/components/WayPoint-map/WaypointInformation.tsx index 3b29b77..aa96706 100644 --- a/src/components/WayPoint-map/WaypointInformation.tsx +++ b/src/components/WayPoint-map/WaypointInformation.tsx @@ -10,119 +10,45 @@ import { type WaypointInformationProps = { legs: google.maps.DirectionsLeg[] | undefined; }; -const WaypointInformation: React.FC = ({ leg }) => { +const WaypointInformation: React.FC = ({ legs }) => { const userName = useAppSelector(selectUserName); const userWeight = useAppSelector(selectUserWeight); const userDropdown = useAppSelector(selectUserDropdown); - const [isOpen, setIsOpen] = useState(false); - const [formattedInstructions, setFormattedInstructions] = useState( - [] - ); - function toggle() { - setIsOpen((isOpen) => !isOpen); - } - //Will change when [leg] is changed - //Will change when [leg] is changed + useEffect(() => { - //Will only execute if leg and leg.steps exist - if (leg && leg.steps) { - //Maps over each instruction in the leg - const instructions = leg.steps.map( - (step: { instructions: any }) => step.instructions - ); - //Instructions array is mapped over and uses regEx to replpace the html tags - // with empty strings - const formatted = instructions.map((instruction: string) => - instruction.replace(/<[^>]+>/g, "") - ); - setFormattedInstructions(formatted); + if (legs && legs.length > 0) { + legs.forEach((leg) => { + // Access and process each leg object here + console.log("waypoint info leg", leg); + }); } - }, [leg]); - const parsedDropdown = parseFloat(userDropdown); - const parsedWeight = parseFloat(userWeight); - const mins = () => { - if (leg.duration?.value === undefined) return "no duration"; - else return (leg.duration?.value / 60).toString(); - }; - const miles = () => { - if (leg.distance?.value === undefined) return "no distance"; - else return Math.floor((leg.distance?.value / 1000) * 0.621371); - }; - const parsedMins = Math.floor(parseFloat(mins() || "0")); - const calsLost = Math.floor( - ((parsedDropdown * 3.5 * parsedWeight) / 200) * parsedMins - ); - const formattedCalsLost = Number.isNaN(calsLost) ? "" : calsLost; + }, [legs]); + + console.log("waypoint info"); + console.log("Legs:", legs); + return ( <>
-

Distance Information

-
-
- Start Address: {leg.start_address} -
-
- End Address: {leg.end_address} -
-
-
-
-

Journey Information

-
-

- {userName === undefined - ? "" - : `${userName} your journey will take `} -

-

- {leg.duration?.text} -

- you will cover {leg.distance?.text} or{" "} - {miles()} Miles{" "} - - - {formattedCalsLost === "" - ? "" - : `you will lose ${formattedCalsLost} calories`} - - -
- Distance: {leg.distance?.text} -
-
- Duration: {leg.duration?.text} -
-
-
-

Time

-
- Duration in Seconds: {leg.duration?.value} -
-
-
- Duration in minutes: {parsedMins} -
+

Hello {userName}

+ + {legs && legs.length > 0 && (
- Duration in days: {leg.duration?.text} -
-
-

Directions

-
- - {isOpen && ( -
- {" "} - {formattedInstructions.map((instruction, index) => ( -

{instruction}

+

Legs:

+
    + {legs.map((leg, index) => ( +
  • + Start Address: {leg.start_address} +
    + End Address: {leg.end_address} +
  • ))} -
- )} -
-
+ +
+ )}
); }; + export default WaypointInformation; diff --git a/src/components/WayPoint-map/WaypointMap.tsx b/src/components/WayPoint-map/WaypointMap.tsx index 93f32a6..4140a36 100644 --- a/src/components/WayPoint-map/WaypointMap.tsx +++ b/src/components/WayPoint-map/WaypointMap.tsx @@ -1,16 +1,27 @@ import { GoogleMap } from "@react-google-maps/api"; -import { useCallback, useEffect, useMemo, useRef } from "react"; +import { isNumber } from "lodash"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import WaypointInformation from "./WaypointInformation"; -import GeoInformation from "./WaypointInformation"; +import { useAppSelector } from "../../store"; +import { + selectUserDropdown, + selectUserName, + selectUserWeight, +} from "../../store/form/formSelectors"; type MapOptions = google.maps.MapOptions; -interface WaypointMapProps { - legs: google.maps.DirectionsLeg[] | undefined; -} +const WaypointMap = () => { + const userName = useAppSelector(selectUserName); + const userWeight = useAppSelector(selectUserWeight); + const userDropdown = useAppSelector(selectUserDropdown); -const WaypointMap = ({ legs }: WaypointMapProps) => { + const parsedDropdown = parseFloat(userDropdown); + const parsedWeight = parseFloat(userWeight); + + let totalDuration = 0; + const [calsLost1, setCalsLost1] = useState(0); + const [numOfWaypoints, setNumOfWayoints] = useState(0); const options = useMemo( () => ({ mapId: "55ec9d32771d5e8c", @@ -82,27 +93,42 @@ const WaypointMap = ({ legs }: WaypointMapProps) => { if (route && route.legs) { for (let i = 0; i < route.legs.length; i++) { const routeSegment = i + 1; - console.log("i", i); + summaryPanel.innerHTML += "Route Segment: " + routeSegment + "
"; summaryPanel.innerHTML += route.legs[i].start_address + " to "; summaryPanel.innerHTML += route.legs[i].end_address + "
"; + const length1 = route.legs.length; + setNumOfWayoints(length1); const leg = route.legs[i]; + + const legDurationValue = leg.duration?.value || 0; + totalDuration += legDurationValue; + console.log("Total duration 1:", totalDuration); + + const mins = (): string => { + if (leg.duration?.value === undefined) return "0"; + else return (leg.duration?.value / 60).toString(); + }; + + const parsedDropdown = parseFloat(userDropdown); + const parsedWeight = parseFloat(userWeight); + const parsedMins = Math.floor(parseFloat(mins() || "0")); + const calsLost = Math.floor( + ((parsedDropdown * 3.5 * parsedWeight) / 200) * parsedMins + ); const distanceText = leg.distance?.text || "Unknown distance"; - console.log("distance", distanceText); - summaryPanel.innerHTML += distanceText + "

"; - // const leg1 = route.legs[i]; - // if (leg1 !== undefined) - // for (let j = 0; j < leg1.steps.length; j++) { - // const step = leg1.steps[j]; - // summaryPanel.innerHTML += step.distance?.text + "
"; + summaryPanel.innerHTML += distanceText + "

"; + summaryPanel.innerHTML += leg.duration?.text + "

"; - // // console.log("leg staps", leg.steps[j]); - // } + // If the calorie form is not filled out this will not be displayed + if (!Number.isNaN(calsLost)) { + summaryPanel.innerHTML += `you will lose ${calsLost}

`; + } - // summaryPanel.innerHTML += "
"; + processTotalDuration(totalDuration); } } }) @@ -110,11 +136,30 @@ const WaypointMap = ({ legs }: WaypointMapProps) => { } } + const processTotalDuration = (duration: number) => { + // Access totalDuration here or perform any other operations + console.log("Total Duration 2:", duration); + + // Calculate calsLost1 using totalDuration + const calsLost1 = Math.floor( + ((parsedDropdown * 3.5 * parsedWeight) / 200) * (duration / 60) + ); + setCalsLost1(calsLost1); + }; + + // const formattedCalsLost = Number.isNaN(calsLost1) ? "" : calsLost1; + const calslostDividedByWaypoint = calsLost1 / numOfWaypoints; + console.log("big cals", calslostDividedByWaypoint); + useEffect(() => { initMap(); }, []); - // Rest of the code... + console.log({ user: { userName } }); + // console.log({ calories: { calslostDividedByWaypoint } }); + + // If calsLost returns NaN it will return an empty string + // const formattedCalsLost = Number.isNaN(calsLost1) ? "" : calsLost1; return ( <> @@ -207,21 +252,23 @@ const WaypointMap = ({ legs }: WaypointMapProps) => {
- -
- +

+ {userName === "" ? "" : `${userName} your journey will take `} +

+

+ {!Number.isNaN(calslostDividedByWaypoint) && + `you will lose ${calslostDividedByWaypoint} over the entire journey`} +

+ - {" "} - {legs && legs.length > 0 && } - + > ); diff --git a/src/css/CalorieMap.css b/src/css/CalorieMap.css index ab980e7..e241db5 100644 --- a/src/css/CalorieMap.css +++ b/src/css/CalorieMap.css @@ -47,6 +47,7 @@ a { margin-top: 10px; padding-top: 5px; overflow: scroll; + color: white; } } diff --git a/src/css/Waypoint.css b/src/css/Waypoint.css index 02647a0..8e9d571 100644 --- a/src/css/Waypoint.css +++ b/src/css/Waypoint.css @@ -1,4 +1,4 @@ -html { +/* html { box-sizing: border-box; } From 11bd97d484c8d2a172b811ea1e020f2ec74f3328 Mon Sep 17 00:00:00 2001 From: jimbobding Date: Mon, 10 Jul 2023 17:26:16 +0100 Subject: [PATCH 53/77] added logic to display full travel time for journey --- src/components/LandingPage/index.test.tsx | 14 ----- src/components/LandingPage/index.tsx | 9 --- src/components/UserPage/UserForm/index.tsx | 35 ----------- src/components/UserPage/index.test.tsx | 31 ---------- src/components/UserPage/index.tsx | 19 ------ .../WayPoint-map/WaypointInformation.tsx | 54 ----------------- src/components/WayPoint-map/WaypointMap.tsx | 59 ++++++++++++++----- 7 files changed, 44 insertions(+), 177 deletions(-) delete mode 100644 src/components/LandingPage/index.test.tsx delete mode 100644 src/components/LandingPage/index.tsx delete mode 100644 src/components/UserPage/UserForm/index.tsx delete mode 100644 src/components/UserPage/index.test.tsx delete mode 100644 src/components/UserPage/index.tsx delete mode 100644 src/components/WayPoint-map/WaypointInformation.tsx diff --git a/src/components/LandingPage/index.test.tsx b/src/components/LandingPage/index.test.tsx deleted file mode 100644 index eac4fae..0000000 --- a/src/components/LandingPage/index.test.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { screen } from "@testing-library/react"; - -import LandingPage from "."; -import { renderComponent } from "../../../test/helpers/render"; - -describe("Landing Page", () => { - describe("render", () => { - it("renders how we'd expect", () => { - renderComponent(); - - expect(screen.getByText("Hello world")).toBeInTheDocument(); - }); - }); -}); diff --git a/src/components/LandingPage/index.tsx b/src/components/LandingPage/index.tsx deleted file mode 100644 index 429d26a..0000000 --- a/src/components/LandingPage/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -const LandingPage1 = () => { - return ( -
-

Hello world

-
- ); -}; - -export default LandingPage1; diff --git a/src/components/UserPage/UserForm/index.tsx b/src/components/UserPage/UserForm/index.tsx deleted file mode 100644 index cbce781..0000000 --- a/src/components/UserPage/UserForm/index.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { ChangeEventHandler, FormEventHandler, useState } from "react"; - -import { useAppDispatch } from "../../../store"; -import { setUserName } from "../../../store/user/userSlice"; - -export const UserForm = () => { - const [name, setName] = useState(""); - const dispatch = useAppDispatch(); - - const handleNameInput: ChangeEventHandler = (e) => { - setName(e.target.value); - }; - - const handleSubmit: FormEventHandler = (e) => { - e.preventDefault(); - dispatch(setUserName(name)); - }; - - return ( - - - - - - - ); -}; - -export default UserForm; diff --git a/src/components/UserPage/index.test.tsx b/src/components/UserPage/index.test.tsx deleted file mode 100644 index 5d2f7dd..0000000 --- a/src/components/UserPage/index.test.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { fireEvent, screen } from "@testing-library/react"; - -import UserPage from "."; -import { renderComponent } from "../../../test/helpers/render"; - -describe("User Page", () => { - describe("render", () => { - it("renders how we'd expect", () => { - renderComponent(); - - expect(screen.getByLabelText("Your name:")).toBeInTheDocument(); - }); - }); - - describe("interact", () => { - it("submitting the form triggers a 'setUsername' action", () => { - const { store } = renderComponent(); - const actionSpy = jest.spyOn(store, "dispatch"); - - fireEvent.input(screen.getByLabelText("Your name:"), { - target: { value: "Marco Polo" }, - }); - fireEvent.click(screen.getByText("SUBMIT")); - - expect(actionSpy).toBeCalledWith({ - type: "user/setUserName", - payload: "Marco Polo", - }); - }); - }); -}); diff --git a/src/components/UserPage/index.tsx b/src/components/UserPage/index.tsx deleted file mode 100644 index 627a48d..0000000 --- a/src/components/UserPage/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { useAppSelector } from "../../store"; -import { selectUserName } from "../../store/user/selectors"; -import UserForm from "./UserForm"; - -const UserPage = () => { - const userName = useAppSelector(selectUserName); - - return ( -
- - -
- -

Hello {userName}

-
- ); -}; - -export default UserPage; diff --git a/src/components/WayPoint-map/WaypointInformation.tsx b/src/components/WayPoint-map/WaypointInformation.tsx deleted file mode 100644 index aa96706..0000000 --- a/src/components/WayPoint-map/WaypointInformation.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { useEffect, useState } from "react"; - -import { useAppSelector } from "../../store"; -import { - selectUserDropdown, - selectUserName, - selectUserWeight, -} from "../../store/form/formSelectors"; - -type WaypointInformationProps = { - legs: google.maps.DirectionsLeg[] | undefined; -}; -const WaypointInformation: React.FC = ({ legs }) => { - const userName = useAppSelector(selectUserName); - const userWeight = useAppSelector(selectUserWeight); - const userDropdown = useAppSelector(selectUserDropdown); - - useEffect(() => { - if (legs && legs.length > 0) { - legs.forEach((leg) => { - // Access and process each leg object here - console.log("waypoint info leg", leg); - }); - } - }, [legs]); - - console.log("waypoint info"); - console.log("Legs:", legs); - - return ( - <> -
-

Hello {userName}

- - {legs && legs.length > 0 && ( -
-

Legs:

-
    - {legs.map((leg, index) => ( -
  • - Start Address: {leg.start_address} -
    - End Address: {leg.end_address} -
  • - ))} -
-
- )} -
- - ); -}; - -export default WaypointInformation; diff --git a/src/components/WayPoint-map/WaypointMap.tsx b/src/components/WayPoint-map/WaypointMap.tsx index 4140a36..ffe449c 100644 --- a/src/components/WayPoint-map/WaypointMap.tsx +++ b/src/components/WayPoint-map/WaypointMap.tsx @@ -1,6 +1,5 @@ import { GoogleMap } from "@react-google-maps/api"; -import { isNumber } from "lodash"; -import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { useEffect, useMemo, useState } from "react"; import { useAppSelector } from "../../store"; import { @@ -22,6 +21,9 @@ const WaypointMap = () => { let totalDuration = 0; const [calsLost1, setCalsLost1] = useState(0); const [numOfWaypoints, setNumOfWayoints] = useState(0); + const [journeyTime, setJourneyTime] = useState(0); + const [leg, setLeg] = useState(null); + const options = useMemo( () => ({ mapId: "55ec9d32771d5e8c", @@ -88,6 +90,7 @@ const WaypointMap = () => { ) as HTMLElement; summaryPanel.innerHTML = ""; + totalDuration = 0; // For each route, display summary information. if (route && route.legs) { @@ -100,12 +103,15 @@ const WaypointMap = () => { summaryPanel.innerHTML += route.legs[i].end_address + "
"; const length1 = route.legs.length; + //set the number of way points on journey setNumOfWayoints(length1); - const leg = route.legs[i]; + const leg = route.legs[i]; + setLeg(leg); const legDurationValue = leg.duration?.value || 0; + console.log("leg duration :", legDurationValue); totalDuration += legDurationValue; - console.log("Total duration 1:", totalDuration); + // console.log("Total duration 1:", totalDuration); const mins = (): string => { if (leg.duration?.value === undefined) return "0"; @@ -120,6 +126,9 @@ const WaypointMap = () => { ); const distanceText = leg.distance?.text || "Unknown distance"; + // Update JourneyTime state + setJourneyTime(totalDuration); + summaryPanel.innerHTML += distanceText + "

"; summaryPanel.innerHTML += leg.duration?.text + "

"; @@ -135,10 +144,12 @@ const WaypointMap = () => { .catch((e) => window.alert("Directions request failed due to " + e)); } } + // console.log(leg); + console.log("journey time: ", journeyTime); + console.log("num of way points ", numOfWaypoints); const processTotalDuration = (duration: number) => { // Access totalDuration here or perform any other operations - console.log("Total Duration 2:", duration); // Calculate calsLost1 using totalDuration const calsLost1 = Math.floor( @@ -147,20 +158,21 @@ const WaypointMap = () => { setCalsLost1(calsLost1); }; - // const formattedCalsLost = Number.isNaN(calsLost1) ? "" : calsLost1; + // console.log(mins()); + + // total calories of journey divide by the number of waypoints const calslostDividedByWaypoint = calsLost1 / numOfWaypoints; - console.log("big cals", calslostDividedByWaypoint); + + //hours and minutes const + const hours = Math.floor(journeyTime / 3600); + const minutes = Math.floor((journeyTime % 3600) / 60); + + console.log("leg way", leg?.steps); useEffect(() => { initMap(); }, []); - console.log({ user: { userName } }); - // console.log({ calories: { calslostDividedByWaypoint } }); - - // If calsLost returns NaN it will return an empty string - // const formattedCalsLost = Number.isNaN(calsLost1) ? "" : calsLost1; - return ( <>
@@ -252,12 +264,29 @@ const WaypointMap = () => {
+ {/* This logic stops the hours and minutes showing up before the route is calculte so NaN is not displayed */} + {!isNaN(hours) && + !isNaN(minutes) && + (hours > 0 ? ( +

+ Your journey will take {hours} hour{hours === 1 ? "" : "s"}{" "} + and {minutes} minute{minutes === 1 ? "" : "s"} +

+ ) : ( +

+ Your journey will take {minutes} minute + {minutes === 1 ? "" : "s"} +

+ ))} +

- {userName === "" ? "" : `${userName} your journey will take `} + {userName === "" + ? "" + : `${userName} your journey will take ${journeyTime} `}

{!Number.isNaN(calslostDividedByWaypoint) && - `you will lose ${calslostDividedByWaypoint} over the entire journey`} + `you will lose ${calslostDividedByWaypoint} calories over the entire journey`}

From fa2bfec2aaf0640e7b7a4b6fde1e26e27aa264a1 Mon Sep 17 00:00:00 2001 From: jimbobding Date: Mon, 10 Jul 2023 17:47:53 +0100 Subject: [PATCH 54/77] bugs in total calories lost and also in the logic that stops hours, min and calories being displayed --- src/components/WayPoint-map/WaypointMap.tsx | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/components/WayPoint-map/WaypointMap.tsx b/src/components/WayPoint-map/WaypointMap.tsx index ffe449c..79d864f 100644 --- a/src/components/WayPoint-map/WaypointMap.tsx +++ b/src/components/WayPoint-map/WaypointMap.tsx @@ -161,7 +161,7 @@ const WaypointMap = () => { // console.log(mins()); // total calories of journey divide by the number of waypoints - const calslostDividedByWaypoint = calsLost1 / numOfWaypoints; + // const calslostDividedByWaypoint = calsLost1; //hours and minutes const const hours = Math.floor(journeyTime / 3600); @@ -267,6 +267,7 @@ const WaypointMap = () => { {/* This logic stops the hours and minutes showing up before the route is calculte so NaN is not displayed */} {!isNaN(hours) && !isNaN(minutes) && + minutes > 0 && (hours > 0 ? (

Your journey will take {hours} hour{hours === 1 ? "" : "s"}{" "} @@ -279,14 +280,10 @@ const WaypointMap = () => {

))} -

- {userName === "" - ? "" - : `${userName} your journey will take ${journeyTime} `} -

- {!Number.isNaN(calslostDividedByWaypoint) && - `you will lose ${calslostDividedByWaypoint} calories over the entire journey`} + {!Number.isNaN(calsLost1) && + calsLost1 > 0 && + `you will lose ${calsLost1} calories over the entire journey`}

From 3d93c9118b1ec2d897ab961188c43b9d76d4b0f3 Mon Sep 17 00:00:00 2001 From: jimbobding Date: Tue, 11 Jul 2023 11:49:49 +0100 Subject: [PATCH 55/77] made some css style fixes to the map and loading page --- src/App.tsx | 9 +---- .../GeoLocation-map/GeoLocationMap.tsx | 15 ++++++-- src/components/GeoLocation-map/Loading.tsx | 1 + src/components/Map.tsx | 4 +- src/components/WayPoint-map/WaypointMap.tsx | 37 +++++++++++-------- src/css/CalorieMap.css | 1 - src/css/Loading.css | 30 ++++++++++++++- src/css/Waypoint.css | 25 ++++++++++++- src/reset.css | 17 +++++++++ 9 files changed, 109 insertions(+), 30 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 1aebae2..80ab232 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -2,6 +2,7 @@ import { Outlet } from "react-router-dom"; //Components import Footer from "./components/Footer"; +import Loading from "./components/GeoLocation-map/Loading"; // import Loading from "./components/GeoLocation-map/Loading"; import Nav from "./components/Nav"; //CSS @@ -13,18 +14,12 @@ import "./css/LandingPage.css"; import "./css/Loading.css"; import "./css/Nav.css"; import "./css/Waypoint.css"; -import { useAppSelector } from "./store"; -//Redux -import { selectUserName, selectUserWeight } from "./store/form/formSelectors"; function App() { - const userName = useAppSelector(selectUserName); - const userWeight = useAppSelector(selectUserWeight); - return ( <>