From 28de792d918b02c51cb0e123ef9e79bf43fe7d4c Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 16:37:58 -0400 Subject: [PATCH 01/22] refactor with private dev db uri --- app.js | 96 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/app.js b/app.js index df9127b..e210fbd 100644 --- a/app.js +++ b/app.js @@ -1,25 +1,24 @@ -const createError = require("http-errors"); -const express = require("express"); -const path = require("path"); -const bodyParser = require("body-parser"); -const logger = require("morgan"); -const cors = require("cors"); -const mongoose = require("mongoose"); -const passport = require("passport"); -const session = require("express-session"); -const MongoStore = require("connect-mongo")(session); -const compression = require("compression"); -const User = require("./models/User"); -require("dotenv").config(); +const createError = require('http-errors'); +const express = require('express'); +const path = require('path'); +const bodyParser = require('body-parser'); +const logger = require('morgan'); +const cors = require('cors'); +const mongoose = require('mongoose'); +const passport = require('passport'); +const session = require('express-session'); +const MongoStore = require('connect-mongo')(session); +const compression = require('compression'); +const User = require('./models/User'); +require('dotenv').config(); // MONGODB -const forceProdDB = false; -const isProdDb = - forceProdDB || - (process.env.NODE_ENV === "production" && process.env.REACT_APP_DB_PROD); +const forceProdDB = true; +const isProdDb = forceProdDB + || (process.env.NODE_ENV === 'production' && process.env.REACT_APP_DB_PROD); const URI = isProdDb ? process.env.REACT_APP_DB_PROD - : process.env.REACT_APP_DB_DEV; + : process.env.DB_URI_DEV; mongoose.connect(URI, { useNewUrlParser: true, @@ -29,11 +28,11 @@ mongoose.connect(URI, { reconnectInterval: 1000, }); const db = mongoose.connection; -db.on("error", console.error.bind(console, "*** DB connection error ***")); -db.on("disconnected", console.error.bind(console, "*** DB disconnected ***")); -db.on("reconnected", console.error.bind(console, "*** DB reconnected ***")); -db.once("open", () => { - console.log("db connection:", isProdDb ? "prod" : "dev"); +db.on('error', console.error.bind(console, '*** DB connection error ***')); +db.on('disconnected', console.error.bind(console, '*** DB disconnected ***')); +db.on('reconnected', console.error.bind(console, '*** DB reconnected ***')); +db.once('open', () => { + console.log('db connection:', isProdDb ? 'prod' : 'dev'); }); // PORT @@ -45,17 +44,17 @@ const server = app.listen(PORT, () => { // MIDDLEWARE const corsCfg = { - origin: "*", - methods: "GET,HEAD,PUT,PATCH,POST,DELETE", + origin: '*', + methods: 'GET,HEAD,PUT,PATCH,POST,DELETE', preflightContinue: false, optionsSuccessStatus: 204, credentials: true, }; app.use(cors(corsCfg)); -app.use(logger("dev")); +app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); -if (process.env.NODE_ENV === "production") { +if (process.env.NODE_ENV === 'production') { app.use(compression()); } @@ -66,7 +65,7 @@ app.use( resave: false, saveUninitialized: true, store: new MongoStore({ mongooseConnection: mongoose.connection }), - }) + }), ); app.use(bodyParser.urlencoded({ extended: false })); app.use(passport.initialize()); @@ -80,54 +79,55 @@ passport.deserializeUser((id, done) => { // find user based on id stored in cookie // save user data to req.user User.findById(id) - .populate("bm.listings") - .populate("chatrooms") + .populate('bm.listings') + .populate('chatrooms') .then((user) => { done(null, user); }) .catch((e) => { - done(new Error("Failed to deserialize a user")); + done(new Error('Failed to deserialize a user')); }); }); // ROUTING -app.use("/api", require("./routes")); +app.use('/api', require('./routes')); // SOCKET IO -require("./socket").listen(server); +require('./socket').listen(server); // VIEW ENGINE -app.set("views", path.join(__dirname, "views")); -app.set("view engine", "jade"); +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'jade'); // FORCE HTTPS ON PROD // eslint-disable-next-line consistent-return app.use((req, res, next) => { if ( - !req.secure && - req.get("x-forwarded-proto") !== "https" && - process.env.NODE_ENV === "production" + !req.secure + && req.get('x-forwarded-proto') !== 'https' + && process.env.NODE_ENV === 'production' ) { - return res.redirect(`https://${req.get("host")}${req.url}`); + return res.redirect(`https://${req.get('host')}${req.url}`); } next(); }); // PROD SERVE FRONTEND -if (process.env.NODE_ENV === "production") { +if (process.env.NODE_ENV === 'production') { const HALF_HOUR = 1000 * 60 * 30; app.use(express.static(path.join(__dirname))); app.use( - express.static(path.join(__dirname, "client", "build"), { + express.static(path.join(__dirname, 'client', 'build'), { maxAge: HALF_HOUR, - }) + }), ); - app.get("/*", (req, res) => { - res.sendFile(path.join(__dirname, "client", "build", "index.html")); + app.get('/*', (req, res) => { + res.sendFile(path.join(__dirname, 'client', 'build', 'index.html')); }); -} else { - app.use(express.static(path.join(__dirname, "public"))); +} +else { + app.use(express.static(path.join(__dirname, 'public'))); } // catch 404 and forward to error handler @@ -139,11 +139,11 @@ app.use((req, res, next) => { app.use((err, req, res) => { // set locals, only providing error in development res.locals.message = err.message; - res.locals.error = req.app.get("env") === "development" ? err : {}; + res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); - res.render("error"); + res.render('error'); }); module.exports = app; From aff1f227325284ba7e1b1226b3f7d13935d1ddb6 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 18:59:46 -0400 Subject: [PATCH 02/22] delete node modules --- {client => client-cra-legacy}/.eslintrc.json | 0 {client => client-cra-legacy}/.gitignore | 0 {client => client-cra-legacy}/.prettierrc | 0 {client => client-cra-legacy}/README.md | 0 .../public => client-cra-legacy}/index.html | 5 +- {client => client-cra-legacy}/index.jsx | 0 {client => client-cra-legacy}/jsconfig.json | 0 client-cra-legacy/package-lock.json | 11959 +++++ {client => client-cra-legacy}/package.json | 12 +- {client => client-cra-legacy}/public/icon.svg | 0 .../public/manifest.json | 0 .../public/robots.txt | 0 .../src/assets/illustrations/no-bookmarks.svg | 0 .../src/assets/illustrations/no-chatrooms.svg | 0 .../src/assets/illustrations/no-listings.svg | 0 .../src/assets/svgs/aircon.svg | 0 .../src/assets/svgs/avatar.svg | 0 .../src/assets/svgs/bathroom.svg | 0 .../src/assets/svgs/bed-outlined.svg | 0 .../src/assets/svgs/bed.svg | 0 .../src/assets/svgs/bedroom.svg | 0 .../src/assets/svgs/bin.svg | 0 .../src/assets/svgs/bookmark-filled.svg | 0 .../src/assets/svgs/bookmark.svg | 0 .../src/assets/svgs/burger.svg | 0 .../src/assets/svgs/bus.svg | 0 .../src/assets/svgs/calendar.svg | 0 .../src/assets/svgs/car.svg | 0 .../src/assets/svgs/chat-square.svg | 0 .../src/assets/svgs/chat.svg | 0 .../src/assets/svgs/close-material.svg | 0 .../src/assets/svgs/close.svg | 0 .../src/assets/svgs/down.svg | 0 .../src/assets/svgs/eye.svg | 0 .../src/assets/svgs/face.svg | 0 .../src/assets/svgs/filter.svg | 0 .../src/assets/svgs/google.svg | 0 .../src/assets/svgs/gym.svg | 0 .../src/assets/svgs/heater.svg | 0 .../src/assets/svgs/house.svg | 0 .../src/assets/svgs/left-arrow.svg | 0 .../src/assets/svgs/left.svg | 0 .../src/assets/svgs/lock.svg | 0 .../src/assets/svgs/logo.svg | 0 .../src/assets/svgs/mail.svg | 0 .../src/assets/svgs/money.svg | 0 .../src/assets/svgs/pencil.svg | 0 .../src/assets/svgs/person.svg | 0 .../src/assets/svgs/place.svg | 0 .../src/assets/svgs/plus.svg | 0 .../src/assets/svgs/profile.svg | 0 .../src/assets/svgs/search.svg | 0 .../src/assets/svgs/shower-outlined.svg | 0 .../src/assets/svgs/snowflake.svg | 0 .../src/assets/svgs/sofa.svg | 0 .../src/assets/svgs/up.svg | 0 .../src/assets/svgs/utilities.svg | 0 .../src/assets/svgs/walk.svg | 0 .../src/assets/svgs/warning.svg | 0 .../src/assets/svgs/wifi.svg | 0 .../src/components/buttons/Auth.jsx | 0 .../src/components/buttons/BmBtn.jsx | 0 .../src/components/buttons/Btn.jsx | 0 .../src/components/buttons/CircleCross.jsx | 0 .../src/components/buttons/InvertedBtn.jsx | 0 .../src/components/buttons/LinedBtn.jsx | 0 .../src/components/buttons/PaginationBtns.jsx | 0 .../components/buttons/PopupButton/Btn.jsx | 0 .../components/buttons/PopupButton/Popup.jsx | 0 .../components/buttons/PopupButton/index.jsx | 0 .../src/components/buttons/TextBtn.jsx | 0 .../components/cards/ListingCard/index.jsx | 0 .../src/components/cards/ListingCardV2.jsx | 0 .../src/components/cards/ListingHostCard.jsx | 0 .../src/components/core/AppReduxWrapper.jsx | 0 .../src/components/core/AppRouteWrapper.jsx | 0 .../src/components/core/AppThemeWrapper.jsx | 0 .../src/components/core/PrivateRoute.jsx | 0 .../src/components/core/ResetUserStore.jsx | 0 .../src/components/core/ScrollToTop.jsx | 0 .../src/components/core/SocketIO.jsx | 0 .../src/components/displays/AmenityGrp.jsx | 0 .../src/components/displays/Avatar.jsx | 0 .../src/components/displays/Badge.jsx | 0 .../src/components/displays/BadgeV2.jsx | 0 .../src/components/displays/ClickableIcon.jsx | 0 .../src/components/displays/CornerRedDot.jsx | 0 .../components/displays/DetailedAvatar.jsx | 0 .../src/components/displays/IconContainer.jsx | 0 .../src/components/displays/ImgCarousel.css | 0 .../src/components/displays/ImgCarousel.jsx | 0 .../src/components/displays/InfoBox.jsx | 0 .../components/displays/ListingLocation.jsx | 0 .../src/components/displays/Loading.jsx | 0 .../src/components/displays/LoadingDots.jsx | 0 .../src/components/displays/Logo.jsx | 0 .../src/components/displays/Map.jsx | 0 .../src/components/displays/Metadata.jsx | 0 .../src/components/displays/NotifCounter.jsx | 0 .../src/components/displays/Notification.jsx | 0 .../components/displays/PolicyDisclaimer.jsx | 0 .../src/components/displays/PriceBadge.jsx | 0 .../src/components/displays/Searchers.jsx | 0 .../src/components/displays/Snackbar.jsx | 0 .../src/components/displays/StateBadges.jsx | 0 .../src/components/filters/DateFilter.jsx | 0 .../src/components/filters/SliderFilter.jsx | 0 .../src/components/filters/Sort.jsx | 0 .../src/components/fonts/Body.jsx | 0 .../src/components/fonts/ErrMsg.jsx | 0 .../src/components/fonts/Heading.jsx | 0 .../src/components/fonts/Label.jsx | 0 .../src/components/fonts/ListingInfo.jsx | 0 .../src/components/fonts/Subheading.jsx | 0 .../src/components/fonts/Text.jsx | 0 .../src/components/footers/MainFooter.jsx | 0 .../forms/ListingForm/Amenities.jsx | 0 .../forms/ListingForm/CustomFileUpload.jsx | 0 .../src/components/forms/ListingForm/Form.jsx | 0 .../forms/ListingForm/FormContents.jsx | 0 .../components/forms/ListingForm/StartEnd.jsx | 0 .../components/forms/ListingForm/index.jsx | 0 .../components/headers/BackHeader/index.jsx | 0 .../headers/FeedbackBanner/index.jsx | 0 .../MainHeader/Bookmarks/BmDropdown.jsx | 0 .../MainHeader/Bookmarks/BmListing.jsx | 0 .../headers/MainHeader/Bookmarks/index.jsx | 0 .../headers/MainHeader/Chat/index.jsx | 0 .../MainHeader/MobileNav/FullscreenNav.jsx | 0 .../headers/MainHeader/MobileNav/index.jsx | 0 .../components/headers/MainHeader/index.jsx | 0 .../src/components/headers/Navbar/NavElt.jsx | 0 .../src/components/headers/Navbar/index.jsx | 0 .../src/components/inputs/AddrInput.jsx | 0 .../src/components/inputs/Checkbox.jsx | 0 .../src/components/inputs/FileUpload.jsx | 0 .../src/components/inputs/Incrementor.jsx | 0 .../src/components/inputs/Input.jsx | 0 .../src/components/inputs/Searchbar.jsx | 0 .../src/components/inputs/Select.jsx | 0 .../src/components/inputs/search.svg | 0 .../src/components/layouts/Flex.jsx | 0 .../src/components/layouts/Space.jsx | 0 .../src/components/views/Dropdown/index.jsx | 0 .../src/components/views/Modal/index.jsx | 0 .../views/deprec/DynContainer/index.jsx | 0 {client => client-cra-legacy}/src/config.js | 0 .../src/constants/amenities.jsx | 0 .../src/containers/AmenitiesList.jsx | 0 .../src/containers/DynCardList/index.jsx | 0 .../src/containers/HoriCenter.jsx | 0 .../src/containers/RenderOn.jsx | 0 .../src/containers/VertCardList.jsx | 0 {client => client-cra-legacy}/src/index.jsx | 0 .../src/pages/auth-callback/index.jsx | 0 .../src/pages/cookie-policy/index.jsx | 0 .../src/pages/edit/Edit/index.jsx | 0 .../src/pages/edit/index.jsx | 0 .../src/pages/env/index.jsx | 0 .../src/pages/home/Listings.jsx | 0 .../SearchOptions/Filters/FilterContents.jsx | 0 .../SearchOptions/Filters/FilterStatus.jsx | 0 .../home/SearchOptions/Filters/index.jsx | 0 .../home/SearchOptions/ListingSortSelect.jsx | 0 .../src/pages/home/SearchOptions/index.jsx | 0 .../src/pages/home/index.jsx | 0 .../pages/listing/Listing/DesktopListing.jsx | 0 .../pages/listing/Listing/IconsSection.jsx | 0 .../src/pages/listing/Listing/ImgModal.jsx | 0 .../src/pages/listing/Listing/ImgPanels.jsx | 0 .../pages/listing/Listing/MobileFooter.jsx | 0 .../pages/listing/Listing/RightSidePanel.jsx | 0 .../src/pages/listing/Listing/index.jsx | 0 .../src/pages/listing/index.jsx | 0 .../src/pages/new/New/index.jsx | 0 .../src/pages/new/index.jsx | 0 .../src/pages/privacy-policy/index.jsx | 0 .../src/pages/profile/MyBookmarks/index.jsx | 0 .../src/pages/profile/MyChats/Chat/index.jsx | 0 .../pages/profile/MyChats/Chatroom/index.jsx | 0 .../profile/MyChats/ChatroomList/ListElt.jsx | 0 .../profile/MyChats/ChatroomList/index.jsx | 0 .../ChatroomPanel/ChatContents/MsgGroup.jsx | 0 .../ChatroomPanel/ChatContents/index.jsx | 0 .../profile/MyChats/ChatroomPanel/Header.jsx | 0 .../MyChats/ChatroomPanel/InputSection.jsx | 0 .../profile/MyChats/ChatroomPanel/index.jsx | 0 .../profile/MyListings/MyListingsList.jsx | 0 .../src/pages/profile/MyListings/index.jsx | 0 .../src/pages/profile/Settings/index.jsx | 0 .../src/pages/profile/index.jsx | 0 .../src/pages/stats/index.jsx | 0 .../src/pages/terms-conditions/index.jsx | 0 .../src/redux/reducers/authing.js | 0 .../src/redux/reducers/bm.js | 0 .../src/redux/reducers/chatrooms.js | 0 .../src/redux/reducers/index.js | 0 .../src/redux/reducers/redirectPath.js | 0 .../src/redux/reducers/tempValues.js | 0 .../src/redux/reducers/user.js | 0 .../src/redux/store.js | 0 .../src/serviceWorker.js | 0 .../src/services/firebase/index.js | 0 .../src/services/firebase/uploadFile.js | 0 .../src/theme/Normalise.css | 0 .../src/theme/colors.js | 0 .../src/theme/dimensions.js | 0 .../src/theme/index.js | 0 {client => client-cra-legacy}/src/util/api.js | 0 .../src/util/auth/fetchSelfAndStore.js | 0 .../src/util/auth/logout.js | 0 .../src/util/helpers/calcDistance.js | 0 .../src/util/helpers/formatDate.js | 0 .../src/util/helpers/formatListingDesc.js | 0 .../src/util/helpers/getDateDiff.js | 0 .../src/util/helpers/getDateString.js | 0 .../src/util/helpers/getFromNowDate.js | 0 .../src/util/helpers/getNumericDate.js | 0 .../src/util/helpers/getRegion.js | 0 .../src/util/helpers/getShortAddr.js | 0 .../src/util/helpers/getShortDateString.js | 0 .../src/util/helpers/kmToMins.js | 0 .../src/util/helpers/listingDatestring.js | 0 .../src/util/helpers/signin.js | 0 .../src/util/hooks/useChatOtherUser.js | 0 .../src/util/hooks/useChatroom.js | 0 .../src/util/hooks/useFilters.js | 0 .../src/util/hooks/useIsDesktop.js | 0 .../src/util/hooks/useIsMobile.js | 0 .../src/util/hooks/useLocalStorage.js | 0 .../src/util/hooks/useOnOutsideClick.js | 0 .../src/util/hooks/useRouter.js | 0 .../src/util/hooks/useScript.js | 0 .../src/util/hooks/useUnreadChatrooms.js | 0 .../src/util/hooks/useWindowSize.js | 0 {client => client-cra-legacy}/src/util/log.js | 0 .../src/util/path/getQuery.js | 0 .../src/util/path/updateQuery.js | 0 .../src/util/socket.js | 0 client-cra-legacy/vite.config.js | 12 + client/package-lock.json | 39438 ---------------- 241 files changed, 11981 insertions(+), 39445 deletions(-) rename {client => client-cra-legacy}/.eslintrc.json (100%) rename {client => client-cra-legacy}/.gitignore (100%) rename {client => client-cra-legacy}/.prettierrc (100%) rename {client => client-cra-legacy}/README.md (100%) rename {client/public => client-cra-legacy}/index.html (95%) rename {client => client-cra-legacy}/index.jsx (100%) rename {client => client-cra-legacy}/jsconfig.json (100%) create mode 100644 client-cra-legacy/package-lock.json rename {client => client-cra-legacy}/package.json (89%) rename {client => client-cra-legacy}/public/icon.svg (100%) rename {client => client-cra-legacy}/public/manifest.json (100%) rename {client => client-cra-legacy}/public/robots.txt (100%) rename {client => client-cra-legacy}/src/assets/illustrations/no-bookmarks.svg (100%) rename {client => client-cra-legacy}/src/assets/illustrations/no-chatrooms.svg (100%) rename {client => client-cra-legacy}/src/assets/illustrations/no-listings.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/aircon.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/avatar.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/bathroom.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/bed-outlined.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/bed.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/bedroom.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/bin.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/bookmark-filled.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/bookmark.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/burger.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/bus.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/calendar.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/car.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/chat-square.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/chat.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/close-material.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/close.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/down.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/eye.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/face.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/filter.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/google.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/gym.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/heater.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/house.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/left-arrow.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/left.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/lock.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/logo.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/mail.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/money.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/pencil.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/person.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/place.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/plus.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/profile.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/search.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/shower-outlined.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/snowflake.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/sofa.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/up.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/utilities.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/walk.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/warning.svg (100%) rename {client => client-cra-legacy}/src/assets/svgs/wifi.svg (100%) rename {client => client-cra-legacy}/src/components/buttons/Auth.jsx (100%) rename {client => client-cra-legacy}/src/components/buttons/BmBtn.jsx (100%) rename {client => client-cra-legacy}/src/components/buttons/Btn.jsx (100%) rename {client => client-cra-legacy}/src/components/buttons/CircleCross.jsx (100%) rename {client => client-cra-legacy}/src/components/buttons/InvertedBtn.jsx (100%) rename {client => client-cra-legacy}/src/components/buttons/LinedBtn.jsx (100%) rename {client => client-cra-legacy}/src/components/buttons/PaginationBtns.jsx (100%) rename {client => client-cra-legacy}/src/components/buttons/PopupButton/Btn.jsx (100%) rename {client => client-cra-legacy}/src/components/buttons/PopupButton/Popup.jsx (100%) rename {client => client-cra-legacy}/src/components/buttons/PopupButton/index.jsx (100%) rename {client => client-cra-legacy}/src/components/buttons/TextBtn.jsx (100%) rename {client => client-cra-legacy}/src/components/cards/ListingCard/index.jsx (100%) rename {client => client-cra-legacy}/src/components/cards/ListingCardV2.jsx (100%) rename {client => client-cra-legacy}/src/components/cards/ListingHostCard.jsx (100%) rename {client => client-cra-legacy}/src/components/core/AppReduxWrapper.jsx (100%) rename {client => client-cra-legacy}/src/components/core/AppRouteWrapper.jsx (100%) rename {client => client-cra-legacy}/src/components/core/AppThemeWrapper.jsx (100%) rename {client => client-cra-legacy}/src/components/core/PrivateRoute.jsx (100%) rename {client => client-cra-legacy}/src/components/core/ResetUserStore.jsx (100%) rename {client => client-cra-legacy}/src/components/core/ScrollToTop.jsx (100%) rename {client => client-cra-legacy}/src/components/core/SocketIO.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/AmenityGrp.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/Avatar.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/Badge.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/BadgeV2.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/ClickableIcon.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/CornerRedDot.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/DetailedAvatar.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/IconContainer.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/ImgCarousel.css (100%) rename {client => client-cra-legacy}/src/components/displays/ImgCarousel.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/InfoBox.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/ListingLocation.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/Loading.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/LoadingDots.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/Logo.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/Map.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/Metadata.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/NotifCounter.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/Notification.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/PolicyDisclaimer.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/PriceBadge.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/Searchers.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/Snackbar.jsx (100%) rename {client => client-cra-legacy}/src/components/displays/StateBadges.jsx (100%) rename {client => client-cra-legacy}/src/components/filters/DateFilter.jsx (100%) rename {client => client-cra-legacy}/src/components/filters/SliderFilter.jsx (100%) rename {client => client-cra-legacy}/src/components/filters/Sort.jsx (100%) rename {client => client-cra-legacy}/src/components/fonts/Body.jsx (100%) rename {client => client-cra-legacy}/src/components/fonts/ErrMsg.jsx (100%) rename {client => client-cra-legacy}/src/components/fonts/Heading.jsx (100%) rename {client => client-cra-legacy}/src/components/fonts/Label.jsx (100%) rename {client => client-cra-legacy}/src/components/fonts/ListingInfo.jsx (100%) rename {client => client-cra-legacy}/src/components/fonts/Subheading.jsx (100%) rename {client => client-cra-legacy}/src/components/fonts/Text.jsx (100%) rename {client => client-cra-legacy}/src/components/footers/MainFooter.jsx (100%) rename {client => client-cra-legacy}/src/components/forms/ListingForm/Amenities.jsx (100%) rename {client => client-cra-legacy}/src/components/forms/ListingForm/CustomFileUpload.jsx (100%) rename {client => client-cra-legacy}/src/components/forms/ListingForm/Form.jsx (100%) rename {client => client-cra-legacy}/src/components/forms/ListingForm/FormContents.jsx (100%) rename {client => client-cra-legacy}/src/components/forms/ListingForm/StartEnd.jsx (100%) rename {client => client-cra-legacy}/src/components/forms/ListingForm/index.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/BackHeader/index.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/FeedbackBanner/index.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/MainHeader/Bookmarks/BmDropdown.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/MainHeader/Bookmarks/BmListing.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/MainHeader/Bookmarks/index.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/MainHeader/Chat/index.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/MainHeader/MobileNav/index.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/MainHeader/index.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/Navbar/NavElt.jsx (100%) rename {client => client-cra-legacy}/src/components/headers/Navbar/index.jsx (100%) rename {client => client-cra-legacy}/src/components/inputs/AddrInput.jsx (100%) rename {client => client-cra-legacy}/src/components/inputs/Checkbox.jsx (100%) rename {client => client-cra-legacy}/src/components/inputs/FileUpload.jsx (100%) rename {client => client-cra-legacy}/src/components/inputs/Incrementor.jsx (100%) rename {client => client-cra-legacy}/src/components/inputs/Input.jsx (100%) rename {client => client-cra-legacy}/src/components/inputs/Searchbar.jsx (100%) rename {client => client-cra-legacy}/src/components/inputs/Select.jsx (100%) rename {client => client-cra-legacy}/src/components/inputs/search.svg (100%) rename {client => client-cra-legacy}/src/components/layouts/Flex.jsx (100%) rename {client => client-cra-legacy}/src/components/layouts/Space.jsx (100%) rename {client => client-cra-legacy}/src/components/views/Dropdown/index.jsx (100%) rename {client => client-cra-legacy}/src/components/views/Modal/index.jsx (100%) rename {client => client-cra-legacy}/src/components/views/deprec/DynContainer/index.jsx (100%) rename {client => client-cra-legacy}/src/config.js (100%) rename {client => client-cra-legacy}/src/constants/amenities.jsx (100%) rename {client => client-cra-legacy}/src/containers/AmenitiesList.jsx (100%) rename {client => client-cra-legacy}/src/containers/DynCardList/index.jsx (100%) rename {client => client-cra-legacy}/src/containers/HoriCenter.jsx (100%) rename {client => client-cra-legacy}/src/containers/RenderOn.jsx (100%) rename {client => client-cra-legacy}/src/containers/VertCardList.jsx (100%) rename {client => client-cra-legacy}/src/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/auth-callback/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/cookie-policy/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/edit/Edit/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/edit/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/env/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/home/Listings.jsx (100%) rename {client => client-cra-legacy}/src/pages/home/SearchOptions/Filters/FilterContents.jsx (100%) rename {client => client-cra-legacy}/src/pages/home/SearchOptions/Filters/FilterStatus.jsx (100%) rename {client => client-cra-legacy}/src/pages/home/SearchOptions/Filters/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/home/SearchOptions/ListingSortSelect.jsx (100%) rename {client => client-cra-legacy}/src/pages/home/SearchOptions/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/home/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/listing/Listing/DesktopListing.jsx (100%) rename {client => client-cra-legacy}/src/pages/listing/Listing/IconsSection.jsx (100%) rename {client => client-cra-legacy}/src/pages/listing/Listing/ImgModal.jsx (100%) rename {client => client-cra-legacy}/src/pages/listing/Listing/ImgPanels.jsx (100%) rename {client => client-cra-legacy}/src/pages/listing/Listing/MobileFooter.jsx (100%) rename {client => client-cra-legacy}/src/pages/listing/Listing/RightSidePanel.jsx (100%) rename {client => client-cra-legacy}/src/pages/listing/Listing/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/listing/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/new/New/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/new/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/privacy-policy/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyBookmarks/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyChats/Chat/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyChats/Chatroom/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyChats/ChatroomList/ListElt.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyChats/ChatroomList/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyChats/ChatroomPanel/ChatContents/MsgGroup.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyChats/ChatroomPanel/ChatContents/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyChats/ChatroomPanel/Header.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyChats/ChatroomPanel/InputSection.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyChats/ChatroomPanel/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyListings/MyListingsList.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/MyListings/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/Settings/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/profile/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/stats/index.jsx (100%) rename {client => client-cra-legacy}/src/pages/terms-conditions/index.jsx (100%) rename {client => client-cra-legacy}/src/redux/reducers/authing.js (100%) rename {client => client-cra-legacy}/src/redux/reducers/bm.js (100%) rename {client => client-cra-legacy}/src/redux/reducers/chatrooms.js (100%) rename {client => client-cra-legacy}/src/redux/reducers/index.js (100%) rename {client => client-cra-legacy}/src/redux/reducers/redirectPath.js (100%) rename {client => client-cra-legacy}/src/redux/reducers/tempValues.js (100%) rename {client => client-cra-legacy}/src/redux/reducers/user.js (100%) rename {client => client-cra-legacy}/src/redux/store.js (100%) rename {client => client-cra-legacy}/src/serviceWorker.js (100%) rename {client => client-cra-legacy}/src/services/firebase/index.js (100%) rename {client => client-cra-legacy}/src/services/firebase/uploadFile.js (100%) rename {client => client-cra-legacy}/src/theme/Normalise.css (100%) rename {client => client-cra-legacy}/src/theme/colors.js (100%) rename {client => client-cra-legacy}/src/theme/dimensions.js (100%) rename {client => client-cra-legacy}/src/theme/index.js (100%) rename {client => client-cra-legacy}/src/util/api.js (100%) rename {client => client-cra-legacy}/src/util/auth/fetchSelfAndStore.js (100%) rename {client => client-cra-legacy}/src/util/auth/logout.js (100%) rename {client => client-cra-legacy}/src/util/helpers/calcDistance.js (100%) rename {client => client-cra-legacy}/src/util/helpers/formatDate.js (100%) rename {client => client-cra-legacy}/src/util/helpers/formatListingDesc.js (100%) rename {client => client-cra-legacy}/src/util/helpers/getDateDiff.js (100%) rename {client => client-cra-legacy}/src/util/helpers/getDateString.js (100%) rename {client => client-cra-legacy}/src/util/helpers/getFromNowDate.js (100%) rename {client => client-cra-legacy}/src/util/helpers/getNumericDate.js (100%) rename {client => client-cra-legacy}/src/util/helpers/getRegion.js (100%) rename {client => client-cra-legacy}/src/util/helpers/getShortAddr.js (100%) rename {client => client-cra-legacy}/src/util/helpers/getShortDateString.js (100%) rename {client => client-cra-legacy}/src/util/helpers/kmToMins.js (100%) rename {client => client-cra-legacy}/src/util/helpers/listingDatestring.js (100%) rename {client => client-cra-legacy}/src/util/helpers/signin.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useChatOtherUser.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useChatroom.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useFilters.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useIsDesktop.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useIsMobile.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useLocalStorage.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useOnOutsideClick.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useRouter.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useScript.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useUnreadChatrooms.js (100%) rename {client => client-cra-legacy}/src/util/hooks/useWindowSize.js (100%) rename {client => client-cra-legacy}/src/util/log.js (100%) rename {client => client-cra-legacy}/src/util/path/getQuery.js (100%) rename {client => client-cra-legacy}/src/util/path/updateQuery.js (100%) rename {client => client-cra-legacy}/src/util/socket.js (100%) create mode 100644 client-cra-legacy/vite.config.js delete mode 100644 client/package-lock.json diff --git a/client/.eslintrc.json b/client-cra-legacy/.eslintrc.json similarity index 100% rename from client/.eslintrc.json rename to client-cra-legacy/.eslintrc.json diff --git a/client/.gitignore b/client-cra-legacy/.gitignore similarity index 100% rename from client/.gitignore rename to client-cra-legacy/.gitignore diff --git a/client/.prettierrc b/client-cra-legacy/.prettierrc similarity index 100% rename from client/.prettierrc rename to client-cra-legacy/.prettierrc diff --git a/client/README.md b/client-cra-legacy/README.md similarity index 100% rename from client/README.md rename to client-cra-legacy/README.md diff --git a/client/public/index.html b/client-cra-legacy/index.html similarity index 95% rename from client/public/index.html rename to client-cra-legacy/index.html index c8f637b..3cf0e17 100644 --- a/client/public/index.html +++ b/client-cra-legacy/index.html @@ -3,11 +3,11 @@ - + - + @@ -41,6 +41,7 @@
+ + + + + + + + +
+ + + diff --git a/client/package-lock.json b/client/package-lock.json new file mode 100644 index 0000000..514b7eb --- /dev/null +++ b/client/package-lock.json @@ -0,0 +1,6599 @@ +{ + "name": "cornlet-vite", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "cornlet-vite", + "version": "0.0.0", + "dependencies": { + "@material-ui/core": "^4.11.0", + "@material-ui/icons": "^4.11.2", + "@material-ui/lab": "^4.0.0-alpha.56", + "axios": "^0.21.2", + "body-scroll-lock": "^3.0.2", + "compressorjs": "^1.0.6", + "formik": "^2.0.3", + "generate-password": "^1.4.2", + "just-debounce-it": "^3.0.1", + "react": "^16.10.2", + "react-datepicker": "^2.14.0", + "react-dom": "^16.10.2", + "react-google-maps": "^9.4.5", + "react-perfect-scrollbar": "^1.5.8", + "react-places-autocomplete": "^7.2.1", + "react-redux": "^7.1.1", + "react-router-dom": "^5.1.2", + "react-slick": "^0.25.2", + "recompose": "^0.30.0", + "redux": "^4.0.4", + "redux-logger": "^3.0.6", + "redux-persist": "^6.0.0", + "redux-thunk": "^2.3.0", + "slick-carousel": "^1.8.1", + "socket.io-client": "^2.3.0", + "source-map-explorer": "^2.4.2", + "styled-components": "^4.4.1", + "typescript": "^3.6.4", + "vite-plugin-svgr": "^4.2.0", + "yup": "^0.27.0" + }, + "devDependencies": { + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.57.0", + "eslint-plugin-react": "^7.34.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "prettier": "2.4.1", + "vite": "^5.1.6" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/parser": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@hypnosphi/create-react-context": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", + "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", + "dependencies": { + "gud": "^1.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": ">=0.14.0" + } + }, + "node_modules/@hypnosphi/create-react-context/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@material-ui/core": { + "version": "4.12.4", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", + "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", + "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "dependencies": { + "@babel/runtime": "^7.4.4", + "@material-ui/styles": "^4.11.5", + "@material-ui/system": "^4.12.2", + "@material-ui/types": "5.1.0", + "@material-ui/utils": "^4.11.3", + "@types/react-transition-group": "^4.2.0", + "clsx": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "popper.js": "1.16.1-lts", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0", + "react-transition-group": "^4.4.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/material-ui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/icons": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz", + "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==", + "dependencies": { + "@babel/runtime": "^7.4.4" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@material-ui/core": "^4.0.0", + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/lab": { + "version": "4.0.0-alpha.61", + "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz", + "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==", + "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "dependencies": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.11.3", + "clsx": "^1.0.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@material-ui/core": "^4.12.1", + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/styles": { + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", + "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", + "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "dependencies": { + "@babel/runtime": "^7.4.4", + "@emotion/hash": "^0.8.0", + "@material-ui/types": "5.1.0", + "@material-ui/utils": "^4.11.3", + "clsx": "^1.0.4", + "csstype": "^2.5.2", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.5.1", + "jss-plugin-camel-case": "^10.5.1", + "jss-plugin-default-unit": "^10.5.1", + "jss-plugin-global": "^10.5.1", + "jss-plugin-nested": "^10.5.1", + "jss-plugin-props-sort": "^10.5.1", + "jss-plugin-rule-value-function": "^10.5.1", + "jss-plugin-vendor-prefixer": "^10.5.1", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/material-ui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/system": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", + "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", + "dependencies": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.11.3", + "csstype": "^2.5.2", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/material-ui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/types": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", + "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/utils": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", + "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", + "dependencies": { + "@babel/runtime": "^7.4.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz", + "integrity": "sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.1.tgz", + "integrity": "sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.1.tgz", + "integrity": "sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.1.tgz", + "integrity": "sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.1.tgz", + "integrity": "sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.1.tgz", + "integrity": "sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.1.tgz", + "integrity": "sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.1.tgz", + "integrity": "sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.1.tgz", + "integrity": "sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.1.tgz", + "integrity": "sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.1.tgz", + "integrity": "sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.1.tgz", + "integrity": "sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.1.tgz", + "integrity": "sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/core/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@svgr/core/node_modules/typescript": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@swc/core": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.6.tgz", + "integrity": "sha512-A7iK9+1qzTCIuc3IYcS8gPHCm9bZVKUJrfNnwveZYyo6OFp3jLno4WOM2yBy5uqedgYATEiWgBYHKq37KrU6IA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.2", + "@swc/types": "^0.1.5" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.4.6", + "@swc/core-darwin-x64": "1.4.6", + "@swc/core-linux-arm-gnueabihf": "1.4.6", + "@swc/core-linux-arm64-gnu": "1.4.6", + "@swc/core-linux-arm64-musl": "1.4.6", + "@swc/core-linux-x64-gnu": "1.4.6", + "@swc/core-linux-x64-musl": "1.4.6", + "@swc/core-win32-arm64-msvc": "1.4.6", + "@swc/core-win32-ia32-msvc": "1.4.6", + "@swc/core-win32-x64-msvc": "1.4.6" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.6.tgz", + "integrity": "sha512-bpggpx/BfLFyy48aUKq1PsNUxb7J6CINlpAUk0V4yXfmGnpZH80Gp1pM3GkFDQyCfq7L7IpjPrIjWQwCrL4hYw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.6.tgz", + "integrity": "sha512-vJn+/ZuBTg+vtNkcmgZdH6FQpa0hFVdnB9bAeqYwKkyqP15zaPe6jfC+qL2y/cIeC7ASvHXEKrnCZgBLxfVQ9w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.6.tgz", + "integrity": "sha512-hEmYcB/9XBAl02MtuVHszhNjQpjBzhk/NFulnU33tBMbNZpy2TN5yTsitezMq090QXdDz8sKIALApDyg07ZR8g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.6.tgz", + "integrity": "sha512-/UCYIVoGpm2YVvGHZM2QOA3dexa28BjcpLAIYnoCbgH5f7ulDhE8FAIO/9pasj+kixDBsdqewHfsNXFYlgGJjQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.6.tgz", + "integrity": "sha512-LGQsKJ8MA9zZ8xHCkbGkcPSmpkZL2O7drvwsGKynyCttHhpwVjj9lguhD4DWU3+FWIsjvho5Vu0Ggei8OYi/Lw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.6.tgz", + "integrity": "sha512-10JL2nLIreMQDKvq2TECnQe5fCuoqBHu1yW8aChqgHUyg9d7gfZX/kppUsuimqcgRBnS0AjTDAA+JF6UsG/2Yg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.6.tgz", + "integrity": "sha512-EGyjFVzVY6Do89x8sfah7I3cuP4MwtwzmA6OlfD/KASqfCFf5eIaEBMbajgR41bVfMV7lK72lwAIea5xEyq1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.6.tgz", + "integrity": "sha512-gfW9AuXvwSyK07Vb8Y8E9m2oJZk21WqcD+X4BZhkbKB0TCZK0zk1j/HpS2UFlr1JB2zPKPpSWLU3ll0GEHRG2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.6.tgz", + "integrity": "sha512-ZuQm81FhhvNVYtVb9GfZ+Du6e7fZlkisWvuCeBeRiyseNt1tcrQ8J3V67jD2nxje8CVXrwG3oUIbPcybv2rxfQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.6.tgz", + "integrity": "sha512-UagPb7w5V0uzWSjrXwOavGa7s9iv3wrVdEgWy+/inm0OwY4lj3zpK9qDnMWAwYLuFwkI3UG4Q3dH8wD+CUUcjw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/google-maps": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@types/google-maps/-/google-maps-3.2.6.tgz", + "integrity": "sha512-ySOadZErcnCnNG+Zkmv5n+QG9DyTt7Mkx5Yk1dTjjNPtD8ByFaf+klZ/CxzgYcweduWEijTP0ASkANl57D0PRQ==", + "peer": true, + "dependencies": { + "@types/google.maps": "*" + } + }, + "node_modules/@types/google.maps": { + "version": "3.55.4", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.4.tgz", + "integrity": "sha512-Ip3IfRs3RZjeC88V8FGnWQTQXeS5gkJedPSosN6DMi9Xs8buGTpsPq6UhREoZsGH+62VoQ6jiRBUR8R77If69w==", + "peer": true + }, + "node_modules/@types/googlemaps": { + "version": "3.43.3", + "resolved": "https://registry.npmjs.org/@types/googlemaps/-/googlemaps-3.43.3.tgz", + "integrity": "sha512-ZWNoz/O8MPEpiajvj7QiqCY8tTLFNqNZ/a+s+zTV58wFVNAvvqV4bdGfnsjTb5Cs4V6wEsLrX8XRhmnyYJ2Tdg==", + "deprecated": "Types for the Google Maps browser API have moved to @types/google.maps. Note: these types are not for the googlemaps npm package, which is a Node API.", + "peer": true + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/markerclustererplus": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/@types/markerclustererplus/-/markerclustererplus-2.1.33.tgz", + "integrity": "sha512-ZDxsLUp8BmK9MVZZeQVDDzVrEXgRL0021AQcfXqfreFhdfZ9+PS0P6o4nZBvoIVYTmGSBemdCdI6mL6hf9yWvg==", + "peer": true, + "dependencies": { + "@types/google-maps": "*" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + }, + "node_modules/@types/react": { + "version": "16.14.57", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.57.tgz", + "integrity": "sha512-fuNq/GV1a6GgqSuVuC457vYeTbm4E1CUBQVZwSPxqYnRhIzSXCJ1gGqyv+PKhqLyfbKCga9dXHJDzv+4XE41fw==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.33", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", + "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", + "integrity": "sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==", + "dev": true, + "dependencies": { + "@swc/core": "^1.3.107" + }, + "peerDependencies": { + "vite": "^4 || ^5" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" + }, + "node_modules/ajv": { + "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", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.4.tgz", + "integrity": "sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/babel-plugin-styled-components": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", + "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "lodash": "^4.17.21", + "picomatch": "^2.3.1" + }, + "peerDependencies": { + "styled-components": ">= 2" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" + }, + "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==" + }, + "node_modules/base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, + "node_modules/blueimp-canvas-to-blob": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz", + "integrity": "sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==" + }, + "node_modules/body-scroll-lock": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz", + "integrity": "sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/can-use-dom": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz", + "integrity": "sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001597", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz", + "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/change-emitter": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", + "integrity": "sha512-YXzt1cQ4a2jqazhcuSWEOc1K2q8g9H6eWNsyZgi640LDzRWVQ2eDe+Y/kVdftH+vYdPF2rgDb3dLdpxE1jvAxw==" + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" + }, + "node_modules/compressorjs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/compressorjs/-/compressorjs-1.2.1.tgz", + "integrity": "sha512-+geIjeRnPhQ+LLvvA7wxBQE5ddeLU7pJ3FsKFWirDw6veY3s9iLxAQEw7lXGHnhCJvBujEQWuNnGzZcvCvdkLQ==", + "dependencies": { + "blueimp-canvas-to-blob": "^3.29.0", + "is-blob": "^2.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.3.2.tgz", + "integrity": "sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^3.3.0" + } + }, + "node_modules/css-vendor": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", + "dependencies": { + "@babel/runtime": "^7.8.3", + "is-in-browser": "^1.0.2" + } + }, + "node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-diff": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", + "integrity": "sha512-yVn6RZmHiGnxRKR9sJb3iVV2XTF1Ghh2DiWRZ3dMnGc43yUdWWF/kX6lQyk3+P84iprfWKU/8zFTrlkvtFm1ug==" + }, + "node_modules/deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-helpers/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.701", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.701.tgz", + "integrity": "sha512-K3WPQ36bUOtXg/1+69bFlFOvdSm0/0bGqmsfPDLRXLanoKXdA+pIWuf/VbA9b+2CwBFuONgl4NEz4OEm+OJOKA==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/engine.io-client": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz", + "integrity": "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==", + "dependencies": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.6.2", + "yeast": "0.1.2" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/engine.io-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "dependencies": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.4", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "node_modules/enquire.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz", + "integrity": "sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", + "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", + "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.4", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.2", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.34.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.0.tgz", + "integrity": "sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", + "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.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", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "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 + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fbjs": { + "version": "0.8.18", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", + "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==", + "dependencies": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "node_modules/fbjs/node_modules/core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js." + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/formik": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz", + "integrity": "sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==", + "funding": [ + { + "type": "individual", + "url": "https://opencollective.com/formik" + } + ], + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.1", + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.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==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generate-password": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/generate-password/-/generate-password-1.7.1.tgz", + "integrity": "sha512-9bVYY+16m7W7GczRBDqXE+VVuCX+bWNrfYKC/2p2JkZukFb2sKxT6E3zZ3mJGz7GMe5iRK0A/WawSL3jQfJuNQ==" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/google-maps-infobox": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/google-maps-infobox/-/google-maps-infobox-2.0.0.tgz", + "integrity": "sha512-hTuWmWZZSOxf5D/z7l3/hTF1grgRvLG53BEKMdjiKOG+FcK/kH7vqseUeyIU9Zj2ZIqKTOaro0nknxpAuRq4Vw==" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dependencies": { + "isarray": "2.0.1" + } + }, + "node_modules/has-binary2/node_modules/isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" + }, + "node_modules/has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/hyphenate-style-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "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==", + "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.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "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==" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-blob": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", + "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "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-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", + "dependencies": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "peer": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "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 + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", + "dependencies": { + "string-convert": "^0.2.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jss": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "csstype": "^3.0.2", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/jss" + } + }, + "node_modules/jss-plugin-camel-case": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-default-unit": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-global": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-nested": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0", + "tiny-warning": "^1.0.2" + } + }, + "node_modules/jss-plugin-props-sort": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-rule-value-function": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0", + "tiny-warning": "^1.0.2" + } + }, + "node_modules/jss-plugin-vendor-prefixer": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.8", + "jss": "10.10.0" + } + }, + "node_modules/jss/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/just-debounce-it": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", + "integrity": "sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ==" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/marker-clusterer-plus": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/marker-clusterer-plus/-/marker-clusterer-plus-2.1.4.tgz", + "integrity": "sha512-4WLZnYCkgsUfSC0pftldd0YrLNupSqVIEdxL979f3sXVMBHTUOF3gDa6cEuOk2z8UGyVGcANiNZgvVc333mrHA==" + }, + "node_modules/markerwithlabel": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/markerwithlabel/-/markerwithlabel-2.0.2.tgz", + "integrity": "sha512-C/cbm1A0h/u54gwHk5ZJNdUU3V3+1BbCpRPMsMyFA7vF4yL+aB4rWpxACz29TpQ+cTg6/iQroExh0PMSRGtQFg==" + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "node_modules/merge-anything": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-2.4.4.tgz", + "integrity": "sha512-l5XlriUDJKQT12bH+rVhAHjwIuXWdAIecGwsYjv2LJo+dA1AeRTmeQS+3QBpO6lEthBMDi2IUMpLC1yyRvGlwQ==", + "dependencies": { + "is-what": "^3.3.1" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "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/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dependencies": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" + }, + "node_modules/parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/perfect-scrollbar": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz", + "integrity": "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/popper.js": { + "version": "1.16.1-lts", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", + "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/property-expr": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", + "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "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/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-datepicker": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-2.16.0.tgz", + "integrity": "sha512-TvcmSY27rn0JKvuJuIXNNS+niGQNdgtuG/CsBttVYhPOA9KmSw7c2PvQBPVEvzkyV+QPNJ8jN/KVJNj9uvopqA==", + "dependencies": { + "classnames": "^2.2.6", + "date-fns": "^2.0.1", + "prop-types": "^15.7.2", + "react-onclickoutside": "^6.9.0", + "react-popper": "^1.3.4" + }, + "peerDependencies": { + "react": "^16.9.0", + "react-dom": "^16.9.0" + } + }, + "node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + }, + "node_modules/react-google-maps": { + "version": "9.4.5", + "resolved": "https://registry.npmjs.org/react-google-maps/-/react-google-maps-9.4.5.tgz", + "integrity": "sha512-8z5nX9DxIcBCXuEiurmRT1VXVwnzx0C6+3Es6lxB2/OyY2SLax2/LcDu6Aldxnl3HegefTL7NJzGeaKAJ61pOA==", + "dependencies": { + "babel-runtime": "^6.11.6", + "can-use-dom": "^0.1.0", + "google-maps-infobox": "^2.0.0", + "invariant": "^2.2.1", + "lodash": "^4.16.2", + "marker-clusterer-plus": "^2.1.4", + "markerwithlabel": "^2.0.1", + "prop-types": "^15.5.8", + "recompose": "^0.26.0", + "scriptjs": "^2.5.8", + "warning": "^3.0.0" + }, + "peerDependencies": { + "@types/googlemaps": "^3.0.0", + "@types/markerclustererplus": "^2.1.29", + "@types/react": "^15.0.0 || ^16.0.0", + "react": "^15.0.0 || ^16.0.0", + "react-dom": "^15.0.0 || ^16.0.0" + } + }, + "node_modules/react-google-maps/node_modules/hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, + "node_modules/react-google-maps/node_modules/recompose": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz", + "integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==", + "dependencies": { + "change-emitter": "^0.1.2", + "fbjs": "^0.8.1", + "hoist-non-react-statics": "^2.3.1", + "symbol-observable": "^1.0.4" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-onclickoutside": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", + "integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==", + "funding": { + "type": "individual", + "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" + }, + "peerDependencies": { + "react": "^15.5.x || ^16.x || ^17.x || ^18.x", + "react-dom": "^15.5.x || ^16.x || ^17.x || ^18.x" + } + }, + "node_modules/react-perfect-scrollbar": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz", + "integrity": "sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==", + "dependencies": { + "perfect-scrollbar": "^1.5.0", + "prop-types": "^15.6.1" + }, + "peerDependencies": { + "react": ">=16.3.3", + "react-dom": ">=16.3.3" + } + }, + "node_modules/react-places-autocomplete": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/react-places-autocomplete/-/react-places-autocomplete-7.3.0.tgz", + "integrity": "sha512-86wcHC69JATvWBnIS/yCsBHLtwzOGcnx3Ye94u74yTrz1jLRC/txkVDkf6rvC+Jq3zNe/tAg/W53x0EaH1ZPPw==", + "dependencies": { + "lodash.debounce": "^4.0.8", + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": ">=0.14.7" + } + }, + "node_modules/react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + }, + "peerDependencies": { + "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/react-popper/node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/react-popper/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/react-redux": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "react": "^16.8.3 || ^17 || ^18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-slick": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.25.2.tgz", + "integrity": "sha512-8MNH/NFX/R7zF6W/w+FS5VXNyDusF+XDW1OU0SzODEU7wqYB+ZTGAiNJ++zVNAVqCAHdyCybScaUB+FCZOmBBw==", + "dependencies": { + "classnames": "^2.2.5", + "enquire.js": "^2.1.6", + "json2mq": "^0.2.0", + "lodash.debounce": "^4.0.8", + "resize-observer-polyfill": "^1.5.0" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.1 || ^16.0.0", + "react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/recompose": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz", + "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "change-emitter": "^0.1.2", + "fbjs": "^0.8.1", + "hoist-non-react-statics": "^2.3.1", + "react-lifecycles-compat": "^3.0.2", + "symbol-observable": "^1.0.4" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/recompose/node_modules/hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, + "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-logger": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-3.0.6.tgz", + "integrity": "sha512-JoCIok7bg/XpqA1JqCqXFypuqBbQzGQySrhFzewB7ThcnysTO30l4VCst86AuB9T9tuT03MAA56Jw2PNhRSNCg==", + "dependencies": { + "deep-diff": "^0.3.5" + } + }, + "node_modules/redux-persist": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", + "peerDependencies": { + "redux": ">4.0.0" + } + }, + "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/reflect.getprototypeof": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", + "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0", + "get-intrinsic": "^1.2.3", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.1.tgz", + "integrity": "sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.12.1", + "@rollup/rollup-android-arm64": "4.12.1", + "@rollup/rollup-darwin-arm64": "4.12.1", + "@rollup/rollup-darwin-x64": "4.12.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.12.1", + "@rollup/rollup-linux-arm64-gnu": "4.12.1", + "@rollup/rollup-linux-arm64-musl": "4.12.1", + "@rollup/rollup-linux-riscv64-gnu": "4.12.1", + "@rollup/rollup-linux-x64-gnu": "4.12.1", + "@rollup/rollup-linux-x64-musl": "4.12.1", + "@rollup/rollup-win32-arm64-msvc": "4.12.1", + "@rollup/rollup-win32-ia32-msvc": "4.12.1", + "@rollup/rollup-win32-x64-msvc": "4.12.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/scriptjs": { + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz", + "integrity": "sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slick-carousel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz", + "integrity": "sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==", + "peerDependencies": { + "jquery": ">=1.8.0" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/socket.io-client": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz", + "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==", + "dependencies": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "engine.io-client": "~3.5.0", + "has-binary2": "~1.0.2", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/socket.io-client/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/socket.io-parser": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz", + "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==", + "dependencies": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-explorer": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.5.3.tgz", + "integrity": "sha512-qfUGs7UHsOBE5p/lGfQdaAj/5U/GWYBw2imEpD6UQNkqElYonkow8t+HBL1qqIl3CuGZx7n8/CQo4x1HwSHhsg==", + "dependencies": { + "btoa": "^1.2.1", + "chalk": "^4.1.0", + "convert-source-map": "^1.7.0", + "ejs": "^3.1.5", + "escape-html": "^1.0.3", + "glob": "^7.1.6", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "open": "^7.3.1", + "source-map": "^0.7.4", + "temp": "^0.9.4", + "yargs": "^16.2.0" + }, + "bin": { + "sme": "bin/cli.js", + "source-map-explorer": "bin/cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-convert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", + "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-components": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-4.4.1.tgz", + "integrity": "sha512-RNqj14kYzw++6Sr38n7197xG33ipEOktGElty4I70IKzQF1jzaD1U4xQ+Ny/i03UUhHlC5NWEO+d8olRCDji6g==", + "hasInstallScript": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@emotion/is-prop-valid": "^0.8.1", + "@emotion/unitless": "^0.7.0", + "babel-plugin-styled-components": ">= 1", + "css-to-react-native": "^2.2.2", + "memoize-one": "^5.0.0", + "merge-anything": "^2.2.4", + "prop-types": "^15.5.4", + "react-is": "^16.6.0", + "stylis": "^3.5.0", + "stylis-rule-sheet": "^0.0.10", + "supports-color": "^5.5.0" + }, + "peerDependencies": { + "react": ">= 16.3.0", + "react-dom": ">= 16.3.0" + } + }, + "node_modules/styled-components/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/styled-components/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/styled-components/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/stylis": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", + "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" + }, + "node_modules/stylis-rule-sheet": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", + "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==", + "peerDependencies": { + "stylis": "^3.5.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/synchronous-promise": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", + "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==" + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" + }, + "node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "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" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "node_modules/vite": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", + "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==", + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-svgr": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz", + "integrity": "sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==", + "dependencies": { + "@rollup/pluginutils": "^5.0.5", + "@svgr/core": "^8.1.0", + "@svgr/plugin-jsx": "^8.1.0" + }, + "peerDependencies": { + "vite": "^2.6.0 || 3 || 4 || 5" + } + }, + "node_modules/warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "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==" + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yup": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.27.0.tgz", + "integrity": "sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "fn-name": "~2.0.1", + "lodash": "^4.17.11", + "property-expr": "^1.5.0", + "synchronous-promise": "^2.0.6", + "toposort": "^2.0.2" + } + } + } +} diff --git a/client/package.json b/client/package.json new file mode 100644 index 0000000..112a1c1 --- /dev/null +++ b/client/package.json @@ -0,0 +1,53 @@ +{ + "name": "cornlet-vite", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@material-ui/core": "^4.11.0", + "@material-ui/icons": "^4.11.2", + "@material-ui/lab": "^4.0.0-alpha.56", + "axios": "^0.21.2", + "body-scroll-lock": "^3.0.2", + "compressorjs": "^1.0.6", + "formik": "^2.0.3", + "generate-password": "^1.4.2", + "just-debounce-it": "^3.0.1", + "react": "^16.10.2", + "react-datepicker": "^2.14.0", + "react-dom": "^16.10.2", + "react-google-maps": "^9.4.5", + "react-perfect-scrollbar": "^1.5.8", + "react-places-autocomplete": "^7.2.1", + "react-redux": "^7.1.1", + "react-router-dom": "^5.1.2", + "react-slick": "^0.25.2", + "recompose": "^0.30.0", + "redux": "^4.0.4", + "redux-logger": "^3.0.6", + "redux-persist": "^6.0.0", + "redux-thunk": "^2.3.0", + "slick-carousel": "^1.8.1", + "socket.io-client": "^2.3.0", + "source-map-explorer": "^2.4.2", + "styled-components": "^4.4.1", + "typescript": "^3.6.4", + "vite-plugin-svgr": "^4.2.0", + "yup": "^0.27.0" + }, + "devDependencies": { + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.57.0", + "eslint-plugin-react": "^7.34.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "prettier": "2.4.1", + "vite": "^5.1.6" + } +} diff --git a/client-cra-legacy/public/icon.svg b/client/public/icon.svg similarity index 100% rename from client-cra-legacy/public/icon.svg rename to client/public/icon.svg diff --git a/client/public/vite.svg b/client/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/client/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/App.jsx b/client/src/App.jsx new file mode 100644 index 0000000..4df4e9d --- /dev/null +++ b/client/src/App.jsx @@ -0,0 +1,35 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( + <> +
+ + Vite logo + + + React logo + +
+

Vite + React

+
+ +

+ Edit src/App.jsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+ + ) +} + +export default App diff --git a/client/src/assets/illustrations/no-bookmarks.svg b/client/src/assets/illustrations/no-bookmarks.svg new file mode 100644 index 0000000..4149f43 --- /dev/null +++ b/client/src/assets/illustrations/no-bookmarks.svg @@ -0,0 +1 @@ +collecting \ No newline at end of file diff --git a/client/src/assets/illustrations/no-chatrooms.svg b/client/src/assets/illustrations/no-chatrooms.svg new file mode 100644 index 0000000..5865076 --- /dev/null +++ b/client/src/assets/illustrations/no-chatrooms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/illustrations/no-listings.svg b/client/src/assets/illustrations/no-listings.svg new file mode 100644 index 0000000..9bbb808 --- /dev/null +++ b/client/src/assets/illustrations/no-listings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/aircon.svg b/client/src/assets/svgs/aircon.svg new file mode 100644 index 0000000..a49038f --- /dev/null +++ b/client/src/assets/svgs/aircon.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/avatar.svg b/client/src/assets/svgs/avatar.svg new file mode 100644 index 0000000..5d2e824 --- /dev/null +++ b/client/src/assets/svgs/avatar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/bathroom.svg b/client/src/assets/svgs/bathroom.svg new file mode 100644 index 0000000..8306c04 --- /dev/null +++ b/client/src/assets/svgs/bathroom.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/bed-outlined.svg b/client/src/assets/svgs/bed-outlined.svg new file mode 100644 index 0000000..60f3feb --- /dev/null +++ b/client/src/assets/svgs/bed-outlined.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/bed.svg b/client/src/assets/svgs/bed.svg new file mode 100644 index 0000000..d5f1665 --- /dev/null +++ b/client/src/assets/svgs/bed.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/bedroom.svg b/client/src/assets/svgs/bedroom.svg new file mode 100644 index 0000000..025cdaa --- /dev/null +++ b/client/src/assets/svgs/bedroom.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/bin.svg b/client/src/assets/svgs/bin.svg new file mode 100644 index 0000000..eb198c0 --- /dev/null +++ b/client/src/assets/svgs/bin.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/bookmark-filled.svg b/client/src/assets/svgs/bookmark-filled.svg new file mode 100644 index 0000000..64808bc --- /dev/null +++ b/client/src/assets/svgs/bookmark-filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/bookmark.svg b/client/src/assets/svgs/bookmark.svg new file mode 100644 index 0000000..f854d09 --- /dev/null +++ b/client/src/assets/svgs/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/burger.svg b/client/src/assets/svgs/burger.svg new file mode 100644 index 0000000..bba19aa --- /dev/null +++ b/client/src/assets/svgs/burger.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/bus.svg b/client/src/assets/svgs/bus.svg new file mode 100644 index 0000000..768ba4a --- /dev/null +++ b/client/src/assets/svgs/bus.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/calendar.svg b/client/src/assets/svgs/calendar.svg new file mode 100644 index 0000000..06b2c0c --- /dev/null +++ b/client/src/assets/svgs/calendar.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/car.svg b/client/src/assets/svgs/car.svg new file mode 100644 index 0000000..77d7f9a --- /dev/null +++ b/client/src/assets/svgs/car.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/chat-square.svg b/client/src/assets/svgs/chat-square.svg new file mode 100644 index 0000000..1027e73 --- /dev/null +++ b/client/src/assets/svgs/chat-square.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/chat.svg b/client/src/assets/svgs/chat.svg new file mode 100644 index 0000000..7a52b67 --- /dev/null +++ b/client/src/assets/svgs/chat.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/close-material.svg b/client/src/assets/svgs/close-material.svg new file mode 100644 index 0000000..b06273c --- /dev/null +++ b/client/src/assets/svgs/close-material.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/close.svg b/client/src/assets/svgs/close.svg new file mode 100644 index 0000000..c5e795d --- /dev/null +++ b/client/src/assets/svgs/close.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/down.svg b/client/src/assets/svgs/down.svg new file mode 100644 index 0000000..bcccf7a --- /dev/null +++ b/client/src/assets/svgs/down.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/eye.svg b/client/src/assets/svgs/eye.svg new file mode 100644 index 0000000..cf22164 --- /dev/null +++ b/client/src/assets/svgs/eye.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/face.svg b/client/src/assets/svgs/face.svg new file mode 100644 index 0000000..4c33970 --- /dev/null +++ b/client/src/assets/svgs/face.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/filter.svg b/client/src/assets/svgs/filter.svg new file mode 100644 index 0000000..7fb071d --- /dev/null +++ b/client/src/assets/svgs/filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/google.svg b/client/src/assets/svgs/google.svg new file mode 100644 index 0000000..ee96cf2 --- /dev/null +++ b/client/src/assets/svgs/google.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/gym.svg b/client/src/assets/svgs/gym.svg new file mode 100644 index 0000000..641c434 --- /dev/null +++ b/client/src/assets/svgs/gym.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/heater.svg b/client/src/assets/svgs/heater.svg new file mode 100644 index 0000000..49f4d2b --- /dev/null +++ b/client/src/assets/svgs/heater.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/house.svg b/client/src/assets/svgs/house.svg new file mode 100644 index 0000000..1aeda7c --- /dev/null +++ b/client/src/assets/svgs/house.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/left-arrow.svg b/client/src/assets/svgs/left-arrow.svg new file mode 100644 index 0000000..a7fb6cc --- /dev/null +++ b/client/src/assets/svgs/left-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/left.svg b/client/src/assets/svgs/left.svg new file mode 100644 index 0000000..ba563de --- /dev/null +++ b/client/src/assets/svgs/left.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/lock.svg b/client/src/assets/svgs/lock.svg new file mode 100644 index 0000000..4aa5cb0 --- /dev/null +++ b/client/src/assets/svgs/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/logo.svg b/client/src/assets/svgs/logo.svg new file mode 100644 index 0000000..9c8ff6f --- /dev/null +++ b/client/src/assets/svgs/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/client/src/assets/svgs/mail.svg b/client/src/assets/svgs/mail.svg new file mode 100644 index 0000000..f58af0b --- /dev/null +++ b/client/src/assets/svgs/mail.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/money.svg b/client/src/assets/svgs/money.svg new file mode 100644 index 0000000..4935a81 --- /dev/null +++ b/client/src/assets/svgs/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/pencil.svg b/client/src/assets/svgs/pencil.svg new file mode 100644 index 0000000..02ee5e5 --- /dev/null +++ b/client/src/assets/svgs/pencil.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/person.svg b/client/src/assets/svgs/person.svg new file mode 100644 index 0000000..4c5d69a --- /dev/null +++ b/client/src/assets/svgs/person.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/place.svg b/client/src/assets/svgs/place.svg new file mode 100644 index 0000000..79b61d6 --- /dev/null +++ b/client/src/assets/svgs/place.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/plus.svg b/client/src/assets/svgs/plus.svg new file mode 100644 index 0000000..a95d191 --- /dev/null +++ b/client/src/assets/svgs/plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/profile.svg b/client/src/assets/svgs/profile.svg new file mode 100644 index 0000000..320c96a --- /dev/null +++ b/client/src/assets/svgs/profile.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/search.svg b/client/src/assets/svgs/search.svg new file mode 100644 index 0000000..97e6385 --- /dev/null +++ b/client/src/assets/svgs/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/shower-outlined.svg b/client/src/assets/svgs/shower-outlined.svg new file mode 100644 index 0000000..c5313fd --- /dev/null +++ b/client/src/assets/svgs/shower-outlined.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/assets/svgs/snowflake.svg b/client/src/assets/svgs/snowflake.svg new file mode 100644 index 0000000..95482dd --- /dev/null +++ b/client/src/assets/svgs/snowflake.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/sofa.svg b/client/src/assets/svgs/sofa.svg new file mode 100644 index 0000000..7eff149 --- /dev/null +++ b/client/src/assets/svgs/sofa.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/up.svg b/client/src/assets/svgs/up.svg new file mode 100644 index 0000000..b7a274f --- /dev/null +++ b/client/src/assets/svgs/up.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/utilities.svg b/client/src/assets/svgs/utilities.svg new file mode 100644 index 0000000..2fa6542 --- /dev/null +++ b/client/src/assets/svgs/utilities.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/assets/svgs/walk.svg b/client/src/assets/svgs/walk.svg new file mode 100644 index 0000000..fdc7075 --- /dev/null +++ b/client/src/assets/svgs/walk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/warning.svg b/client/src/assets/svgs/warning.svg new file mode 100644 index 0000000..f164a1f --- /dev/null +++ b/client/src/assets/svgs/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/assets/svgs/wifi.svg b/client/src/assets/svgs/wifi.svg new file mode 100644 index 0000000..e30b447 --- /dev/null +++ b/client/src/assets/svgs/wifi.svg @@ -0,0 +1,3 @@ + + + diff --git a/client/src/components/buttons/Auth.jsx b/client/src/components/buttons/Auth.jsx new file mode 100644 index 0000000..b7658d5 --- /dev/null +++ b/client/src/components/buttons/Auth.jsx @@ -0,0 +1,42 @@ +import React from 'react'; +import styled from 'styled-components'; +import { ReactComponent as Google } from 'src/assets/svgs/google.svg'; +import Avatar from 'src/components/displays/Avatar'; +import { useDispatch, useSelector } from 'react-redux'; +import Loading from 'src/components/displays/Loading'; +import signin from 'src/util/helpers/signin'; +import Body from '../fonts/Body'; + +const SignIn = styled(Google)` + height: 30px; + width: 30px + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + background: white; + padding: .5rem; + border-radius: 5px; + cursor: pointer; +`; + +const Container = styled.div` + +`; + +const Auth = ({ border }) => { + const user = useSelector((state) => state.user); + + if (user) { + return ( + + ); + } + + return ( + Sign in + ); +}; + +export default Auth; diff --git a/client/src/components/buttons/BmBtn.jsx b/client/src/components/buttons/BmBtn.jsx new file mode 100644 index 0000000..7bbf585 --- /dev/null +++ b/client/src/components/buttons/BmBtn.jsx @@ -0,0 +1,118 @@ +import React from 'react' +import styled from 'styled-components' +import { useSelector, useDispatch } from 'react-redux' +import api from 'src/util/api' +import log from 'src/util/log' +import { ReactComponent as BmUnfilledRaw } from 'src/assets/svgs/bookmark.svg' +import { ReactComponent as BmFilledRaw } from 'src/assets/svgs/bookmark-filled.svg' +import { ReactComponent as UnfilledBmIcon } from 'src/assets/svgs/bookmark.svg' +import { ReactComponent as FilledBmIcon } from 'src/assets/svgs/bookmark-filled.svg' +import ClickableIcon from '../displays/ClickableIcon' +import useIsDesktop from 'src/util/hooks/useIsDesktop' + +const BmBtn = ({ listing, forceDesktopSize }) => { + const bm = useSelector((state) => state.bm) + const user = useSelector((state) => state.user) + const isDesktop = useIsDesktop() + + let isBmed = false + if (user) { + isBmed = + user.bm && + user.bm.listings && + user.bm.listings.filter((bmedListing) => bmedListing._id === listing._id).length !== 0 + } else { + isBmed = + bm && + bm.listings && + bm.listings.filter((bmedListing) => bmedListing._id === listing._id).length !== 0 + } + + const dispatch = useDispatch() + const toggleBm = async () => { + try { + const addListingToBm = !isBmed + const type = addListingToBm ? 'BM_ADD' : 'BM_REMOVE' + + if (!user) { + // redux: bm + dispatch({ + type, + payload: listing, + }) + } else { + // redux: user.bm + dispatch({ + type: `USER_${type}`, + payload: listing, + }) + + // DB + if (addListingToBm) { + await api + .put(`/user/${user._id}/bm/add/${listing._id}`) + .catch(({ response }) => log('BmBtn', response)) + } else { + await api + .put(`/user/${user._id}/bm/remove/${listing._id}`) + .catch(({ response }) => log('BmBtn', response)) + } + } + } catch (e) { + log('BmBtn', e) + } + } + + return ( + + {isBmed ? ( + + + + ) : ( + + + + )} + + ) +} + +const Container = styled.div` + border-radius: 50%; + cursor: pointer; + z-index: 49; +` + +const StyledUnfilledBmIcon = styled(UnfilledBmIcon)` + height: 1rem; + width: 1rem; + cursor: pointer; + + /* forceDesktopSize */ + height: ${(props) => props.forceDesktopSize && '1.5rem'}; + width: ${(props) => props.forceDesktopSize && '1.5rem'}; + + @media (min-width: ${(props) => props.theme.md}px) { + height: 1.5rem; + width: 1.5rem; + } +` + +const StyledFilledBmIcon = styled(FilledBmIcon)` + height: 1rem; + width: 1rem; + cursor: pointer; + fill: ${(props) => props.theme.brand500}; + + /* forceDesktopSize */ + height: ${(props) => props.forceDesktopSize && '1.5rem'}; + width: ${(props) => props.forceDesktopSize && '1.5rem'}; + + @media (min-width: ${(props) => props.theme.md}px) { + height: 1.5rem; + width: 1.5rem; + } +` + +export default BmBtn diff --git a/client/src/components/buttons/Btn.jsx b/client/src/components/buttons/Btn.jsx new file mode 100644 index 0000000..1738383 --- /dev/null +++ b/client/src/components/buttons/Btn.jsx @@ -0,0 +1,39 @@ +import React from 'react' +import styled from 'styled-components' + +const Btn = ({ children, color, inverted, type, ...rest }) => ( + +) + +const Button = styled.button` + display: flex; + align-items: center; + justify-content: center; + padding: 0.6rem 0.9rem; + + font-size: 0.9rem; + font-weight: 500; + + border-radius: 8px; + box-shadow: ${(props) => props.theme.shadow}; + background: ${(props) => props.theme.brand[500]}; + color: white; + letter-spacing: 0.6px; + + @media (min-width: ${(props) => props.theme.md}px) { + padding: 0.5rem 0.8rem; + } + + // fullWidth + width: ${(props) => props.fullWidth && '100%'}; + + // background + background: ${(props) => props.background && props.background}; + + // disabled + background: ${(props) => props.disabled && props.theme.grey[400]}; +` + +export default Btn diff --git a/client/src/components/buttons/CircleCross.jsx b/client/src/components/buttons/CircleCross.jsx new file mode 100644 index 0000000..db55f6d --- /dev/null +++ b/client/src/components/buttons/CircleCross.jsx @@ -0,0 +1,39 @@ +import React from 'react'; +import styled from 'styled-components'; +import { ReactComponent as CrossRaw } from 'src/assets/svgs/close.svg'; + +const Container = styled.div` + background: white; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 50%; + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + cursor: pointer; + + width: 24px; + height: 24px; + + display: flex; + justify-content: center; + align-items: center; + + flex-grow: 0; + flex-shrink: 0; +`; + +const Cross = styled(CrossRaw)` + height: 10px; + width: 10px; + opacity: .6; + + &:hover { + opacity: .9; + } +`; + +const CircleCross = (props) => ( + + + +); + +export default CircleCross; diff --git a/client/src/components/buttons/InvertedBtn.jsx b/client/src/components/buttons/InvertedBtn.jsx new file mode 100644 index 0000000..1092cda --- /dev/null +++ b/client/src/components/buttons/InvertedBtn.jsx @@ -0,0 +1,15 @@ +import Btn from './Btn'; +import styled from 'styled-components'; + +const InvertedBtn = styled(Btn)` + color: ${props => props.theme.text}; + border-color: ${props => props.theme.text}; + background: white; + border: 1px solid ${props => props.theme.border.default}; + + // color + color: ${props => props.color && props.color}; + border-color: ${props => props.color && props.color}; +`; + +export default InvertedBtn diff --git a/client/src/components/buttons/LinedBtn.jsx b/client/src/components/buttons/LinedBtn.jsx new file mode 100644 index 0000000..906aec7 --- /dev/null +++ b/client/src/components/buttons/LinedBtn.jsx @@ -0,0 +1,18 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Button = styled.button` + border-radius: 8px; + border: solid 1px #a8a29b; + background: none; + color: #808d87; + padding: .8rem 1rem; +`; + +const OutlinedButton = (props) => ( + +); + +export default OutlinedButton; diff --git a/client/src/components/buttons/PaginationBtns.jsx b/client/src/components/buttons/PaginationBtns.jsx new file mode 100644 index 0000000..7fbfa85 --- /dev/null +++ b/client/src/components/buttons/PaginationBtns.jsx @@ -0,0 +1,31 @@ +import React from 'react'; +import styled from 'styled-components'; +import useRouter from 'src/util/hooks/useRouter'; +import Pagination from '@material-ui/lab/Pagination'; + +const Container = styled.div` + width: 100%; + display: flex; + justify-content: center; + margin: 2rem 0; +`; + +const PaginationBtns = ({ totalPages, page }) => { + const pages = []; + for (let i = 1; i <= totalPages; i++) { + pages.push(i); + } + + const router = useRouter(); + const handleChange = (e, v) => { + router.updateQuery({ page: v }); + }; + + return ( + + + + ) +}; + +export default PaginationBtns; diff --git a/client/src/components/buttons/PopupButton/Btn.jsx b/client/src/components/buttons/PopupButton/Btn.jsx new file mode 100644 index 0000000..8ed553c --- /dev/null +++ b/client/src/components/buttons/PopupButton/Btn.jsx @@ -0,0 +1,31 @@ +import React, { useState, useEffect } from 'react'; +import styled from 'styled-components'; +import theme from 'src/theme'; + +const Container = styled.div` + cursor: pointer; + text-align: center; + border: 1px solid ${(props) => (props.active ? theme.green : 'rgb(176, 176, 176)')}; + outline: currentcolor none medium; + margin: 0 .2rem; + background-color: rgb(255, 255, 255); + border-radius: 30px; + color: ${(props) => (props.active ? theme.green : 'black')}; + position: relative; + padding: .5rem 1rem; + font-size: .6rem; +`; + +const Btn = ({ children, active, ...rest }) => { + const [highlight, setHighlight] = useState(false); + useEffect(() => { + if (active) setHighlight(true); + }, [active]); + return ( + + {children} + + ); +}; + +export default Btn; diff --git a/client/src/components/buttons/PopupButton/Popup.jsx b/client/src/components/buttons/PopupButton/Popup.jsx new file mode 100644 index 0000000..c00eba4 --- /dev/null +++ b/client/src/components/buttons/PopupButton/Popup.jsx @@ -0,0 +1,36 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.div` + position: absolute; + display: inline-block; + left: 0px; + top: 2rem; + z-index: 10; + background: + rgb(255, 255, 255) none repeat scroll 0% 0%; + border: 0.5px solid + rgba(118, 118, 118, 0.28); + border-radius: 12px; + box-shadow: + rgba(0, 0, 0, 0.15) 0px 10px 37px; + max-width: 80vw; + overflow: auto; + max-height: calc(-152px + 100vh); + visibility: visible; + padding: 1rem 2rem; +`; + +const Label = styled.div` + font-weight: bold; + color: ${(props) => props.theme.green}; +`; + +const Popup = ({ content, label, ...rest }) => ( + + + {content} + +); + +export default Popup; diff --git a/client/src/components/buttons/PopupButton/index.jsx b/client/src/components/buttons/PopupButton/index.jsx new file mode 100644 index 0000000..0837f10 --- /dev/null +++ b/client/src/components/buttons/PopupButton/index.jsx @@ -0,0 +1,29 @@ +import React from 'react'; +import styled from 'styled-components'; +import Btn from './Btn'; +import Popup from './Popup'; + +const Container = styled.div` + display: inline-block; + position: relative; +`; + +const PopupButton = ({ + popupContent, btnText, label, active, setActive, +}) => { + const handleClick = () => setActive(!active); + + return ( + + + {btnText} + + {active && } + + ); +}; + +export default PopupButton; diff --git a/client/src/components/buttons/TextBtn.jsx b/client/src/components/buttons/TextBtn.jsx new file mode 100644 index 0000000..1bf7b13 --- /dev/null +++ b/client/src/components/buttons/TextBtn.jsx @@ -0,0 +1,28 @@ +import React from 'react' +import styled from 'styled-components' + +const TextBtn = ({ children, ...rest }) => { + return {children} +} + +const StyledTextBtn = styled.button` + font-weight: 500; + font-size: 0.9rem; + + color: ${(props) => props.theme.brand[500]}; + background: ${(props) => props.theme.brand[25]}; + + padding: 0.6rem 0.9rem; + border-radius: 8px; + + // colorHex + color: ${(props) => props.colorHex && props.colorHex}; + + @media (min-width: ${(props) => props.theme.md}px) { + &:hover { + background: ${(props) => props.theme.brand[50]}; + } + } +` + +export default TextBtn diff --git a/client/src/components/cards/ListingCard/index.jsx b/client/src/components/cards/ListingCard/index.jsx new file mode 100644 index 0000000..3fa4dab --- /dev/null +++ b/client/src/components/cards/ListingCard/index.jsx @@ -0,0 +1,227 @@ +import FormControlLabel from '@material-ui/core/FormControlLabel' +import Switch from '@material-ui/core/Switch' +import React, { useEffect, useState } from 'react' +import { Link } from 'react-router-dom' +import { ReactComponent as BinRaw } from 'src/assets/svgs/bin.svg' +import { ReactComponent as PencilRaw } from 'src/assets/svgs/pencil.svg' +import BmBtn from 'src/components/buttons/BmBtn' +import Btn from 'src/components/buttons/Btn' +import TextBtn from 'src/components/buttons/TextBtn' +import Body from 'src/components/fonts/Body' +import ListingInfo from 'src/components/fonts/ListingInfo' +import Text from 'src/components/fonts/Text' +import { FlexRow } from 'src/components/layouts/Flex' +import Space from 'src/components/layouts/Space' +import Modal from 'src/components/views/Modal' +import theme from 'src/theme' +import api from 'src/util/api' +import getShortAddr from 'src/util/helpers/getShortAddr' +import log from 'src/util/log' +import styled from 'styled-components' + +const ListingCard = ({ listing, edit, reload }) => { + const { _id, addr, imgs, sold, active, thumbnailIdx, availRooms } = listing + const editPath = edit ? `/listing/${_id}/edit` : `/listing/${_id}` + const listingPath = `/listing/${_id}` + + // active toggling + const [activeLocal, setActiveLocal] = useState(true) + + useEffect(() => { + setActiveLocal(active) + }, [active]) + + const handleChange = () => { + setActiveLocal(!activeLocal) + api + .put(`/listing/${_id}/update`, { active: !activeLocal }) + .catch((e) => log('ERROR ListingCard', e)) + } + + // handle delete + const [deleteModal, setDeleteModal] = useState(false) + const handleClose = () => { + setDeleteModal(false) + } + const handleDelete = () => { + api + .put(`/listing/${_id}/update`, { active: false, deleted: true }) + .then(() => { + handleClose() + reload() + }) + .catch((e) => log('ERROR ListingCard', e)) + } + const handleDeactivate = () => { + setActiveLocal(false) + handleClose() + api.put(`/listing/${_id}/update`, { active: false }).catch((e) => log('ERROR ListingCard', e)) + } + + return ( + + {!edit && ( + + + + )} + + + cornlet listing property photos for cornell + + + {edit ? ( + + {getShortAddr(addr)} + + ) : ( + + )} + + + {/* edit tools for listing owner */} + {edit && ( + + + } + label={activeLocal ? 'Active' : 'Inactive'} + /> + + + + + setDeleteModal(true)} /> + + + )} + + {/* delete modal */} + + + Are you sure you wish to delete your listing? + Deleted data cannot be recovered. + You can temporarily deactivate the listing + if you wish to use it again in the future. + + + + Delete + + + + Deactivate + + + + + + ) +} + +const Container = styled.div` + width: 90vw; + padding: 1rem 0.5rem; + position: relative; + overflow: hidden; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 25%; + } +` + +const CornerBtn = styled.div` + position: absolute; + top: 1.5rem; + right: 1rem; + z-index: 2; + cursor: pointer; +` + +const ImgContainer = styled.div` + width: 100%; + position: relative; + padding-bottom: 70%; + border-radius: 10px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + overflow: hidden; + + @media (min-width: ${(props) => props.theme.md}px) { + transition: box-shadow 0.2s ease-in-out; + &:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.8); + } + } +` + +const Img = styled.img` + object-fit: cover; + width: 100%; + height: 100%; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + // hide alt text + color: rgba(0, 0, 0, 0) !important; + + // faded + opacity: ${(props) => (props.faded ? '.5' : '')}; +` + +const EditTools = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 0.5rem; + padding: 0 0.2rem; +` + +const RightSection = styled.div` + display: flex; + + & > * { + margin-left: 0.5rem; + } +` + +const Pencil = styled(PencilRaw)` + height: 1rem; + width: 1rem; + cursor: pointer; + opacity: 0.7; + + &:hover { + opacity: 1; + } +` + +const Bin = styled(BinRaw)` + height: 1rem; + width: 1rem; + cursor: pointer; + opacity: 0.7; + + &:hover { + opacity: 1; + } +` + +export const ModalContainer = styled.div` + display: flex; + flex-direction: column; + align-items: flex-start; + + & p:nth-child(2n-1) { + margin-top: 1rem; + } +` + +export default ListingCard diff --git a/client/src/components/cards/ListingCardV2.jsx b/client/src/components/cards/ListingCardV2.jsx new file mode 100644 index 0000000..186d5d4 --- /dev/null +++ b/client/src/components/cards/ListingCardV2.jsx @@ -0,0 +1,212 @@ +import React, { useEffect, useState } from 'react' +import { Link } from 'react-router-dom' +import BmBtn from 'src/components/buttons/BmBtn' +import Space from 'src/components/layouts/Space' +import theme from 'src/theme' +import api from 'src/util/api' +import formatListingDesc from 'src/util/helpers/formatListingDesc' +import getDateString from 'src/util/helpers/getDateString' +import getFromNowDate from 'src/util/helpers/getFromNowDate' +import useFilters from 'src/util/hooks/useFilters' +import useIsMobile from 'src/util/hooks/useIsMobile' +import styled from 'styled-components' +import BadgeV2 from '../displays/BadgeV2' +import ListingLocation from '../displays/ListingLocation' +import Searchers from '../displays/Searchers' +import Body from '../fonts/Body' +import Text from '../fonts/Text' +import { FlexRow } from '../layouts/Flex' + +const ListingCardV2 = ({ listing }) => { + const [searchers, setSearchers] = useState([]) + const isMobile = useIsMobile() + + useEffect(() => { + if (listing._id) { + api.get(`/chatroom/listing/searchers/${listing._id}`).then((res) => { + setSearchers(res.data) + }) + } + }, [listing._id]) + + return ( + + + + + + + + + + + +
+ + {formatListingDesc(listing)} + +
+ {listing.sold ? ( + + ) : ( + + )} +
+ + + +
+ + + + Updated {getFromNowDate(listing.updatedAt)} + + + + ${listing.price}{' '} + / month + + +
+
+ +
+ ) +} + +const Wrapper = styled.div` + position: relative; +` + +const Container = styled.div` + width: 90vw; + padding: 1rem 0; + position: relative; + overflow: hidden; + display: flex; + align-items: flex-start; + border-radius: 20px; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 100%; + transition: background-color 0.2s ease-in-out; + padding: 1rem; + + &:hover { + background-color: ${(props) => props.theme.grey[50]}; + } + } +` + +const CornerBtnContainer = styled.div` + position: absolute; + top: 0.8rem; + right: 0rem; + z-index: 2; + cursor: pointer; + + @media (min-width: ${(props) => props.theme.md}px) { + right: 1.5rem; + } +` + +const ImgContainer = styled.div` + position: relative; + width: 120px; + height: 120px; + border-radius: 10px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + overflow: hidden; + flex-grow: 0; + flex-shrink: 0; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 280px; + height: 180px; + } +` + +const Img = styled.img` + object-fit: cover; + width: 100%; + height: 100%; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + // hide alt text + color: rgba(0, 0, 0, 0) !important; + + // faded + opacity: ${(props) => (props.faded ? '.5' : '')}; +` + +const Title = styled.h3` + white-space: nowrap; + flex-grow: 0; + text-overflow: ellipsis; + overflow: hidden; + margin-right: 0.5rem; + font-size: 1.1rem; + font-weight: 500; + + @media (min-width: ${(props) => props.theme.md}px) { + font-size: 1.5rem; + } +` + +const OverlineContainer = styled.div` + margin-bottom: 0.4rem; + display: flex; + align-items: center; +` + +const Overline = styled.span` + margin-left: 0.5rem; + color: ${(props) => props.theme.textMuted}; + font-weight: 500; + font-size: 0.9rem; +` + +const SearchersContainer = styled.div` + padding: 0.5rem 0 1rem 0; +` + +const Price = styled(Body)` + @media (min-width: ${(props) => props.theme.md}px) { + font-size: 1.1rem; + margin-bottom: 0.5rem; + } +` + +const TextContainer = styled.div` + display: flex; + flex-direction: column; + + @media (min-width: ${(props) => props.theme.md}px) { + justify-content: space-between; + flex-grow: 2; + height: 180px; + } +` + +const StatsContainer = styled.div` + display: none; + + @media (min-width: ${(props) => props.theme.md}px) { + display: block; + } +` + +export default ListingCardV2 diff --git a/client/src/components/cards/ListingHostCard.jsx b/client/src/components/cards/ListingHostCard.jsx new file mode 100644 index 0000000..439b8db --- /dev/null +++ b/client/src/components/cards/ListingHostCard.jsx @@ -0,0 +1,201 @@ +import FormControlLabel from '@material-ui/core/FormControlLabel' +import Switch from '@material-ui/core/Switch' +import React, { useEffect, useState } from 'react' +import { Link } from 'react-router-dom' +import Space from 'src/components/layouts/Space' +import theme from 'src/theme' +import api from 'src/util/api' +import getDateString from 'src/util/helpers/getDateString' +import useIsMobile from 'src/util/hooks/useIsMobile' +import useRouter from 'src/util/hooks/useRouter' +import log from 'src/util/log' +import styled from 'styled-components' +import Btn from '../buttons/Btn' +import TextBtn from '../buttons/TextBtn' +import BadgeV2 from '../displays/BadgeV2' +import Text from '../fonts/Text' +import { FlexRow } from '../layouts/Flex' + +const ListingHostCard = ({ listing }) => { + const router = useRouter() + + const handleViewButtonClick = (event) => { + event.preventDefault() + event.stopPropagation() + router.push(`/listing/${listing._id}`) + } + + // bmCount + const [setBmCount, setSetBmCount] = useState(0) + + useEffect(() => { + if (listing._id) { + api.get(`/listing/${listing._id}/stats`).then((res) => { + if (res && res.data) { + setSetBmCount(res.data.bmCount) + } + }) + } + }, [listing._id]) + + // sold toggle + const [isSold, setIsSold] = useState(false) + + useEffect(() => { + setIsSold(listing.sold) + }, [listing.sold]) + + const toggleSold = (event) => { + event.preventDefault() + event.stopPropagation() + + setIsSold(!isSold) + api + .put(`/listing/${listing._id}/update`, { sold: !isSold }) + .catch((e) => log('ERROR ListingHostCard', e)) + } + + return ( + + + + + + + + {listing.addr} + + {listing.views} views • {setBmCount} bookmarks + + + + + + } + label={isSold ? 'Sold' : 'Available'} + /> + + + {!isSold && View} + Mark {isSold ? 'as available' : 'sold'} + + + + + ) +} + +const Container = styled.div` + cursor: pointer; + width: 90vw; + padding: 1rem 0; + position: relative; + overflow: hidden; + display: flex; + align-items: flex-start; + border-radius: 20px; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 100%; + transition: background-color 0.2s ease-in-out; + padding: 1rem; + + &:hover { + background-color: ${(props) => props.theme.grey[50]}; + } + } +` + +const DateContainer = styled.div` + margin-left: -0.1rem; +` + +const SwitchContainer = styled.div` + padding-left: 0.4rem; + width: min-content; + min-width: 125px; + + & .MuiFormControlLabel-label { + margin-left: 0.2rem; + font-weight: 500; + } +` + +const ImgContainer = styled.div` + position: relative; + width: 120px; + height: 120px; + border-radius: 10px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + overflow: hidden; + flex-grow: 0; + flex-shrink: 0; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 280px; + height: 180px; + } +` + +const Img = styled.img` + object-fit: cover; + width: 100%; + height: 100%; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + // hide alt text + color: rgba(0, 0, 0, 0) !important; + + // faded + opacity: ${(props) => (props.faded ? '.5' : '')}; +` + +const Title = styled.h3` + flex-grow: 0; + margin-right: 0.5rem; + font-size: 1.1rem; + font-weight: 500; + line-height: 1.2; + + @media (min-width: ${(props) => props.theme.md}px) { + font-size: 1.5rem; + } +` + +const TextContainer = styled.div` + display: flex; + flex-direction: column; + + & > * { + margin-bottom: 0.5rem; + } + + @media (min-width: ${(props) => props.theme.md}px) { + justify-content: space-between; + flex-grow: 2; + height: 180px; + + & > * { + margin-bottom: unset; + } + } +` + +const ButtonsContainer = styled(FlexRow)` + margin-top: 0.5rem; + + & > * { + margin-right: 0.5rem; + } +` + +export default ListingHostCard diff --git a/client/src/components/core/AppReduxWrapper.jsx b/client/src/components/core/AppReduxWrapper.jsx new file mode 100644 index 0000000..61cfbf0 --- /dev/null +++ b/client/src/components/core/AppReduxWrapper.jsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { Provider } from 'react-redux'; +import { persistStore } from 'redux-persist'; +import store from 'src/redux/store'; +import { PersistGate } from 'redux-persist/integration/react'; +import AppRouter from './AppRouteWrapper'; + +const persistor = persistStore(store); + +const AppContainer = () => ( + + + + + +); + +export default AppContainer; diff --git a/client/src/components/core/AppRouteWrapper.jsx b/client/src/components/core/AppRouteWrapper.jsx new file mode 100644 index 0000000..dace1d7 --- /dev/null +++ b/client/src/components/core/AppRouteWrapper.jsx @@ -0,0 +1,74 @@ +import React from 'react' +import { useSelector } from 'react-redux' +import { BrowserRouter, Route, Switch } from 'react-router-dom' +import AuthCallback from 'src/pages/auth-callback' +import CookiePolicy from 'src/pages/cookie-policy' +import Edit from 'src/pages/edit' +import Env from 'src/pages/env' +import Home from 'src/pages/home' +import Listing from 'src/pages/listing' +import New from 'src/pages/new' +import PrivacyPolicy from 'src/pages/privacy-policy' +import Profile from 'src/pages/profile' +import MyBookmarks from 'src/pages/profile/MyBookmarks' +import Chat from 'src/pages/profile/MyChats/Chat' +import Chatroom from 'src/pages/profile/MyChats/Chatroom' +import MyListings from 'src/pages/profile/MyListings' +import Settings from 'src/pages/profile/Settings' +import Stats from 'src/pages/stats' +import TermsConditions from 'src/pages/terms-conditions' +import MainFooter from '../footers/MainFooter' +import PrivateRoute from './PrivateRoute' +import ResetUserStore from './ResetUserStore' +import ScrollToTop from './ScrollToTop' +import SocketIO from './SocketIO' + +const AppRouter = () => { + const user = useSelector((state) => state.user) + const bannedEmails = [ + 'lily.d.pieramici042402@gmail.com', + 'chiayuho2001@gmail.com', + 'rolpz289974@gmail.com', + 'chiayuho162001@gmail.com', + 'kmjeong130309574@gmail.com', + 'prgmayorga1470@gmail.com', + ] + + if ( + process.env.NODE_ENV === 'production' && + user && + ((user.email && (bannedEmails.includes(user.email) || user.email.includes('chiayuho'))) || + user.isBanned) + ) { + return null + } + + return ( + + + + + + + + + + + + + + + + + + + + + + + + + ) +} + +export default AppRouter diff --git a/client/src/components/core/AppThemeWrapper.jsx b/client/src/components/core/AppThemeWrapper.jsx new file mode 100644 index 0000000..55e2884 --- /dev/null +++ b/client/src/components/core/AppThemeWrapper.jsx @@ -0,0 +1,38 @@ +import React from 'react'; +import styled, { ThemeProvider } from 'styled-components'; +import theme from 'src/theme'; +import AppReduxWrapper from './AppReduxWrapper'; + +import 'src/theme/Normalise.css'; +import 'react-perfect-scrollbar/dist/css/styles.css'; + +const Wrapper = styled.div` + width: 100%; + min-height: 100.5vh; + background-color: white; + display: flex; + justify-content: center; +`; + +const Container = styled.div` + width: 90%; + display: flex; + flex-direction: column; + justify-content: space-between; + + @media (min-width: ${(props) => props.theme.md}px) { + max-width: 1565px; + } +`; + +const AppThemeWrapper = () => ( + + + + + + + +); + +export default AppThemeWrapper; diff --git a/client/src/components/core/PrivateRoute.jsx b/client/src/components/core/PrivateRoute.jsx new file mode 100644 index 0000000..387bd51 --- /dev/null +++ b/client/src/components/core/PrivateRoute.jsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; +import { Route } from 'react-router-dom'; +import signin from 'src/util/helpers/signin'; +import MainHeader from '../headers/MainHeader'; + +const PrivateRoute = ({ component: Component, ...rest }) => { + const user = useSelector((state) => state.user); + + if (!user || !user.name) { + signin(); + return ; + } + + return ( + ( + + )} + /> + ); +}; + +export default PrivateRoute; diff --git a/client/src/components/core/ResetUserStore.jsx b/client/src/components/core/ResetUserStore.jsx new file mode 100644 index 0000000..65a31e0 --- /dev/null +++ b/client/src/components/core/ResetUserStore.jsx @@ -0,0 +1,30 @@ +import React, { useEffect } from 'react' +import styled from 'styled-components' +import { useSelector, useDispatch } from 'react-redux' + +const ResetUserStore = () => { + const user = useSelector((state) => state.user) + const dispatch = useDispatch() + + if (user && (user.displayName || !user.name)) { + dispatch({ + type: 'USER_SET', + payload: null, + }) + } + + // create test scenario: flawed user schema saved to redux store + // useEffect(() => { + // dispatch({ + // type: 'USER_SET', + // payload: { + // displayName: 'test displayName', + // name: undefined, + // } + // }) + // }, []) + + return
+} + +export default ResetUserStore diff --git a/client/src/components/core/ScrollToTop.jsx b/client/src/components/core/ScrollToTop.jsx new file mode 100644 index 0000000..1ccf9ca --- /dev/null +++ b/client/src/components/core/ScrollToTop.jsx @@ -0,0 +1,71 @@ +import { useEffect, useState } from 'react'; +import { ReactComponent as UpRaw } from 'src/assets/svgs/up.svg'; +import useIsDesktop from 'src/util/hooks/useIsDesktop'; +import useRouter from 'src/util/hooks/useRouter'; +import styled from 'styled-components'; + +export const Container = styled.div` + border-radius: 50%; + background: ${props => props.theme.primary}; + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + + position: fixed; + bottom: 2rem; + right: 2rem; + z-index: 10; + width: 3rem; + height: 3rem; + + display: flex; + justify-content: center; + align-items: center; + + cursor: pointer; +`; + +const UpSVG = styled(UpRaw)` + height: 1.2rem; + width: 1.2rem; + fill: white; +` + +const ScrollToTop = () => { + // scroll to top on route change + const router = useRouter(); + useEffect(() => { + window.scrollTo(0, 0); + }, [router.location]); + + // for mobile, if not currently at top + // render back to top button + const isDesktop = useIsDesktop(); + const [isAtTop, setIsAtTop] = useState(true); + window.onscroll = function() { + if(window.pageYOffset === 0) { + setIsAtTop(true); + } + else { + setIsAtTop(false); + } + }; + + const handleClick = () => { + window.scrollTo({ + top: 0, + left: 0, + behavior: 'smooth' + }); + } + + return null + + // if (isDesktop || isAtTop) return
; + + // return ( + // + // + // + // ); +}; + +export default ScrollToTop; diff --git a/client/src/components/core/SocketIO.jsx b/client/src/components/core/SocketIO.jsx new file mode 100644 index 0000000..785c8b4 --- /dev/null +++ b/client/src/components/core/SocketIO.jsx @@ -0,0 +1,35 @@ +import React from 'react'; +import socket from 'src/util/socket'; +import { useDispatch, useSelector } from 'react-redux'; + +const SocketIO = () => { + const dispatch = useDispatch(); + const user = useSelector((state) => state.user); + + socket.on('msg', (data) => { + dispatch({ + type: 'CHATROOMS_MSG', + payload: data, + }); + }); + + socket.on('new chatroom', (chatroom) => { + if (user && chatroom.uids.includes(user.uid)) { + dispatch({ + type: 'CHATROOMS_ADD', + payload: chatroom, + }); + } + }); + + socket.on('chatroom seen', ({ cid, uid }) => { + dispatch({ + type: 'CHATROOMS_SEEN', + payload: { cid, uid }, + }); + }); + + return
; +}; + +export default SocketIO; diff --git a/client/src/components/displays/AmenityGrp.jsx b/client/src/components/displays/AmenityGrp.jsx new file mode 100644 index 0000000..9da001b --- /dev/null +++ b/client/src/components/displays/AmenityGrp.jsx @@ -0,0 +1,57 @@ +import React from 'react'; +import styled from 'styled-components'; +import Body from '../fonts/Body'; + +const AmenityGrpContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + width: 6rem; + margin: 1rem 1rem 0 0; + cursor: pointer; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 5rem; + } + + // active + opacity: ${(props) => (props.active ? '.9' : '.3')}; +`; + +const Row = styled.div` + display: flex; + align-items: center; + margin-bottom: .5rem; + + & > svg { + height: 1.7rem; + width: 1.7rem; + } +`; + +export const LineTwo = styled(Body)` + // lineTwo + opacity: ${(props) => (props.lineTwo ? '' : '0')}; +`; + +const AmenityGrp = ({ + icon, label, active, onClick, +}) => { + const lineOne = label.split(' ')[0]; + const lineTwo = label.split(' ')[1]; + + return ( + + + {icon} + + {lineTwo ? lineOne : label} + {lineTwo || lineOne} + + ); +}; + +export default AmenityGrp; diff --git a/client/src/components/displays/Avatar.jsx b/client/src/components/displays/Avatar.jsx new file mode 100644 index 0000000..3870d4b --- /dev/null +++ b/client/src/components/displays/Avatar.jsx @@ -0,0 +1,49 @@ +import React from 'react' +import styled from 'styled-components' +import { Link } from 'react-router-dom' +import { default as MaterialAvatar } from '@material-ui/core/Avatar' +import { ReactComponent as AvatarIconRaw } from 'src/assets/svgs/avatar.svg' + +const Avatar = ({ src, path, lg, sm, border, isLinked = true, ...rest }) => ( +
+ {src ? ( + isLinked ? ( + + + + ) : ( + + ) + ) : ( + + )} +
+) + +const StyledAvatar = styled(MaterialAvatar)` + width: 35px !important; + height: 35px !important; + + // border + box-shadow: ${(props) => props.border && `inset 0px 0px 0px 1px ${props.theme.primary}`}; + border: ${(props) => props.border && `2px solid ${props.theme.primary}`}; + + // sm + width: ${(props) => (props.sm ? '22px !important' : '')}; + height: ${(props) => (props.sm ? '22px !important' : '')}; + + // lg + width: ${(props) => (props.lg ? '45px !important' : '')}; + height: ${(props) => (props.lg ? '45px !important' : '')}; +` + +const AvatarIcon = styled(AvatarIconRaw)` + width: 40px; + height: 40px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + border-radius: 50%; + padding: 5px; + opacity: 0.8; +` + +export default Avatar diff --git a/client/src/components/displays/Badge.jsx b/client/src/components/displays/Badge.jsx new file mode 100644 index 0000000..6d3fc4b --- /dev/null +++ b/client/src/components/displays/Badge.jsx @@ -0,0 +1,38 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.div` + padding: .4rem .6rem; + background-color: white; + display: inline-block; + border-radius: 15px; + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + font-size: .8rem; + + // color + background-color: ${(props) => (props.inverted ? props.theme[props.color] : '')}; + color: ${(props) => props.theme[props.color]}; + + // size: sm + font-size: ${(props) => (props.size === 'sm' ? '.7rem' : '')}; + padding: ${(props) => (props.size === 'sm' ? '.3rem .5rem' : '')}; + + // inverted + color: ${(props) => (props.inverted ? 'white' : '')}; + background-color: ${(props) => (props.inverted ? props.theme[props.color] : '')}; +`; + +const Badge = ({ + children, color, inverted, size, ...rest +}) => ( + + {children} + +); + +export default Badge; diff --git a/client/src/components/displays/BadgeV2.jsx b/client/src/components/displays/BadgeV2.jsx new file mode 100644 index 0000000..4903bc9 --- /dev/null +++ b/client/src/components/displays/BadgeV2.jsx @@ -0,0 +1,30 @@ +import React from 'react' +import styled from 'styled-components' +import Text from '../fonts/Text' + +const BadgeV2 = ({ label, color, background }) => { + return ( + + + {label} + + + ) +} + +const Container = styled.div` + padding: 0.1rem 0.4rem; + border-radius: 4px; + display: inline-block; + + // background + background-color: ${(props) => props.background && props.background}; +` + +const BadgeText = styled(Text)` + @media (min-width: ${(props) => props.theme.md}px) { + font-size: 14px; + } +` + +export default BadgeV2 diff --git a/client/src/components/displays/ClickableIcon.jsx b/client/src/components/displays/ClickableIcon.jsx new file mode 100644 index 0000000..ea6898a --- /dev/null +++ b/client/src/components/displays/ClickableIcon.jsx @@ -0,0 +1,32 @@ +import React from 'react' +import styled from 'styled-components' + +const ClickableIcon = ({ size, children }) => { + return {children} +} + +const Container = styled.div` + border-radius: 50%; + background: ${(props) => props.theme.grey[100]}; + height: 42px; + width: 42px; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + + & > * { + flex-grow: 0; + flex-shrink: 0; + } + + &:hover { + background: ${(props) => props.theme.grey[300]}; + } + + /* size */ + height: ${(props) => props.size && props.size}; + width: ${(props) => props.size && props.size}; +` + +export default ClickableIcon diff --git a/client/src/components/displays/CornerRedDot.jsx b/client/src/components/displays/CornerRedDot.jsx new file mode 100644 index 0000000..2dcdcde --- /dev/null +++ b/client/src/components/displays/CornerRedDot.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.div` + position: absolute; + top: -2px; + right: -1px; + background: ${(props) => props.theme.danger}; + border-radius: 50%; + padding: 4px; + border: 2px solid white; + z-index: 10; + + // lg + padding: ${(props) => (props.lg ? '6px' : '')}; +`; + +const CornerRedDot = (props) => ; + +export default CornerRedDot; diff --git a/client/src/components/displays/DetailedAvatar.jsx b/client/src/components/displays/DetailedAvatar.jsx new file mode 100644 index 0000000..23064f6 --- /dev/null +++ b/client/src/components/displays/DetailedAvatar.jsx @@ -0,0 +1,33 @@ +import React from 'react'; +import styled from 'styled-components'; +import Avatar from 'src/components/displays/Avatar'; +import Body from 'src/components/fonts/Body'; + +const Container = styled.div` + display: flex; +`; + +const Data = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 1rem; +`; + +const Name = styled(Body)` + margin-bottom: .1rem; +`; + +const UserData = ({ name, email, src }) => ( + + + + {name} + {email} + + +); + +export default UserData; diff --git a/client/src/components/displays/IconContainer.jsx b/client/src/components/displays/IconContainer.jsx new file mode 100644 index 0000000..050f1f8 --- /dev/null +++ b/client/src/components/displays/IconContainer.jsx @@ -0,0 +1,31 @@ +import React from 'react' +import styled from 'styled-components'; + +const Container = styled.div` + border-radius: 50%; + cursor: pointer; + padding: .2rem; + + display: flex; + justify-content: center; + align-items: center; + + @media (min-width: ${(props) => props.theme.md}px) { + &:hover { + background: rgba(0, 0, 0, .05); + } + } + + // padding + padding: ${props => props.padding && props.padding}; +`; + +const IconContainer = ({ children, padding }) => { + return ( + + {children} + + ) +} + +export default IconContainer diff --git a/client/src/components/displays/ImgCarousel.css b/client/src/components/displays/ImgCarousel.css new file mode 100644 index 0000000..94442ce --- /dev/null +++ b/client/src/components/displays/ImgCarousel.css @@ -0,0 +1,15 @@ +.slick-prev { + left: 3%; + z-index: 10; + display: none !important; +} +.slick-next { + right: 3%; + display: none !important; +} + +@media (min-width: 768px) { + .slick-next .slick-prev { + display: block !important; + } +} diff --git a/client/src/components/displays/ImgCarousel.jsx b/client/src/components/displays/ImgCarousel.jsx new file mode 100644 index 0000000..520dfe8 --- /dev/null +++ b/client/src/components/displays/ImgCarousel.jsx @@ -0,0 +1,87 @@ +import React, { useRef, useState } from 'react' +import styled from 'styled-components' +import Slider from 'react-slick' +import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock' + +import 'slick-carousel/slick/slick.css' +import 'slick-carousel/slick/slick-theme.css' +import './ImgCarousel.css' + +const ImgCarousel = ({ imgs }) => { + const slider = useRef(null) + + const lockVertScroll = (direction) => { + if (direction !== 'vertical') { + disableBodyScroll(slider.current) + } + } + + const releaseBodyScroll = () => enableBodyScroll(slider.current) + + const config = { + dots: true, + infinite: true, + speed: 200, + accessibility: true, + ref: slider, + swipeEvent: lockVertScroll, + enableVerticalScroll: true, + } + + if (!imgs || !imgs.length) return
+ + return ( + + + {imgs.map((src) => ( + + + + ))} + + + ) +} + +const Container = styled.div` + & .slick-dots { + bottom: 15px; + } + + & .slick-dots li { + margin: 0; + } + + & .slick-dots li button { + padding: 0; + } + + & .slick-dots li button:before { + opacity: 0.8; + color: white; + font-size: 10px; + } + + & .slick-dots li.slick-active button:before { + color: ${(props) => props.theme.grey[700]}; + } +` + +const ImgContainer = styled.div` + height: 250px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + + @media (min-width: ${(props) => props.theme.md}px) { + height: 300px; + border-radius: 4px; + overflow: hidden; + } +` + +const Img = styled.img` + width: 100%; + object-fit: cover; + height: inherit; +` + +export default ImgCarousel diff --git a/client/src/components/displays/InfoBox.jsx b/client/src/components/displays/InfoBox.jsx new file mode 100644 index 0000000..85f28f6 --- /dev/null +++ b/client/src/components/displays/InfoBox.jsx @@ -0,0 +1,29 @@ +import React from 'react' +import { ReactComponent as WarningSVGRaw } from 'src/assets/svgs/warning.svg' +import styled from 'styled-components' +import Space from '../layouts/Space'; + +const Container = styled.div` + display: flex; + width: 100%; + border-radius: 8px; + background: ${(props) => props.theme.warningLight}; + color: ${(props) => props.theme.warning}; + padding: 1rem; +` + +const WarningSVG = styled(WarningSVGRaw)` + fill: ${props => props.theme.warning}; +`; + +const InfoBox = ({ variant, children }) => { + return ( + + + + {children} + + ) +} + +export default InfoBox diff --git a/client/src/components/displays/ListingLocation.jsx b/client/src/components/displays/ListingLocation.jsx new file mode 100644 index 0000000..f807ee7 --- /dev/null +++ b/client/src/components/displays/ListingLocation.jsx @@ -0,0 +1,46 @@ +import React, { useEffect, useState } from 'react' +import getRegion from 'src/util/helpers/getRegion' +import kmToMins from 'src/util/helpers/kmToMins' +import useIsDesktop from 'src/util/hooks/useIsDesktop' +import styled from 'styled-components' +import BadgeV2 from '../displays/BadgeV2' + +const ListingLocation = ({ lat, lng, toCampus, isShowMins = true }) => { + const [region, setRegion] = useState({}) + const isDesktop = useIsDesktop() + + useEffect(() => { + if (lat && lng) { + setRegion( + getRegion({ + lat, + lng, + }) + ) + } + }, [lat, lng]) + + if (!lat || !lng || !toCampus) return
+ + return ( + + + {isShowMins && • {kmToMins(toCampus)} mins from campus} + + ) +} + +const Container = styled.div` + margin-bottom: 0.4rem; + display: flex; + align-items: center; +` + +const Overline = styled.span` + margin-left: 0.5rem; + color: ${(props) => props.theme.textMuted}; + font-weight: 500; + font-size: 0.9rem; +` + +export default ListingLocation diff --git a/client/src/components/displays/Loading.jsx b/client/src/components/displays/Loading.jsx new file mode 100644 index 0000000..52ab69b --- /dev/null +++ b/client/src/components/displays/Loading.jsx @@ -0,0 +1,41 @@ +import React from 'react'; +import styled, { keyframes } from 'styled-components'; + +const rotation = keyframes` + 0%, 100% { + animation-timing-function: ease-in-out; + } + 0% { + transform: rotateY(0deg); + } + 50% { + transform: rotateY(1800deg); + animation-timing-function: ease-in-out; + } + 100% { + transform: rotateY(3600deg); + } +`; + +const Animation = styled.div` + display: inline-block; + transform: translateZ(1px); + + &>div { + display: inline-block; + width: 1rem; + height: 1rem; + margin: 8px; + border-radius: 50%; + background: ${(props) => props.theme.primary}; + animation: ${rotation} 5s ease-in-out infinite; + } +`; + +const Loading = () => ( + +
+ +); + +export default Loading; diff --git a/client/src/components/displays/LoadingDots.jsx b/client/src/components/displays/LoadingDots.jsx new file mode 100644 index 0000000..17dfe95 --- /dev/null +++ b/client/src/components/displays/LoadingDots.jsx @@ -0,0 +1,78 @@ +import React from 'react'; +import styled from 'styled-components'; + +export const Center = styled.div` + width: 100%; + display: flex; + justify-content: center; +`; + +export const Container = styled.div` + display: inline-block; + position: relative; + width: 80px; + height: 80px; + + & div { + position: absolute; + top: 33px; + width: 13px; + height: 13px; + border-radius: 50%; + background: rgba(0, 0, 0, .2); + animation-timing-function: cubic-bezier(0, 1, 1, 0); + } + & div:nth-child(1) { + left: 8px; + animation: lds-ellipsis1 0.6s infinite; + } + & div:nth-child(2) { + left: 8px; + animation: lds-ellipsis2 0.6s infinite; + } + & div:nth-child(3) { + left: 32px; + animation: lds-ellipsis2 0.6s infinite; + } + & div:nth-child(4) { + left: 56px; + animation: lds-ellipsis3 0.6s infinite; + } + @keyframes lds-ellipsis1 { + 0% { + transform: scale(0); + } + 100% { + transform: scale(1); + } + } + @keyframes lds-ellipsis3 { + 0% { + transform: scale(1); + } + 100% { + transform: scale(0); + } + } + @keyframes lds-ellipsis2 { + 0% { + transform: translate(0, 0); + } + 100% { + transform: translate(24px, 0); + } + } +`; + +const LoadingDots = () => ( +
+ +
+
+
+
+ +
+); + +export default LoadingDots; diff --git a/client/src/components/displays/Logo.jsx b/client/src/components/displays/Logo.jsx new file mode 100644 index 0000000..4f8ae42 --- /dev/null +++ b/client/src/components/displays/Logo.jsx @@ -0,0 +1,16 @@ +import React from 'react' +import styled from 'styled-components' +import { ReactComponent as LogoRaw } from 'src/assets/svgs/logo.svg' + +const LogoSVG = styled(LogoRaw)` + height: 3rem; + cursor: pointer; + fill: ${(props) => props.theme.brand[500]}; + + // isDark + fill: ${(props) => props.isDark && props.theme.grey[500]}; +` + +const Logo = ({ isDark }) => + +export default Logo diff --git a/client/src/components/displays/Map.jsx b/client/src/components/displays/Map.jsx new file mode 100644 index 0000000..b7889e8 --- /dev/null +++ b/client/src/components/displays/Map.jsx @@ -0,0 +1,56 @@ +import React from 'react' +import { Circle, GoogleMap, withGoogleMap, withScriptjs } from 'react-google-maps' +import { compose, withProps } from 'recompose' +import theme from 'src/theme' +import useIsMobile from 'src/util/hooks/useIsMobile' +import Body from '../fonts/Body' +import { FlexColumn } from '../layouts/Flex' +import Space from '../layouts/Space' + +const MapComponent = compose( + withProps({ + googleMapURL: `https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=${process.env.REACT_APP_MAP_KEY}`, + loadingElement:
, + containerElement:
, + mapElement:
, + }), + withScriptjs, + withGoogleMap +)(({ lat, lng }) => { + const isMobile = useIsMobile() + + return ( + + + + + + ) +}) + +const Map = ({ lat, lng }) => ( + + + +
+ + The exact location will be provided once you message the host + +
+
+) + +export default Map diff --git a/client/src/components/displays/Metadata.jsx b/client/src/components/displays/Metadata.jsx new file mode 100644 index 0000000..a041b58 --- /dev/null +++ b/client/src/components/displays/Metadata.jsx @@ -0,0 +1,42 @@ +import React from 'react'; +import styled from 'styled-components'; +import { ReactComponent as Eye } from 'src/assets/svgs/eye.svg'; + +const Container = styled.div` + display: flex; + opacity: .7; + font-size: .8rem; + align-items: center; +`; + +const Wrapper = styled.div` + padding: 0 .4rem 0 0; + display: flex; + align-items: center; +`; + +const SEye = styled(Eye)` + width: .8rem; + height: .8rem; + margin-right: .1rem; + opacity: .6; +`; + +const Metadata = ({ date, pv }) => { + const formattedDate = date ? date.split('T')[0] : ''; + return ( + + +

{formattedDate}

+
+ {pv && ( + + +

{pv}

+
+ )} +
+ ); +}; + +export default Metadata; diff --git a/client/src/components/displays/NotifCounter.jsx b/client/src/components/displays/NotifCounter.jsx new file mode 100644 index 0000000..4ad4f58 --- /dev/null +++ b/client/src/components/displays/NotifCounter.jsx @@ -0,0 +1,31 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.div` + height: 1.7rem; + width: 1.7rem; + font-size: 1rem; + + border-radius: 50%; + background: ${props => props.theme.primary}; + color: white; + + display: flex; + justify-content: center; + align-items: center; + + // sm + height: ${props => props.sm && '1.2rem'}; + width: ${props => props.sm && '1.2rem'}; + font-size: ${props => props.sm && '.7rem'}; +`; + +const NotifCounter = ({ children, ...rest }) => { + return ( + + {children} + + ) +}; + +export default NotifCounter; diff --git a/client/src/components/displays/Notification.jsx b/client/src/components/displays/Notification.jsx new file mode 100644 index 0000000..b6e5728 --- /dev/null +++ b/client/src/components/displays/Notification.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.span` + position: absolute; + width: 18px; + height: 18px; + border-radius: 50%; + color: #fff; + background: #dd5850; + text-align: center; + line-height: 18px; + font-size: .7rem; + right: 0px; + top: 0px; + display: block; + cursor: pointer; +`; + +const Notification = (props) => ( + + {props.text} + +); + +export default Notification; diff --git a/client/src/components/displays/PolicyDisclaimer.jsx b/client/src/components/displays/PolicyDisclaimer.jsx new file mode 100644 index 0000000..eb0946e --- /dev/null +++ b/client/src/components/displays/PolicyDisclaimer.jsx @@ -0,0 +1,35 @@ +import React from 'react'; +import styled from 'styled-components'; +import Body from '../fonts/Body'; +import { Link } from 'react-router-dom'; + +const PolicyDisclaimer = ({ action, ...rest}) => { + return ( + +
+ By {action || 'using Cornlet'}, you agree to its + Terms of Service and Privacy Policy +
+
+ ) +}; + +const Container = styled.div` + width: 100%; + display: flex; + justify-content: center; + + & p { + text-align: center; + } +`; + +const StyledLink = styled(Link)` + text-decoration: underline; +`; + +const StyledBody = styled(Body)` + font-size: .8rem; +`; + +export default PolicyDisclaimer; diff --git a/client/src/components/displays/PriceBadge.jsx b/client/src/components/displays/PriceBadge.jsx new file mode 100644 index 0000000..0a6ad81 --- /dev/null +++ b/client/src/components/displays/PriceBadge.jsx @@ -0,0 +1,37 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.div` + position: absolute; + bottom: 1rem; + right: .5rem; + + background: ${(props) => props.theme.primary}; + color: white; + border-radius: 8px; + + font-weight: 400; + font-size: 1.1rem; + padding: .3rem .7rem; + + // alignTop + bottom: ${(props) => (props.alignTop ? 'initial' : '')}; + top: ${(props) => (props.alignTop ? '1rem' : '')}; + + // alignLeft + right: ${props => props.alignLeft ? 'initial': ''}; + left: ${props => props.alignLeft ? '1rem' : ''}; + + // lg + font-size: ${(props) => (props.lg ? '1.2rem' : '')}; + padding: ${(props) => (props.lg ? '.5rem 1rem' : '')}; + right: ${(props) => (props.lg ? '1rem' : '')}; +`; + +const PriceBadge = ({ children, ...rest }) => ( + + {children} + +); + +export default PriceBadge; diff --git a/client/src/components/displays/Searchers.jsx b/client/src/components/displays/Searchers.jsx new file mode 100644 index 0000000..305ea66 --- /dev/null +++ b/client/src/components/displays/Searchers.jsx @@ -0,0 +1,61 @@ +import React from 'react' +import styled from 'styled-components' +import Text from '../fonts/Text' +import Avatar from './Avatar' + +const Searchers = ({ searchers, isBrief, isLarge }) => { + if (!searchers || searchers.length === 0) return null + + const text = isBrief + ? `${searchers.length} messaging host` + : `${searchers.length} ${ + searchers.length === 1 ? 'person is' : 'people are' + } messaging this host` + + const sliceCount = isBrief ? 3 : 4 + + return ( + + + {searchers.slice(0, sliceCount).map((searcher) => ( + + ))} + + + {text} + + + ) +} + +const Container = styled.div` + display: flex; + align-items: flex-start; + align-items: ${(props) => (props.isBrief ? 'center' : 'flex-start')}; + padding: 0 0.5rem; + + & > *:first-of-type { + margin-right: 0.5rem; + } +` + +const AvatarGroup = styled.div` + display: flex; + align-items: center; + + & > * { + margin-left: -0.5rem; + } +` + +const StyledAvatar = styled(Avatar)` + border: 2px solid white; +` + +const StyledText = styled(Text)` + @media (min-width: ${(props) => props.theme.md}px) { + font-size: 14px; + } +` + +export default Searchers diff --git a/client/src/components/displays/Snackbar.jsx b/client/src/components/displays/Snackbar.jsx new file mode 100644 index 0000000..17c8a46 --- /dev/null +++ b/client/src/components/displays/Snackbar.jsx @@ -0,0 +1,36 @@ +import IconButton from '@material-ui/core/IconButton' +import { default as MuiSnackbar } from '@material-ui/core/Snackbar' +import CloseIcon from '@material-ui/icons/Close' +import React from 'react' + +const Snackbar = ({ message, isOpen, setIsOpen }) => { + const handleClose = (event, reason) => { + if (reason === 'clickaway') { + return + } + + setIsOpen(false) + } + + return ( + + + + + + } + /> + ) +} + +export default Snackbar diff --git a/client/src/components/displays/StateBadges.jsx b/client/src/components/displays/StateBadges.jsx new file mode 100644 index 0000000..295c971 --- /dev/null +++ b/client/src/components/displays/StateBadges.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import styled from 'styled-components'; +import Badge from 'src/components/displays/Badge'; + +const Container = styled.div` + & > * { + margin-right: .5rem; + } +`; + +const StageBadges = ({ listing }) => { + const startDate = listing.start && new Date(listing.start).toLocaleDateString(); + const endDate = listing.end && new Date(listing.end).toLocaleDateString(); + const hasDates = listing.start && listing.end; + const badgeText = hasDates ? `${startDate} ~ ${endDate}` : listing.term; + return ( + + {badgeText} + {listing.sold && Sold} + + ); +}; + +export default StageBadges; diff --git a/client/src/components/filters/DateFilter.jsx b/client/src/components/filters/DateFilter.jsx new file mode 100644 index 0000000..9a9d0c7 --- /dev/null +++ b/client/src/components/filters/DateFilter.jsx @@ -0,0 +1,79 @@ +import React, { useState, useEffect, useRef } from 'react'; +import styled from 'styled-components'; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; +import useRouter from 'src/util/hooks/useRouter'; +import formatDate from 'src/util/helpers/formatDate'; +import { ReactComponent as CalendarRaw } from 'src/assets/svgs/calendar.svg'; + +const Container = styled.div` + position: relative; +`; + +const StyledPicker = styled(DatePicker)` + /* padding: .4rem 1.5rem .4rem .4rem; */ + padding: .5rem 0; + font-size: .8rem; + font-weight: 500; + background-color: white; + + display: inline; + + border-radius: 3px; + text-align: center; + cursor: pointer; + + width: 110px; + background-color: inherit; + color: ${props => props.theme.text}; + border: 2px solid ${props => props.theme.border.dark}; +`; + +const CalendarSVG = styled(CalendarRaw)` + height: 1.6rem; + width: 1.6rem; + position: absolute; + right: .5rem; + top: 0; + bottom: 0; + margin: auto; + fill: ${props => props.theme.border.dark}; +`; + +const DateFilter = ({ name }) => { + const router = useRouter(); + const [date, setDate] = useState(); + + useEffect(() => { + if (router.query[name]) { + const newDate = new Date(router.query[name].replace(/-/g, '/')); + setDate(newDate); + } + else { + setDate(null); + } + }, [router.query[name]]); + + useEffect(() => { + if (!date) return; + + const newQuery = {}; + newQuery[name] = formatDate(date); + router.updateQuery(newQuery); + }, [date]); + + const handleDateChangeRaw = (e) => e.preventDefault(); + + return ( + + setDate(newDate)} + /> + {/* */} + + ); +}; + +export default DateFilter; diff --git a/client/src/components/filters/SliderFilter.jsx b/client/src/components/filters/SliderFilter.jsx new file mode 100644 index 0000000..0df3587 --- /dev/null +++ b/client/src/components/filters/SliderFilter.jsx @@ -0,0 +1,71 @@ +import React, { useEffect } from 'react' +import styled from 'styled-components' +import useRouter from 'src/util/hooks/useRouter' +import Slider from '@material-ui/core/Slider' +import { FlexRow } from '../layouts/Flex' +import Text from '../fonts/Text' + +const SliderFilter = ({ startName, endName, max, step, startLabel, endLabel }) => { + const router = useRouter() + const [value, setValue] = React.useState([0, max]) + + const handleChange = (event, newValue) => { + setValue(newValue) + } + + const handleChangeCommitted = (event, newValue) => { + const query = {} + // eslint-disable-next-line prefer-destructuring + query[startName] = newValue[0] + // eslint-disable-next-line prefer-destructuring + query[endName] = newValue[1] + router.updateQuery(query) + } + + function valuetext(val) { + return `$${val}` + } + + useEffect(() => { + if (router.query[startName] && router.query[endName]) { + setValue([Number(router.query[startName]), Number(router.query[endName])]) + } else { + setValue([0, max]) + } + }, [router.query[startName], router.query[endName]]) + + return ( + + + + + +
{startLabel && {startLabel}}
+
{endLabel && {endLabel}}
+
+
+ ) +} + +const Container = styled.div`` + +const SliderContainer = styled.div` + padding: 0 0.5rem; + display: flex; + justify-content: center; + + & .MuiSlider-colorPrimary { + color: ${(props) => props.theme.primary}; + } +` + +export default SliderFilter diff --git a/client/src/components/filters/Sort.jsx b/client/src/components/filters/Sort.jsx new file mode 100644 index 0000000..c5903b4 --- /dev/null +++ b/client/src/components/filters/Sort.jsx @@ -0,0 +1,64 @@ +import React from 'react'; +import styled from 'styled-components'; +import useRouter from 'src/util/hooks/useRouter'; + +const Container = styled.div` + +`; + +const SortBadge = styled.div` + padding: .4rem .8rem; + font-size: .8rem; + background-color: white; + border-radius: 15px; + text-align: center; + cursor: pointer; + + @media (min-width: ${(props) => props.theme.md}px) { + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + } + + // default + width: 3.5rem; + background-color: inherit; + color: rgba(0, 0, 0, .7); + border: 1px solid rgba(0, 0, 0, .2); + + // value set + width: ${(props) => (props.value ? 'auto' : '')}; + background-color: ${(props) => (props.value ? props.theme.primary : '')}; + color: ${(props) => (props.value ? 'white' : '')}; + border: ${(props) => (props.value ? 'none' : '')}; +`; + +const Sort = () => { + const router = useRouter(); + const sortOpts = ['recent', 'price-asc', 'price-desc']; + + const handleClick = () => { + const currentI = sortOpts.indexOf(router.query.sort); + const newI = currentI < 0 ? 1 : (currentI + 1) % sortOpts.length; + router.updateQuery({ sort: sortOpts[newI] }); + }; + + const stateToString = { + recent: 'Recent', + 'price-asc': 'Price: Ascending', + 'price-desc': 'Price: Descending', + }; + + return ( + + + {router.query.sort + ? `${stateToString[router.query.sort]}` + : 'Sort'} + + + ); +}; + +export default Sort; diff --git a/client/src/components/fonts/Body.jsx b/client/src/components/fonts/Body.jsx new file mode 100644 index 0000000..966231b --- /dev/null +++ b/client/src/components/fonts/Body.jsx @@ -0,0 +1,67 @@ +import React from 'react'; +import styled from 'styled-components'; + +const StyledBody = styled.p` + opacity: 1; + font-size: 1rem; + font-weight: 400; + + white-space: pre-line; + line-height: 1.2; + word-break: break-word; + color: ${props => props.theme.text}; + + // ellipsis + text-overflow: ${(props) => (props.ellipsis ? 'ellipsis' : '')}; + overflow: ${(props) => (props.ellipsis ? 'hidden' : '')}; + white-space: ${(props) => (props.ellipsis ? 'nowrap' : '')}; + + // nowrap + white-space: ${(props) => (props.nowrap ? 'nowrap' : '')}; + + // muted + opacity: ${(props) => (props.muted ? '.8' : '')}; + + // sm + @media (min-width: ${(props) => props.theme.md}px) { + font-size: ${(props) => (props.sm ? '.9rem' : '')}; + } + + // fontSize + font-size: ${props => props.fontSize && props.fontSize}; + + // color + color: ${(props) => (props.color ? props.theme[props.color] : '')}; + + // colorHex + color: ${props => props.colorHex && props.colorHex}; + + // lineHeight + line-height: ${(props) => (props.lineHeight ? props.lineHeight : '')}; + + // bold + font-weight: ${(props) => (props.bold ? 'bold' : '')}; + + // fontWeight + font-weight: ${props => props.fontWeight && props.fontWeight}; + + // maxWidth + max-width: ${(props) => (props.maxWidth ? `${props.maxWidth}px` : '')}; + + // margin + margin: ${props => props.margin ? props.margin : ''}; + + // pointer + cursor: ${props => props.pointer && 'pointer'}; + + // underline + text-decoration: ${props => props.underline && 'underline'}; +`; + +const Body = (props) => ( + + {props.children} + +); + +export default Body; diff --git a/client/src/components/fonts/ErrMsg.jsx b/client/src/components/fonts/ErrMsg.jsx new file mode 100644 index 0000000..23c454b --- /dev/null +++ b/client/src/components/fonts/ErrMsg.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.div` + font-size: .8rem; + color: ${(props) => props.theme.danger}; + margin-top: .5rem; +`; + +const ErrMsg = ({ + children, formik, name, ...rest +}) => { + const hasError = formik ? formik.touched[name] && formik.errors[name] : false; + const error = hasError ? formik.errors[name] : undefined; + + return ( + + {error || children} + + ); +}; + +export default ErrMsg; diff --git a/client/src/components/fonts/Heading.jsx b/client/src/components/fonts/Heading.jsx new file mode 100644 index 0000000..4f93a28 --- /dev/null +++ b/client/src/components/fonts/Heading.jsx @@ -0,0 +1,17 @@ +import React from 'react'; +import styled from 'styled-components'; + +const StyledHeading = styled.h2` + opacity: .9; + font-size: 1.5rem; + font-weight: bold; + color: '#3B454E'; +`; + +const Heading = ({ children, ...rest }) => ( + + {children} + +); + +export default Heading; diff --git a/client/src/components/fonts/Label.jsx b/client/src/components/fonts/Label.jsx new file mode 100644 index 0000000..647acc9 --- /dev/null +++ b/client/src/components/fonts/Label.jsx @@ -0,0 +1,14 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.label` + margin-bottom: .5rem; +`; + +const Label = (props) => ( + + {props.children} + +); + +export default Label; diff --git a/client/src/components/fonts/ListingInfo.jsx b/client/src/components/fonts/ListingInfo.jsx new file mode 100644 index 0000000..b244dbc --- /dev/null +++ b/client/src/components/fonts/ListingInfo.jsx @@ -0,0 +1,90 @@ +import React from 'react' +import { ReactComponent as CloseRaw } from 'src/assets/svgs/close-material.svg' +import theme from 'src/theme' +import formatListingDesc from 'src/util/helpers/formatListingDesc' +import getDateString from 'src/util/helpers/getDateString' +import getShortDateString from 'src/util/helpers/getShortDateString' +import styled from 'styled-components' +import BadgeV2 from '../displays/BadgeV2' +import IconContainer from '../displays/IconContainer' +import { FlexRow } from '../layouts/Flex' +import Space from '../layouts/Space' +import Body from './Body' + +const TextArea = styled.div` + padding: 0 0.2rem; + width: 100%; +` + +const Title = styled.h3` + white-space: nowrap; + flex-grow: 0; + text-overflow: ellipsis; + overflow: hidden; + margin-right: 0.5rem; + font-size: 1.1rem; + font-weight: 500; +` + +const Overline = styled.p` + white-space: nowrap; + flex-grow: 0; + text-overflow: ellipsis; + overflow: hidden; + font-size: 0.8rem; + font-weight: 500; + text-transform: uppercase; + opacity: 0.7; +` + +const CloseIcon = styled(CloseRaw)` + height: 1.2rem; + opacity: 0.7; + cursor: pointer; +` + +const ListingInfo = ({ listing, isShowingClose, onCloseClick, isHideDates }) => { + const { price, sold, availRooms, toCampus } = listing || {} + + return ( +
+ +
+ ) +} + +export default ListingInfo diff --git a/client/src/components/fonts/Subheading.jsx b/client/src/components/fonts/Subheading.jsx new file mode 100644 index 0000000..c25abf4 --- /dev/null +++ b/client/src/components/fonts/Subheading.jsx @@ -0,0 +1,27 @@ +import React from 'react'; +import styled from 'styled-components'; + +const StyledBody = styled.h2` + opacity: .9; + font-size: 1.2rem; + + white-space: pre-line; + line-height: 1.2; + word-break: break-word; + overflow: hidden; + text-overflow: ellipsis; + + // bold + font-weight: ${(props) => (props.bold ? 'bold' : '')}; + + // fontWeight + font-weight: ${props => props.fontWeight && props.fontWeight}; +`; + +const Subheading = ({ children, bold, ...rest }) => ( + + {children} + +); + +export default Subheading; diff --git a/client/src/components/fonts/Text.jsx b/client/src/components/fonts/Text.jsx new file mode 100644 index 0000000..9a66788 --- /dev/null +++ b/client/src/components/fonts/Text.jsx @@ -0,0 +1,112 @@ +import React from 'react' +import styled from 'styled-components' + +const Text = ({ variant = 'p', children, ...rest }) => { + switch (variant) { + case 'h1': + return

{children}

+ case 'h2': + return

{children}

+ case 'h3': + return

{children}

+ case 'h4': + return

{children}

+ case 'h5': + return
{children}
+ case 'h6': + return
{children}
+ case 'h7': + return {children} + case 'p': + return

{children}

+ } +} + +const CoreText = styled.p` + color: ${(props) => props.theme.text}; + white-space: pre-line; + word-break: break-word; + font-weight: 400; + line-height: 1.5; + letter-spacing: 0.5px; + + // ellipsis + text-overflow: ${(props) => (props.ellipsis ? 'ellipsis' : '')}; + overflow: ${(props) => (props.ellipsis ? 'hidden' : '')}; + white-space: ${(props) => (props.ellipsis ? 'nowrap' : '')}; + + // nowrap + white-space: ${(props) => (props.nowrap ? 'nowrap' : '')}; + + // color + color: ${(props) => props.color && props.color}; + + // fontWeight + font-weight: ${(props) => props.fontWeight && props.fontWeight}; + + // maxWidth + max-width: ${(props) => (props.maxWidth ? `${props.maxWidth}px` : '')}; + + // margin + margin: ${(props) => (props.margin ? props.margin : '')}; + + // uppercase + text-transform: ${(props) => props.uppercase && 'uppercase'}; + + // maxLines + overflow: ${(props) => props.maxLines && 'hidden'}; + text-overflow: ${(props) => props.maxLines && 'ellipsis'}; + display: ${(props) => props.maxLines && '-webkit-box'}; + -webkit-line-clamp: ${(props) => props.maxLines && props.maxLines}; + -webkit-box-orient: ${(props) => props.maxLines && 'vertical'}; +` + +const H1 = styled(CoreText)` + font-size: 42px; + font-weight: 500; + + @media (min-width: ${(props) => props.theme.medium}) { + font-size: 48px; + } +` + +const H2 = styled(CoreText)` + font-size: 30px; + font-weight: 500; + + @media (min-width: ${(props) => props.theme.medium}) { + font-size: 36px; + } +` + +const H3 = styled(CoreText)` + font-size: 24px; + font-weight: 500; +` + +const H4 = styled(CoreText)` + font-size: 18px; + font-weight: 500; +` + +const P = styled(CoreText)` + font-size: 16px; +` + +const H5 = styled(CoreText)` + font-size: 14px; + + @media (min-width: ${(props) => props.theme.medium}) { + font-size: 16px; + } +` + +const H6 = styled(CoreText)` + font-size: 12px; +` + +const H7 = styled(CoreText)` + font-size: 11px; +` + +export default Text diff --git a/client/src/components/footers/MainFooter.jsx b/client/src/components/footers/MainFooter.jsx new file mode 100644 index 0000000..73d1012 --- /dev/null +++ b/client/src/components/footers/MainFooter.jsx @@ -0,0 +1,101 @@ +import React from 'react' +import styled from 'styled-components' +import Logo from 'src/components/displays/Logo' +import Body from 'src/components/fonts/Body' +import useRouter from 'src/util/hooks/useRouter' +import { Link } from 'react-router-dom' +import useIsMobile from 'src/util/hooks/useIsMobile' +import { matchPath } from 'react-router' +import Space from '../layouts/Space' +import theme from 'src/theme' +import Text from '../fonts/Text' +import { FlexRow } from '../layouts/Flex' +import { FlexColumn } from '../layouts/Flex' + +const FooterContainer = styled.div` + border-top: 1px solid ${(props) => props.theme.border.default}; + padding: 1rem; +` + +const JayLink = styled.a` + text-decoration: underline; + color: ${(props) => props.theme.brand[500]}; + font-weight: 400; +` + +const MobileFooter = ({ matched }) => ( + + + + + + Terms of Service + + + Privacy Policy + + + Cookie Policy + + + + + contactcornlet@gmail.com + + {/* + + Built with ❤️ by Jay + */} + {matched && matched.isExact && } + +) + +const StyledLink = styled(Link)` + padding: 0 0.3rem; + + @media (min-width: ${(props) => props.theme.md}px) { + &:hover { + text-decoration: underline; + } + } +` + +const MainFooter = () => { + const router = useRouter() + const matched = matchPath(router.pathname, { + path: '/listing/:lid', + exact: true, + strict: false, + }) + const pathArr = router.pathname.split('/') + const isChatroomPath = pathArr.length === 4 && pathArr[1] === 'profile' && pathArr[2] === 'chat' + const isMobile = useIsMobile() + + if (isChatroomPath && isMobile) return
+ + if (isMobile) return + + return ( + + + + {/* Built with ❤️ by Jay */} + {/* Built with ❤️ by Jay */} + + + + + contactcornlet@gmail.com + + + Terms of Service • + Privacy Policy • + Cookie Policy + + + + + ) +} + +export default MainFooter diff --git a/client/src/components/forms/ListingForm/Amenities.jsx b/client/src/components/forms/ListingForm/Amenities.jsx new file mode 100644 index 0000000..c021e46 --- /dev/null +++ b/client/src/components/forms/ListingForm/Amenities.jsx @@ -0,0 +1,42 @@ +import React from 'react'; +import styled from 'styled-components'; +import Body from 'src/components/fonts/Body'; +import amenities from 'src/constants/amenities'; +import AmenityGrp from 'src/components/displays/AmenityGrp'; +import AmenitiesList from 'src/containers/AmenitiesList'; + +const Container = styled.div` + +`; + +const Amenities = ({ formik }) => { + const toggle = (value) => { + if (formik.values.amenities.includes(value)) { + const newAmenities = [...formik.values.amenities]; + newAmenities.splice(formik.values.amenities.indexOf(value), 1); + formik.setFieldValue('amenities', newAmenities); + } + else { + formik.setFieldValue('amenities', [...formik.values.amenities, value]); + } + }; + + return ( + + Click on amenity icons to activate them + + {amenities.map((amenity) => ( + toggle(amenity.value)} + /> + ))} + + + ); +}; + +export default Amenities; diff --git a/client/src/components/forms/ListingForm/CustomFileUpload.jsx b/client/src/components/forms/ListingForm/CustomFileUpload.jsx new file mode 100644 index 0000000..830e857 --- /dev/null +++ b/client/src/components/forms/ListingForm/CustomFileUpload.jsx @@ -0,0 +1,148 @@ +import React, { useState, useEffect } from 'react' +import styled from 'styled-components' +import FileUpload from 'src/components/inputs/FileUpload' +import ErrMsg from 'src/components/fonts/ErrMsg' +import generator from 'generate-password' +import CircleCross from 'src/components/buttons/CircleCross' + +const CustomFileUpload = ({ formik, name, user }) => { + const [newSrc, setNewSrc] = useState() + const random = generator.generate({ + length: 16, + numbers: true, + }) + + // add new image to formik + useEffect(() => { + if (newSrc) { + const newFiles = [...formik.values[name]] + if (!newFiles.includes(newSrc)) { + newFiles.push(newSrc) + } + formik.setFieldValue(name, newFiles) + } + }, [newSrc, name]) + + // delete image + const handleDelete = (targetSrc) => { + const newFiles = [...formik.values[name]] + if (newFiles.includes(targetSrc)) { + newFiles.splice(newFiles.indexOf(targetSrc), 1) + } + formik.setFieldValue(name, newFiles) + } + + // set default thumbnailIdx to 0 + useEffect(() => { + if (!formik.values.thumbnailIdx) { + formik.setFieldValue('thumbnailIdx', 0) + } + }, []) + + const setThumbnailIdx = (i) => { + formik.setFieldValue('thumbnailIdx', i) + } + + return ( + + + + + {formik.values[name].map((src, i) => { + const isThumbnail = i === formik.values.thumbnailIdx + return ( + + setThumbnailIdx(i)} + /> + + handleDelete(src)} /> + + {isThumbnail && Thumbnail} + setThumbnailIdx(i)}> + Set Thumbnail + + + ) + })} + + + ) +} + +const Container = styled.div` + margin: 1rem 0; +` + +const ImgContainer = styled.div` + margin-top: 2rem; + display: flex; + flex-wrap: wrap; +` + +const CrossContiner = styled.div` + position: absolute; + top: 0; + right: 0; + + @media (min-width: ${(props) => props.theme.md}px) { + display: none; + } +` + +const Img = styled.img` + object-fit: cover; + width: 100px; + height: 100px; + margin: 0.5rem; + border-radius: 5px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + cursor: pointer; + + // isThumbnail + box-shadow: ${(props) => props.isThumbnail && `0 0 0 3px ${props.theme.primary}`}; + + @media (min-width: ${(props) => props.theme.md}px) { + &:hover { + box-shadow: ${(props) => `0 0 0 3px ${props.theme.primary}`}; + } + } +` + +const ThumbnailText = styled.p` + color: ${(props) => props.theme.primary}; + font-weight: bold; + text-align: center; + font-size: 0.9rem; +` + +const SetThumbnailText = styled.p` + color: ${(props) => props.theme.primary}; + font-weight: bold; + text-align: center; + font-size: 0.9rem; + opacity: 0; + cursor: pointer; + + // isThumbnail + display: ${(props) => props.isThumbnail && 'none'}; +` + +const ImgWrapper = styled.div` + position: relative; + + @media (min-width: ${(props) => props.theme.md}px) { + &:hover ${SetThumbnailText} { + opacity: 0.9; + } + + &:hover ${CrossContiner} { + display: block; + } + } +` + +export default CustomFileUpload diff --git a/client/src/components/forms/ListingForm/Form.jsx b/client/src/components/forms/ListingForm/Form.jsx new file mode 100644 index 0000000..65d307a --- /dev/null +++ b/client/src/components/forms/ListingForm/Form.jsx @@ -0,0 +1,223 @@ +import React, { useEffect, useState } from 'react' +import styled from 'styled-components' +import { useFormik } from 'formik' +import * as Yup from 'yup' +import Btn from 'src/components/buttons/Btn' +import api from 'src/util/api' +import log from 'src/util/log' +import { useHistory, Prompt } from 'react-router-dom' +import { useDispatch, useSelector } from 'react-redux' +import useRouter from 'src/util/hooks/useRouter' +import Modal from 'src/components/views/Modal' +import Body from 'src/components/fonts/Body' +import FormContents from './FormContents' +import PolicyDisclaimer from 'src/components/displays/PolicyDisclaimer' +import signin from 'src/util/helpers/signin' +import debounce from 'just-debounce-it' +import Snackbar from 'src/components/displays/Snackbar' + +const Form = styled.form` + @media (min-width: ${(props) => props.theme.md}px) { + max-width: 700px; + } +` + +const Center = styled.div` + display: flex; + justify-content: center; + margin: 2rem 0; +` + +const FormComponent = ({ user, initialValues }) => { + const history = useHistory() + const dispatch = useDispatch() + const tempValues = useSelector((state) => state.tempValues) + const router = useRouter() + + // configure inital values + const defaultValues = { + addr: '', + price: 0, + start: new Date(), + end: new Date(), + type: 'apt', + totalRooms: 0, + availRooms: 0, + bathrooms: 0, + femaleRoommates: 0, + maleRoommates: 0, + amenities: [], + imgs: [], + thumbnailIdx: 0, + desc: '', + active: true, + sold: false, + cornellOnly: false, + } + const devValues = { + addr: 'test addr', + price: 100, + start: new Date(), + end: new Date(), + type: 'apt', + totalRooms: 3, + availRooms: 1, + bathrooms: 1.5, + femaleRoommates: 1, + maleRoommates: 2, + amenities: [], + imgs: [ + 'https://firebasestorage.googleapis.com/v0/b/cornlet-prod.appspot.com/o/temp%2Fforest.jpg?alt=media&token=967fa2f7-3730-4ebf-9b05-aa3c4cafeb59', + 'https://firebasestorage.googleapis.com/v0/b/cornlet-prod.appspot.com/o/user%2F111196813972660835996%2Fcollege-dorm-room-200395471-001-58a1a2a55f9b58819c128c01.jpg?alt=media&token=03a743d2-87c4-4831-a4fd-354bc8f7a2cd', + ], + thumbnailIdx: 0, + desc: 'test description', + active: true, + sold: false, + cornellOnly: false, + } + const dynInitValues = + initialValues || + tempValues || + (process.env.NODE_ENV === 'development' && devValues) || + defaultValues + + // error modal + const [modal, setModal] = useState(false) + const handleClose = () => { + setModal(false) + } + + // define form + const formik = useFormik({ + initialValues: dynInitValues, + validationSchema: Yup.object({ + addr: Yup.string().required('Required'), + toCampus: Yup.number().required('Please select an address from the address options dropdown'), + price: Yup.number().required('Required'), + start: Yup.object().nullable(), + end: Yup.object().nullable(), + type: Yup.string().required('Required'), + imgs: Yup.array().of(Yup.string()).required('Required'), + desc: Yup.string().required('Required'), + active: Yup.boolean().required('Required'), + sold: Yup.boolean().required('Required'), + cornellOnly: Yup.boolean().required('Required'), + }), + onSubmit: async (values) => { + if (initialValues) { + // update listing + await api.put(`/listing/${initialValues._id}/update`, values) + } else if (user) { + // create new listing + await api.post('/listing/create', { ...values, user }) + history.push('/profile/listings') + } else { + // save form values, redirect to login + dispatch({ + type: 'TEMP_VALUES_SET', + payload: values, + }) + signin({ + redirectPath: '/new', + }) + } + }, + }) + + // auto save + const [lastSaved, setLastSaved] = React.useState(null) + const [isSnackbarOpen, setIsSnackbarOpen] = useState(false) + + const formatSaveTime = (date) => { + if (!date) return '' + + let hours = date.getHours() + const ampm = hours >= 12 ? 'pm' : 'am' + hours = hours % 12 + hours = hours ? hours : 12 + + let minutes = date.getMinutes() + minutes = minutes < 10 ? '0' + minutes : minutes + + const strTime = hours + ':' + minutes + ' ' + ampm + return strTime + } + + const debouncedSubmit = React.useCallback( + debounce( + () => + formik.submitForm().then(() => { + setLastSaved(new Date()) + }), + 500 + ), + [formik.submitForm] + ) + + useEffect(() => { + if (initialValues && user) { + debouncedSubmit() + } + }, [debouncedSubmit, formik.values]) + + useEffect(() => { + if (lastSaved) { + setIsSnackbarOpen(true) + } + }, [lastSaved]) + + // error on submit + const hasErrors = Object.keys(formik.errors).length !== 0 + const handleSubmitAttempt = () => { + if (hasErrors) { + setModal(true) + } else if (initialValues && user) { + router.push('/profile/listings') + } + } + + if (tempValues && user) { + api + .post('/listing/create', { ...tempValues, user }) + .then(() => { + dispatch({ + type: 'TEMP_VALUES_SET', + payload: null, + }) + router.history.push('/profile/listings') + }) + .catch((e) => { + log('ERROR new listing submit form', e) + }) + return
Creating listing...
+ } + + return ( + <> +
+ + +
+ + Save Listing + +
+ + There were errors in the form. + Please fix the errors before saving the listing. + + Go back + + + + + + ) +} + +export default FormComponent diff --git a/client/src/components/forms/ListingForm/FormContents.jsx b/client/src/components/forms/ListingForm/FormContents.jsx new file mode 100644 index 0000000..17be14a --- /dev/null +++ b/client/src/components/forms/ListingForm/FormContents.jsx @@ -0,0 +1,123 @@ +import React from 'react' +import Heading from 'src/components/fonts/Heading' +import Text from 'src/components/fonts/Text' +import AddrInput from 'src/components/inputs/AddrInput' +import Checkbox from 'src/components/inputs/Checkbox' +import Incrementor from 'src/components/inputs/Incrementor' +import Input from 'src/components/inputs/Input' +import Select from 'src/components/inputs/Select' +import theme from 'src/theme' +import styled from 'styled-components' +import CustomFileUpload from './CustomFileUpload' +import StartEnd from './StartEnd' + +const FormContents = ({ formik, user }) => ( + + Property Information + + + + + + Photos + + Settings + + + + {user && user.email === 'jj534@cornell.edu' && ( +
+ + +
+ )} +
+) + +const Container = styled.div` + & > * { + margin: 0.5rem 0; + } +` + +const Row = styled.div` + display: flex; + justify-content: space-between; + align-items: center; +` + +const InputContainer = styled.div` + margin: 1rem 0; + + @media (min-width: ${(props) => props.theme.md}px) { + max-width: 400px !important; + } +` + +const VerticalMargin = styled.div` + margin: 2rem 0; +` + +const MarginedHeading = styled(Heading)` + margin-top: 2rem; + margin-bottom: 1rem; +` + +const InfoTextContainer = styled.div` + max-width: 400px; +` + +export default FormContents diff --git a/client/src/components/forms/ListingForm/StartEnd.jsx b/client/src/components/forms/ListingForm/StartEnd.jsx new file mode 100644 index 0000000..251e6e4 --- /dev/null +++ b/client/src/components/forms/ListingForm/StartEnd.jsx @@ -0,0 +1,77 @@ +import React, { useState, useEffect } from 'react'; +import styled from 'styled-components'; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; +import ErrMsg from 'src/components/fonts/ErrMsg'; +import Body from 'src/components/fonts/Body'; + +const Container = styled.div` + display: flex; + align-items: center; + margin: 2rem 0 !important; + + & > * { + margin-right: 1rem; + } +`; + +const StyledPicker = styled(DatePicker)` + border: 1px solid rgba(0, 0, 0, .1); + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + border-radius: 5px; + + cursor: pointer; + text-align: center; + line-height: 1.2; + + width: 130px; + padding: .5rem 1rem; +`; + +const Col = styled.div` + display: flex; + align-items: center; +`; + +const StartEnd = ({ formik }) => { + const startInit = formik.values.start ? new Date(formik.values.start) : new Date(); + const endInit = formik.values.end ? new Date(formik.values.end) : new Date(); + const [start, setStart] = useState(startInit); + const [end, setEnd] = useState(endInit); + + useEffect(() => { + formik.setFieldValue('start', new Date(start)); + }, [start]); + + useEffect(() => { + formik.setFieldValue('end', new Date(end)); + }, [end]); + + return ( + + + setStart(date)} + /> + + + to + + setEnd(date)} + /> + + + + ); +}; + +export default StartEnd; diff --git a/client/src/components/forms/ListingForm/index.jsx b/client/src/components/forms/ListingForm/index.jsx new file mode 100644 index 0000000..16ccb8f --- /dev/null +++ b/client/src/components/forms/ListingForm/index.jsx @@ -0,0 +1,10 @@ +import React from 'react' +import Form from './Form' + +const ListingFormIndex = ({ user, initialValues }) => ( +
+
+
+) + +export default ListingFormIndex diff --git a/client/src/components/headers/BackHeader/index.jsx b/client/src/components/headers/BackHeader/index.jsx new file mode 100644 index 0000000..16944cf --- /dev/null +++ b/client/src/components/headers/BackHeader/index.jsx @@ -0,0 +1,54 @@ +import React from 'react' +import styled from 'styled-components' +import { ReactComponent as LeftArrowRaw } from 'src/assets/svgs/left-arrow.svg' +import { useHistory } from 'react-router-dom' +import Body from 'src/components/fonts/Body' +import Space from 'src/components/layouts/Space' +import useRouter from 'src/util/hooks/useRouter' + +const BackHeader = ({ to, fullwidth, label }) => { + const history = useHistory() + const router = useRouter() + + const handleClick = () => { + if (to) history.push(to) + else if (history.length > 1) { + history.goBack() + } else { + router.push('/') + } + } + + return ( + + + + + {label} + + + ) +} + +const Container = styled.div` + padding: 2rem ${(props) => (props.fullwidth ? '2rem' : '.5rem')}; + display: inline-block; + + @media (min-width: ${(props) => props.theme.medium}) { + padding: 0; + } +` + +const Pointer = styled.div` + cursor: pointer; + display: flex; + align-items: center; +` + +const LeftArrow = styled(LeftArrowRaw)` + width: 20px; + height: 20px; + opacity: 0.8; +` + +export default BackHeader diff --git a/client/src/components/headers/FeedbackBanner/index.jsx b/client/src/components/headers/FeedbackBanner/index.jsx new file mode 100644 index 0000000..a32c0ca --- /dev/null +++ b/client/src/components/headers/FeedbackBanner/index.jsx @@ -0,0 +1,38 @@ +import React, { useState, useEffect } from 'react'; +import styled from 'styled-components'; + +const Container = styled.div` + position: absolute; + left: 0; + right: 0; + padding: .3rem 0; + background: ${(props) => props.theme.primary}; + color: white; + font-size: .8rem; + text-align: center; + opacity: .6; + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); +`; + +const FeedbackBanner = () => { + const [dispText, setDispText] = useState(''); + const texts = [ + 'Would you be able to change this?', + 'Can this be a new part of the website?', + 'Is is possible to change this part?', + ]; + + useEffect(() => { + setDispText(texts[Math.floor(Math.random() * texts.length)]); + }, [window.location, texts]); + + return ( + + + {dispText} + + + ); +}; + +export default FeedbackBanner; diff --git a/client/src/components/headers/MainHeader/Bookmarks/BmDropdown.jsx b/client/src/components/headers/MainHeader/Bookmarks/BmDropdown.jsx new file mode 100644 index 0000000..7da5c02 --- /dev/null +++ b/client/src/components/headers/MainHeader/Bookmarks/BmDropdown.jsx @@ -0,0 +1,56 @@ +import React from 'react'; +import styled from 'styled-components'; +import Dropdown from 'src/components/views/Dropdown'; +import BmListing from './BmListing'; +import PerfectScrollbar from 'react-perfect-scrollbar' + +const Container = styled.div` + max-height: 350px; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 400px; + } + + & > div { + border-bottom: 1px solid rgba(0, 0, 0, .2); + } + + & > div:last-child { + border-bottom: none; + } +`; + +const DropdownContent = styled.div` + background: white; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); +`; + +const NoBm = styled.div` + display: flex; + justify-content: center; + padding: .5rem; +`; + +const BmDropdown = ({ listings, dropdown, setDropdown }) => { + const noBmText = No bookmarks!; + + return ( + + + + + {(!listings || !listings.length) + ? noBmText + : listings.map((listing) => ( + + )) + } + + + + + ); +}; + +export default BmDropdown; diff --git a/client/src/components/headers/MainHeader/Bookmarks/BmListing.jsx b/client/src/components/headers/MainHeader/Bookmarks/BmListing.jsx new file mode 100644 index 0000000..fc59544 --- /dev/null +++ b/client/src/components/headers/MainHeader/Bookmarks/BmListing.jsx @@ -0,0 +1,71 @@ +import React from 'react'; +import styled from 'styled-components'; +import Body from 'src/components/fonts/Body'; +import listingDatestring from 'src/util/helpers/listingDatestring'; +import log from 'src/util/log'; +import api from 'src/util/api'; +import { useSelector, useDispatch } from 'react-redux'; +import { Link } from 'react-router-dom'; +import ListingInfo from 'src/components/fonts/ListingInfo'; + +const Container = styled.div` + display: flex; + width: 100%; + height: 5.3rem; +`; + +const Img = styled.img` + width: 30%; + height: 100%; + object-fit: cover; +`; + +const Data = styled.div` + width: 70%; + height: 100%; + padding: .2rem .5rem; +`; + +const BmListing = ({ listing }) => { + const user = useSelector((state) => state.user); + const dispatch = useDispatch(); + const handleRemove = async (e) => { + try { + e.preventDefault(); + + if (!user) { + dispatch({ + type: 'BM_REMOVE', + payload: listing, + }); + } + else { + dispatch({ + type: 'USER_BM_REMOVE', + payload: listing, + }) + + await api.put(`/user/${user._id}/bm/remove/${listing._id}`) + .catch(({ response }) => log('BmListing', response)) + } + } + catch (error) { + log('BmListing', error); + } + }; + + return ( +
+ + + + + + + + +
+ ); +}; + +export default BmListing; diff --git a/client/src/components/headers/MainHeader/Bookmarks/index.jsx b/client/src/components/headers/MainHeader/Bookmarks/index.jsx new file mode 100644 index 0000000..c5c4dda --- /dev/null +++ b/client/src/components/headers/MainHeader/Bookmarks/index.jsx @@ -0,0 +1,70 @@ +import React, { useState } from 'react' +import { useDispatch, useSelector } from 'react-redux' +import { ReactComponent as BMIconRaw } from 'src/assets/svgs/bookmark.svg' +import ClickableIcon from 'src/components/displays/ClickableIcon' +import CornerRedDot from 'src/components/displays/CornerRedDot' +import api from 'src/util/api' +import useRouter from 'src/util/hooks/useRouter' +import log from 'src/util/log' +import styled from 'styled-components' + +const Bookmarks = () => { + const bm = useSelector((state) => state.bm) + const user = useSelector((state) => state.user) + const [dropdown, setDropdown] = useState(false) + const dispatch = useDispatch() + const router = useRouter() + const handleClick = () => { + setDropdown(true) + + if (!user) { + dispatch({ + type: 'BM_NOTIF_FALSE', + payload: null, + }) + } else { + dispatch({ + type: 'USER_BM_NOTIF_FALSE', + payload: null, + }) + + api + .put(`/user/${user._id}/bm/notif/false`) + .catch(({ response }) => log('Bookmarks', response)) + } + router.push('/profile/bookmarks') + } + + return ( + + + + {(user ? user.bm && user.bm.notif : bm && bm.notif) && } + + + + + ) +} + +const Container = styled.div` + flex-grow: 0; + + @media (min-width: ${(props) => props.theme.md}px) { + position: relative; + } +` + +const BMIconContainer = styled.div` + position: relative; + flex-grow: 0; +` + +const BMIcon = styled(BMIconRaw)` + height: 1.6rem; + width: 1.6rem; + opacity: 0.7; + cursor: pointer; +` + +export default Bookmarks diff --git a/client/src/components/headers/MainHeader/Chat/index.jsx b/client/src/components/headers/MainHeader/Chat/index.jsx new file mode 100644 index 0000000..7be59fa --- /dev/null +++ b/client/src/components/headers/MainHeader/Chat/index.jsx @@ -0,0 +1,45 @@ +import React from 'react' +import styled from 'styled-components' +import { useSelector } from 'react-redux' +import { ReactComponent as ChatIcon } from 'src/assets/svgs/mail.svg' +import CornerRedDot from 'src/components/displays/CornerRedDot' +import { Link } from 'react-router-dom' +import Body from 'src/components/fonts/Body' +import ClickableIcon from 'src/components/displays/ClickableIcon' + +const Chat = () => { + const chatrooms = useSelector((state) => state.chatrooms) + const user = useSelector((state) => state.user) + let hasNotif = false + if (user) { + chatrooms.forEach((chatroom) => { + if (chatroom.notifUids.includes(user.uid)) { + hasNotif = true + } + }) + } + + return ( + + + + + {hasNotif && } + + + + ) +} + +const Container = styled.div` + position: relative; +` + +const StyledChatIcon = styled(ChatIcon)` + height: 1.6rem; + width: 1.6rem; + opacity: 0.7; + cursor: pointer; +` + +export default Chat diff --git a/client/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx b/client/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx new file mode 100644 index 0000000..44c7011 --- /dev/null +++ b/client/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx @@ -0,0 +1,119 @@ +import React, { useEffect, useState } from 'react' +import styled from 'styled-components' +import useRouter from 'src/util/hooks/useRouter' +import { useSelector } from 'react-redux' +import signin from 'src/util/helpers/signin' +import { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock' +import useUnreadChatrooms from 'src/util/hooks/useUnreadChatrooms' +import NotifCounter from 'src/components/displays/NotifCounter' +import { ReactComponent as CloseRaw } from 'src/assets/svgs/close.svg' + +const Container = styled.div` + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 99; + background: white; + height: 100vh; + padding: 1.5rem 0; +` + +export const Header = styled.div` + width: 100%; + display: flex; + justify-content: flex-end; + padding: 0 1.8rem 1rem 0; +` + +export const NavContent = styled.div` + padding: 0 2rem; +` + +export const HoriLine = styled.div` + width: 100%; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + margin: 2rem 0; +` + +export const NavContainer = styled.div` + margin: 2rem 0; + display: flex; +` + +export const NavElt = styled.nav` + font-size: 1.8rem; + cursor: pointer; + margin-right: 1rem; +` + +const CloseSVG = styled(CloseRaw)` + height: 1.5rem; + width: 1.5rem; + opacity: 0.8; + cursor: pointer; + padding: 0.1rem; +` + +const FullscreenNav = ({ setIsMenuOpen }) => { + const router = useRouter() + const handleRedirect = (path) => { + router.history.push(path) + setIsMenuOpen(false) + } + + const user = useSelector((state) => state.user) + const unreadChatroomsCount = useUnreadChatrooms().length + + // prevent scroll + const targetRef = React.createRef() + useEffect(() => { + window.scrollTo(0, 1) + disableBodyScroll(targetRef.current) + + return () => { + clearAllBodyScrollLocks() + } + }, []) + + return ( + +
+ setIsMenuOpen(false)} /> +
+ + + handleRedirect('/')}>Home + + + handleRedirect('/new')}>Create listing + + {user ? ( +
+ + + handleRedirect('/profile')}>My listings + + + handleRedirect('/profile/bookmarks')}>Bookmarks + + + handleRedirect('/profile/chat')}>Messages + {unreadChatroomsCount > 0 && {unreadChatroomsCount}} + + + handleRedirect('/profile/settings')}>Settings + +
+ ) : ( + + Sign in + + )} +
+
+ ) +} + +export default FullscreenNav diff --git a/client/src/components/headers/MainHeader/MobileNav/index.jsx b/client/src/components/headers/MainHeader/MobileNav/index.jsx new file mode 100644 index 0000000..1844fc3 --- /dev/null +++ b/client/src/components/headers/MainHeader/MobileNav/index.jsx @@ -0,0 +1,50 @@ +import React, { useState } from 'react' +import { FlexRow } from 'src/components/layouts/Flex' +import Space from 'src/components/layouts/Space' +import styled from 'styled-components' +import Bookmarks from '../Bookmarks' +import FullscreenNav from './FullscreenNav' +import { ReactComponent as BurgerIcon } from 'src/assets/svgs/burger.svg' + +export const Wrapper = styled.div` + display: flex; + flex-direction: column; +` + +const Container = styled.div` + padding-right: 0.5rem; +` + +export const Burger = styled.div` + cursor: pointer; +` + +export const Line = styled.div` + width: 1.5rem; + border-bottom: 2px solid rgba(0, 0, 0, 0.8); + margin-bottom: 0.3rem; +` + +const MobileNav = () => { + const [isMenuOpen, setIsMenuOpen] = useState(false) + + return ( + + + + + + setIsMenuOpen(true)} /> + + + {isMenuOpen && } + + ) +} + +const StyledBurgerIcon = styled(BurgerIcon)` + height: 30px; + width: 30px; +` + +export default MobileNav diff --git a/client/src/components/headers/MainHeader/index.jsx b/client/src/components/headers/MainHeader/index.jsx new file mode 100644 index 0000000..80a61b8 --- /dev/null +++ b/client/src/components/headers/MainHeader/index.jsx @@ -0,0 +1,72 @@ +import React from 'react' +import styled from 'styled-components' +import Btn from 'src/components/buttons/Btn' +import { Link } from 'react-router-dom' +import Auth from 'src/components/buttons/Auth' +import Logo from 'src/components/displays/Logo' +import useIsDesktop from 'src/util/hooks/useIsDesktop' +import Bookmarks from './Bookmarks' +import Chat from './Chat' +import MobileNav from './MobileNav' +import { ReactComponent as PlusIcon } from 'src/assets/svgs/plus.svg' +import ClickableIcon from 'src/components/displays/ClickableIcon' + +const MainHeader = () => { + const isDesktop = useIsDesktop() + + return ( + + + + + {isDesktop ? ( + + + + + Create listing + + + + + + + ) : ( + + )} + + ) +} + +const Container = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.5rem 0; + position: relative; + + @media (min-width: ${(props) => props.theme.md}px) { + padding-left: 0; + padding-right: 0; + } +` + +const Right = styled.div` + display: flex; + align-items: center; + + & > * { + margin-left: 1rem; + } +` + +const StyledPlusIcon = styled(PlusIcon)` + fill: #fff; +` + +const ButtonText = styled.p` + margin-left: 0.2rem; + line-height: 1.5; +` + +export default MainHeader diff --git a/client/src/components/headers/Navbar/NavElt.jsx b/client/src/components/headers/Navbar/NavElt.jsx new file mode 100644 index 0000000..9bf21a5 --- /dev/null +++ b/client/src/components/headers/Navbar/NavElt.jsx @@ -0,0 +1,40 @@ +import React from 'react'; +import styled from 'styled-components'; +import { Link, useLocation } from 'react-router-dom'; +import NotifCounter from 'src/components/displays/NotifCounter'; + +const Container = styled.div` + padding: 1rem; + display: flex; + align-items: center; + + // selected + border-bottom: ${(props) => (props.selected ? `3px solid ${props.theme.primary}` : '')}; +`; + +const Label = styled.p` + opacity: .8; + + // notifCount + margin-right: ${props => props.notifCount && '.5rem'}; + + // selected; + opacity: ${(props) => (props.selected ? '1' : '')}; + color: ${(props) => (props.selected ? props.theme.primary : '')}; +`; + +const NavElt = ({ label, to, notifCount }) => { + const { pathname } = useLocation(); + const selected = pathname.includes(to); + + return ( + + + + {notifCount > 0 && {notifCount}} + + + ); +}; + +export default NavElt; diff --git a/client/src/components/headers/Navbar/index.jsx b/client/src/components/headers/Navbar/index.jsx new file mode 100644 index 0000000..bc22ae5 --- /dev/null +++ b/client/src/components/headers/Navbar/index.jsx @@ -0,0 +1,58 @@ +import React from 'react'; +import styled from 'styled-components'; +import NavElt from './NavElt'; +import useUnreadChatrooms from 'src/util/hooks/useUnreadChatrooms'; + +const Container = styled.div` + overflow: hidden; +`; + +const NavRow = styled.div` + display: flex; + overflow-y: auto; + + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ + + &::-webkit-scrollbar { + display: none; + } +`; + +const HrLine = styled.div` + position: absolute; + border-bottom: 1px solid rgba(0, 0, 0, .2); + left: 0; + right: 0; +`; + +const Navbar = () => { + const unreadChatroomsCount = useUnreadChatrooms().length; + + return ( + + + + + + + + + + ) +}; + +export default Navbar; diff --git a/client/src/components/inputs/AddrInput.jsx b/client/src/components/inputs/AddrInput.jsx new file mode 100644 index 0000000..e8b0ae4 --- /dev/null +++ b/client/src/components/inputs/AddrInput.jsx @@ -0,0 +1,119 @@ +import React from 'react' +import PlacesAutocomplete, { geocodeByAddress, getLatLng } from 'react-places-autocomplete' +import useScript from 'src/util/hooks/useScript' +import Input from 'src/components/inputs/Input' +import styled from 'styled-components' +import calcDistance from 'src/util/helpers/calcDistance' +import log from 'src/util/log' +import LoadingDots from '../displays/LoadingDots' +import Dropdown from '../views/Dropdown' +import Body from '../fonts/Body' +import ErrMsg from '../fonts/ErrMsg' +import ListingLocation from '../displays/ListingLocation' + +const AddrInput = ({ formik, name, label }) => { + const [loaded, error] = useScript( + `https://maps.googleapis.com/maps/api/js?key=${process.env.REACT_APP_MAP_KEY}&libraries=places` + ) + + const handleChange = (address) => { + formik.setFieldValue(name, address) + formik.setFieldTouched('toCampus', true) + + // reset values on addr change + const { lat, lng, toCampus } = formik.values + if (lat !== '') formik.setFieldValue('lat', '') + if (lng !== '') formik.setFieldValue('lng', '') + if (toCampus !== '') formik.setFieldValue('toCampus', '') + } + + const handleSelect = (address) => { + handleChange(address) + geocodeByAddress(address) + .then((results) => getLatLng(results[0])) + .then((latLng) => { + const minDistance = Math.min( + calcDistance(42.443147, -76.485249, latLng.lat, latLng.lng), // collegetown + calcDistance(42.447549, -76.487739, latLng.lat, latLng.lng), // west + calcDistance(42.451288, -76.482072, latLng.lat, latLng.lng) // north + ) + formik.setFieldValue('toCampus', Math.round(minDistance * 10) / 10) + formik.setFieldValue('lat', latLng.lat) + formik.setFieldValue('lng', latLng.lng) + }) + .catch((e) => log('AddrInput', e)) + } + + if (!loaded || error) return
+ + return ( + + {({ getInputProps, suggestions, getSuggestionItemProps, loading }) => ( + + + + + + { + if (!bool) suggestions = [] + }} + alignLeft + alignTop> + + {loading ? ( + + ) : ( + suggestions.map((suggestion) => ( + + {suggestion.description} + + )) + )} + + + + + )} + + ) +} + +const Container = styled.div` + width: 100%; +` + +const DropdownContainer = styled.div` + position: relative; + margin-top: 6px; +` + +const DropdownContent = styled.div` + background: white; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +` + +const Suggestion = styled.div` + padding: 0.5rem 1rem; + cursor: pointer; + + // active + background: ${(props) => (props.active ? 'rgba(0, 0, 0, .1)' : '')}; +` + +export default AddrInput diff --git a/client/src/components/inputs/Checkbox.jsx b/client/src/components/inputs/Checkbox.jsx new file mode 100644 index 0000000..54cd12c --- /dev/null +++ b/client/src/components/inputs/Checkbox.jsx @@ -0,0 +1,80 @@ +import React from 'react'; +import styled from 'styled-components'; +import Label from 'src/components/fonts/Label'; +import ErrMsg from 'src/components/fonts/ErrMsg'; +import Body from 'src/components/fonts/Body'; +import MaterialCheckbox from '@material-ui/core/Checkbox'; +import { withStyles } from '@material-ui/core/styles'; +import theme from 'src/theme'; + +const StyledCheckbox = withStyles({ + root: { + color: theme.primary, + '&$checked': { + color: theme.primary, + }, + }, + checked: {}, +})((props) => ); + +const Wrapper = styled.div` + // hasSublabel + margin-bottom: ${(props) => (props.hasSublabel ? '1rem !important' : '')}; +`; + +const InputArea = styled.div` + display: flex; + align-items: center; + + // hasSublabel + align-items: ${(props) => (props.hasSublabel ? 'flex-start' : '')}; +`; + +const LabelSection = styled.div` + display: flex; + flex-direction: column; + margin-left: 1rem; +`; + +const CheckboxLabel = styled(Label)` + margin-bottom: .2rem; + + // hasSublabel + font-weight: ${(props) => (props.hasSublabel ? 'bold' : '')}; + opacity: ${(props) => (props.hasSublabel ? '.8' : '')}; +`; + +const Checkbox = ({ + label, sublabel, name, formik, ...rest +}) => { + const hasError = formik ? formik.touched[name] && formik.errors[name] : false; + + const handleChange = (e) => { + if (e.target.checked) { + formik.setFieldValue(name, true); + } + else { + formik.setFieldValue(name, false); + } + }; + + return ( + + + + + {label} + {sublabel} + + + {hasError ? ( + {formik.errors[name]} + ) : null} + + ); +}; + +export default Checkbox; diff --git a/client/src/components/inputs/FileUpload.jsx b/client/src/components/inputs/FileUpload.jsx new file mode 100644 index 0000000..3108212 --- /dev/null +++ b/client/src/components/inputs/FileUpload.jsx @@ -0,0 +1,44 @@ +import React, { useState } from 'react' +import styled from 'styled-components' +import uploadFile from 'src/services/firebase/uploadFile' +import log from 'src/util/log' +import Loading from 'src/components/displays/Loading' + +const Container = styled.div` + display: flex; + align-items: center; +` + +const FileUpload = ({ path, setSrc }) => { + const [loading, setLoading] = useState(false) + + const handleUploadFile = (file) => + new Promise((resolve, reject) => { + uploadFile(file, path) + .then((url) => { + setSrc(url) + resolve() + }) + .catch((error) => { + setLoading(false) + log('FileUpload', error) + reject(error) + }) + }) + + const handleUpload = async (e) => { + setLoading(true) + const promises = [...e.target.files].map((file) => handleUploadFile(file)) + await Promise.all(promises) + setLoading(false) + } + + return ( + + + {loading ? :
} + + ) +} + +export default FileUpload diff --git a/client/src/components/inputs/Incrementor.jsx b/client/src/components/inputs/Incrementor.jsx new file mode 100644 index 0000000..f98e10a --- /dev/null +++ b/client/src/components/inputs/Incrementor.jsx @@ -0,0 +1,63 @@ +import React from 'react'; +import styled from 'styled-components'; +import Body from 'src/components/fonts/Body'; + +const Container = styled.div` + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; +`; + +const IncrementorSection = styled.div` + display: flex; + align-items: center; + + & > p { + width: 60px; + font-weight: bold; + text-align: center; + } +`; + +const IncrementBtn = styled.button` + background: inherit; + color: ${(props) => props.theme.primary}; + cursor: pointer; + + font-size: 1.5rem; + text-align: center; + + width: 2rem; + height: 2rem; + padding: 0; + + border-radius: 50%; + border: 1px solid ${(props) => props.theme.primary}; +`; + +const Incrementor = ({ + formik, label, name, increment, +}) => { + const dynIncrement = increment || 1; + const handleIncrement = () => { + formik.setFieldValue(name, Number(formik.values[name]) + dynIncrement, false); + }; + const handleDecrement = () => { + const val = Number(formik.values[name]) - dynIncrement; + formik.setFieldValue(name, val < 0 ? 0 : val, false); + }; + + return ( + + {label} + + - + {formik.values[name]} + + + + + ); +}; + +export default Incrementor; diff --git a/client/src/components/inputs/Input.jsx b/client/src/components/inputs/Input.jsx new file mode 100644 index 0000000..3036d8b --- /dev/null +++ b/client/src/components/inputs/Input.jsx @@ -0,0 +1,89 @@ +import React from 'react'; +import styled from 'styled-components'; +import { withStyles } from '@material-ui/core/styles'; +import TextField from '@material-ui/core/TextField'; +import InputAdornment from '@material-ui/core/InputAdornment'; +import theme from 'src/theme'; + +const StyledTextField = withStyles({ + root: { + '& label.Mui-focused': { + color: theme.primary, + }, + '& .MuiInput-underline:after': { + borderBottomColor: theme.primary, + }, + '& .MuiOutlinedInput-root': { + '&.Mui-focused fieldset': { + borderColor: theme.primary, + }, + }, + '& .MuiOutlinedInput-multiline': { + padding: '.5rem 1rem', + }, + }, +})(TextField); + +const Container = styled.div` + width: 100%; + display: flex; + font-size: 16px; + + & textarea { + line-height: 1.5; + word-break: break-word; + white-space: pre-line; + + // lineHeight + line-height: ${(props) => (props.lineHeight ? `${props.lineHeight}px` : '')}; + + // height based on rows + height: ${(props) => (props.rows && props.lineHeight ? `${props.rows * props.lineHeight}px}` : '')}; + } + + & > * { + flex-grow: 2; + } + + // width + width: ${(props) => (props.width ? `${props.width}px` : '')}; +`; + +const Input = ({ + formik, name, label, adornment, multiline, width, margin, rows, lineHeight, ...rest +}) => { + const hasError = formik ? formik.touched[name] && formik.errors[name] : false; + const error = hasError ? formik.errors[name] : undefined; + const formikProps = formik ? formik.getFieldProps(name) : []; + const wrappedAdornment = adornment + ? {adornment} + : null; + const multilineProps = { + multiline, + variant: 'outlined', + rows: rows || 20, + }; + const conditionalMultiline = multiline ? multilineProps : {}; + + return ( + + + + ); +}; + +export default Input; diff --git a/client/src/components/inputs/Searchbar.jsx b/client/src/components/inputs/Searchbar.jsx new file mode 100644 index 0000000..73b45da --- /dev/null +++ b/client/src/components/inputs/Searchbar.jsx @@ -0,0 +1,71 @@ +import React, { useState, useEffect } from 'react'; +import styled from 'styled-components'; +import updateQuery from 'src/util/path/updateQuery'; +import getQuery from 'src/util/path/getQuery'; +import { useLocation, useHistory } from 'react-router-dom'; +import searchSvg from './search.svg'; + +const Form = styled.form` + +`; + +const Input = styled.input` + width: 15px; + color: transparent; + cursor: pointer; + background: white url(${(props) => props.searchSvg}) no-repeat 9px center; + padding: 9px 10px 9px 30px; + opacity: .6; + margin-right: 1rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + font-size: 16px; + + -webkit-border-radius: 10em; + -moz-border-radius: 10em; + border-radius: 10em; + + -webkit-transition: all .5s; + -moz-transition: all .5s; + transition: all .5s; + + &:focus, &:valid { + width: 11rem; + padding-left: 40px; + color: #000; + background-color: #fff; + cursor: auto; + opacity: 1; + } +`; + +const Searchbar = () => { + const [q, setQ] = useState(); + const location = useLocation(); + const history = useHistory(); + const change = (e) => { + e.preventDefault(); + const newQ = e.target.value; + setQ(newQ); + }; + const handleSubmit = (e) => { + e.preventDefault(); + updateQuery({ q }, location, history); + }; + useEffect(() => { + const searchQuery = getQuery(location).q || ''; + setQ(searchQuery); + }, [location]); + return ( + + + + ); +}; + +export default Searchbar; diff --git a/client/src/components/inputs/Select.jsx b/client/src/components/inputs/Select.jsx new file mode 100644 index 0000000..256ec0b --- /dev/null +++ b/client/src/components/inputs/Select.jsx @@ -0,0 +1,54 @@ +import React from 'react' +import styled from 'styled-components' +import TextField from '@material-ui/core/TextField' +import MenuItem from '@material-ui/core/MenuItem' +import { makeStyles } from '@material-ui/core/styles' + +const Select = ({ formik, name, opts, label, width, ...rest }) => { + const hasError = formik ? formik.touched[name] && formik.errors[name] : false + const error = hasError ? formik.errors[name] : undefined + const formikProps = formik ? formik.getFieldProps(name) : [] + const classes = useStyles() + + return ( + + + {opts.map((option) => ( + + {option.label} + + ))} + + + ) +} + +const Container = styled.div` + min-width: 100px; + + // width + min-width: ${(props) => (props.width ? `${props.width}px` : '')}; + + & .MuiSelect-outlined { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } +` + +const useStyles = makeStyles(() => ({ + textField: { + width: '100%', + 'text-align': 'center', + }, +})) + +export default Select diff --git a/client/src/components/inputs/search.svg b/client/src/components/inputs/search.svg new file mode 100644 index 0000000..97e6385 --- /dev/null +++ b/client/src/components/inputs/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/components/layouts/Flex.jsx b/client/src/components/layouts/Flex.jsx new file mode 100644 index 0000000..ea71d8d --- /dev/null +++ b/client/src/components/layouts/Flex.jsx @@ -0,0 +1,42 @@ +import styled from 'styled-components'; + +const FlexElement = styled.div` + display: flex; + + // justifySpaceBetween + justify-content: ${(props) => props.justifySpaceBetween && 'space-between'}; + + // justifyCenter + justify-content: ${(props) => props.justifyCenter && 'center'}; + + // justifyEnd + justify-content: ${(props) => props.justifyEnd && 'flex-end'}; + + // alignStart + align-items: ${(props) => props.alignStart && 'flex-start'}; + + // alignCenter + align-items: ${(props) => props.alignCenter && 'center'}; + + // alignEnd + align-items: ${(props) => props.alignEnd && 'flex-end'}; + + // flexDirection + flex-direction: ${(props) => props.flexDirection && props.flexDirection}; + + // wrap + flex-wrap: ${(props) => props.wrap && 'wrap'}; + + // fullWidth + width: ${(props) => props.fullWidth && '100%'}; + + // fullHeight + height: ${(props) => props.fullHeight && '100%'}; +` + +export const FlexColumn = styled(FlexElement)` + flex-direction: column; +` + +export const FlexRow = styled(FlexElement)` +` \ No newline at end of file diff --git a/client/src/components/layouts/Space.jsx b/client/src/components/layouts/Space.jsx new file mode 100644 index 0000000..133e89e --- /dev/null +++ b/client/src/components/layouts/Space.jsx @@ -0,0 +1,8 @@ +import styled from 'styled-components'; + +const Space = styled.div` + margin: ${(props) => props.margin && props.margin}; + padding: ${(props) => props.padding && props.padding}; +` + +export default Space diff --git a/client/src/components/views/Dropdown/index.jsx b/client/src/components/views/Dropdown/index.jsx new file mode 100644 index 0000000..f520047 --- /dev/null +++ b/client/src/components/views/Dropdown/index.jsx @@ -0,0 +1,81 @@ +import React, { useRef } from 'react' +import styled from 'styled-components' + +const Dropdown = ({ show, setShow, children, alignLeft, alignRight, alignTop, ...rest }) => { + const handleClick = (e) => { + e.stopPropagation() + } + const DropdownRef = useRef() + + const closeDropdown = () => { + setShow(false) + } + + const handleOverlayClick = (event) => { + event.stopPropagation() + event.preventDefault() + closeDropdown() + } + + return ( + <> + + {children} + + {show ? : null} + + ) +} + +const Overlay = styled.div` + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 998; +` + +const Container = styled.div` + position: absolute; + margin-top: 10px; + left: 0; + right: 0; + z-index: 999; + + @media (min-width: ${(props) => props.theme.md}px) { + top: 40px; + width: auto; + + // alignLeft + left: ${(props) => props.alignLeft && 'initial'}; + right: initial; + + // alignRight + left: ${(props) => props.alignRight && '-375px'}; + right: ${(props) => props.alignRight && '0'}; + + // alignTop + top: ${(props) => (props.alignTop ? '0' : '')}; + } + + & div { + white-space: nowrap; + flex-shrink: 0; + } + + // show + display: ${(props) => (props.show ? '' : 'none')}; + + // alignTop + margin-top: ${(props) => (props.alignTop ? '0' : '')}; +` + +export default Dropdown diff --git a/client/src/components/views/Modal/index.jsx b/client/src/components/views/Modal/index.jsx new file mode 100644 index 0000000..fbaa55f --- /dev/null +++ b/client/src/components/views/Modal/index.jsx @@ -0,0 +1,86 @@ +import React from 'react' +import { makeStyles } from '@material-ui/core/styles' +import MaterialModal from '@material-ui/core/Modal' +import Backdrop from '@material-ui/core/Backdrop' +import Fade from '@material-ui/core/Fade' +import styled from 'styled-components' +import { ReactComponent as CloseRaw } from 'src/assets/svgs/close.svg' +import Heading from 'src/components/fonts/Heading' + +const useStyles = makeStyles(() => ({ + modal: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + outline: 'none !important', + }, +})) + +const Modal = ({ heading, open, handleClose, children, contentPadding, ...rest }) => { + const classes = useStyles() + + return ( + + + + + {heading} + + + {children} + + + + ) +} + +const Container = styled.div` + background: white; + outline: none !important; + + padding: 1rem; + width: 90vw; + min-height: 150px; + border-radius: 8px; + + @media (min-width: ${(props) => props.theme.md}px) { + width: unset; + max-width: 80vw; + } +` + +const TopRow = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.5rem; +` + +const CloseSVG = styled(CloseRaw)` + height: 1rem; + width: 1rem; + opacity: 0.7; + cursor: pointer; +` + +const Content = styled.div` + text-align: center; + + & > button { + margin-top: 1rem; + } + + // contentPadding + padding: ${(props) => (props.contentPadding ? '1rem 0' : '')}; +` + +export default Modal diff --git a/client/src/components/views/deprec/DynContainer/index.jsx b/client/src/components/views/deprec/DynContainer/index.jsx new file mode 100644 index 0000000..e8b1e47 --- /dev/null +++ b/client/src/components/views/deprec/DynContainer/index.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Wrapper = styled.div` + width: 100%; + display: flex; + justify-content: center; +`; + +const Container = styled.div` + width: 90%; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 70%; + } +`; + +const DynContainer = ({ children, ...rest }) => ( + + + {children} + + +); + +export default DynContainer; diff --git a/client/src/constants/amenities.jsx b/client/src/constants/amenities.jsx new file mode 100644 index 0000000..d784b37 --- /dev/null +++ b/client/src/constants/amenities.jsx @@ -0,0 +1,54 @@ +import React from 'react'; +import { ReactComponent as WifiSVG } from 'src/assets/svgs/wifi.svg'; +import { ReactComponent as CarSVG } from 'src/assets/svgs/car.svg'; +import { ReactComponent as GymSVG } from 'src/assets/svgs/gym.svg'; +import { ReactComponent as HeaterSVG } from 'src/assets/svgs/heater.svg'; +import { ReactComponent as AirconSVG } from 'src/assets/svgs/snowflake.svg'; +import { ReactComponent as SofaSVG } from 'src/assets/svgs/sofa.svg'; +import { ReactComponent as UtilitiesSVG } from 'src/assets/svgs/utilities.svg'; +import { ReactComponent as BusSVG } from 'src/assets/svgs/bus.svg'; + +const amenities = [ + { + icon: , + label: 'Wifi', + value: 'wifi', + }, + { + icon: , + label: 'Parking', + value: 'parking', + }, + { + icon: , + label: 'Gym', + value: 'gym', + }, + { + icon: , + label: 'Heater', + value: 'heater', + }, + { + icon: , + label: 'Aircon', + value: 'aircon', + }, + { + icon: , + label: 'Furnished', + value: 'furnished', + }, + { + icon: , + label: 'Utilities Included', + value: 'utilities', + }, + { + icon: , + label: 'TCAT Accessible', + value: 'tcat', + }, +]; + +export default amenities; diff --git a/client/src/containers/AmenitiesList.jsx b/client/src/containers/AmenitiesList.jsx new file mode 100644 index 0000000..417c27d --- /dev/null +++ b/client/src/containers/AmenitiesList.jsx @@ -0,0 +1,17 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.div` + display: flex; + flex-wrap: wrap; + align-items: center; + max-width: 370px; +`; + +const AmenitiesList = ({ children, ...rest }) => ( + + {children} + +); + +export default AmenitiesList; diff --git a/client/src/containers/DynCardList/index.jsx b/client/src/containers/DynCardList/index.jsx new file mode 100644 index 0000000..b356c96 --- /dev/null +++ b/client/src/containers/DynCardList/index.jsx @@ -0,0 +1,46 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Wrapper = styled.div` + display: flex; + justify-content: center; +`; + +const Container = styled.div` + display: flex; + flex-direction: column; + flex-wrap: wrap; + align-items: center; + justify-content: center; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 1565px; + flex-direction: row; + align-items: flex-start; + justify-content: flex-start; + + & > div { + padding-left: .5rem !important; + padding-right: .5rem !important; + } + + & > div:nth-child(odd) { + padding-left: 0; + } + + & > div:nth-child(even) { + padding-right: 0; + } + } +`; + +const DynCardList = ({ children, listings, ...rest }) => ( + + + {children} +
+ + +); + +export default DynCardList; diff --git a/client/src/containers/HoriCenter.jsx b/client/src/containers/HoriCenter.jsx new file mode 100644 index 0000000..d1ba958 --- /dev/null +++ b/client/src/containers/HoriCenter.jsx @@ -0,0 +1,9 @@ +import styled from 'styled-components'; + +const HoriCenter = styled.div` + display: flex; + justify-content: center; + align-items: center; +`; + +export default HoriCenter; diff --git a/client/src/containers/RenderOn.jsx b/client/src/containers/RenderOn.jsx new file mode 100644 index 0000000..9cb0ca9 --- /dev/null +++ b/client/src/containers/RenderOn.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.div` + display: none; + display: ${(props) => (props.mobile ? 'block' : '')}; + + @media (min-width: ${(props) => props.theme.md}px) { + display: none; + display: ${(props) => (props.desktop ? 'block' : '')}; + } +`; + +const RenderOn = ({ children, ...rest }) => ( + + {children} + +); + +export default RenderOn; diff --git a/client/src/containers/VertCardList.jsx b/client/src/containers/VertCardList.jsx new file mode 100644 index 0000000..c2ef074 --- /dev/null +++ b/client/src/containers/VertCardList.jsx @@ -0,0 +1,37 @@ +import React from 'react' +import styled from 'styled-components' + +const VertCardList = ({ children, listings, ...rest }) => ( + + {children} + +) + +const Wrapper = styled.div` + display: flex; + justify-content: center; +` + +const Container = styled.div` + @media (min-width: ${(props) => props.theme.md}px) { + width: ${(props) => `${props.theme.md}px`}; + flex-direction: row; + align-items: flex-start; + justify-content: flex-start; + + & > div { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + + & > div:nth-child(odd) { + padding-left: 0; + } + + & > div:nth-child(even) { + padding-right: 0; + } + } +` + +export default VertCardList diff --git a/client/src/main.jsx b/client/src/main.jsx new file mode 100644 index 0000000..b01687e --- /dev/null +++ b/client/src/main.jsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom' +import AppThemeWrapper from './components/core/AppThemeWrapper' + +ReactDOM.render(, document.getElementById('root')); +// ReactDOM.createRoot(document.getElementById('root')).render( +// +// +// , +// ) diff --git a/client/src/pages/auth-callback/index.jsx b/client/src/pages/auth-callback/index.jsx new file mode 100644 index 0000000..73a4c3d --- /dev/null +++ b/client/src/pages/auth-callback/index.jsx @@ -0,0 +1,74 @@ +import React, { useEffect } from 'react'; +import styled from 'styled-components'; +import api from 'src/util/api'; +import { useDispatch, useSelector } from 'react-redux'; +import MainHeader from 'src/components/headers/MainHeader'; +import useRouter from 'src/util/hooks/useRouter'; +import log from 'src/util/log'; + +const Container = styled.div` + +`; + +export const Content = styled.div` + display: flex; + justify-content: center; +`; + +const AuthCallback = () => { + const dispatch = useDispatch(); + const authing = useSelector(state => state.authing); + const redirectPath = useSelector(state => state.redirectPath) + const router = useRouter(); + + useEffect(() => { + api.get('/auth/callback') + .then((res) => { + dispatch({ + type: 'USER_SET', + payload: res.data.user, + }); + dispatch({ + type: 'AUTHING_SET', + payload: false, + }); + dispatch({ + type: 'CHATROOMS_SET', + payload: res.data.chatrooms, + }); + router.history.push(redirectPath || '/profile/listings'); + dispatch({ + type: 'REDIRECT_PATH_SET', + payload: null, + }); + }) + .catch(({ response }) => { + log('AuthCallback', response); + dispatch({ + type: 'USER_SET', + payload: null, + }); + dispatch({ + type: 'AUTHING_SET', + payload: false, + }); + }) + }, []) + + if (authing) { + return ( + + + + Handling authentication + + + ) + } + else { + router.history.push('/'); + return ; + } +}; + +export default AuthCallback; diff --git a/client/src/pages/cookie-policy/index.jsx b/client/src/pages/cookie-policy/index.jsx new file mode 100644 index 0000000..257b14c --- /dev/null +++ b/client/src/pages/cookie-policy/index.jsx @@ -0,0 +1,73 @@ +import React from 'react'; +import styled from 'styled-components'; +import MainHeader from 'src/components/headers/MainHeader'; + +const Container = styled.div` + padding: 2rem 0; +`; + +const html = ` + +
+
COOKIE POLICY

Last updated June 12, 2020



This Cookie Policy explains how Cornlet Housing ("Company", "we", "us", and "our") uses cookies and similar technologies to recognize you when you visit our websites at https://www.cornlet.com/, ("Websites"). It explains what these technologies are and why we use them, as well as your rights to control our use of them.

In some cases we may use cookies to collect personal information, or that becomes personal information if we combine it with other information.

What are cookies?

Cookies are small data files that are placed on your computer or mobile device when you visit a website. Cookies are widely used by website owners in order to make their websites work, or to work more efficiently, as well as to provide reporting information.

Cookies set by the website owner (in this case, Cornlet Housing) are called "first party cookies". Cookies set by parties other than the website owner are called "third party cookies". Third party cookies enable third party features or functionality to be provided on or through the website (e.g. like advertising, interactive content and analytics). The parties that set these third party cookies can recognize your computer both when it visits the website in question and also when it visits certain other websites.

Why do we use cookies?

We use first and third party cookies for several reasons. Some cookies are required for technical reasons in order for our Websites to operate, and we refer to these as "essential" or "strictly necessary" cookies. Other cookies also enable us to track and target the interests of our users to enhance the experience on our Online Properties. Third parties serve cookies through our Websites for advertising, analytics and other purposes. This is described in more detail below.

The specific types of first and third party cookies served through our Websites and the purposes they perform are described below (please note that the specific cookies served may vary depending on the specific Online Properties you visit):

How can I control cookies?

You have the right to decide whether to accept or reject cookies. You can exercise your cookie rights by setting your preferences in the Cookie Consent Manager. The Cookie Consent Manager allows you to select which categories of cookies you accept or reject. Essential cookies cannot be rejected as they are strictly necessary to provide you with services.

The Cookie Consent Manager can be found in the notification banner and on our website. If you choose to reject cookies, you may still use our website though your access to some functionality and areas of our website may be restricted. You may also set or amend your web browser controls to accept or refuse cookies. As the means by which you can refuse cookies through your web browser controls vary from browser-to-browser, you should visit your browser's help menu for more information.

In addition, most advertising networks offer you a way to opt out of targeted advertising. If you would like to find out more information, please visit http://www.aboutads.info/choices/ or http://www.youronlinechoices.com.

The specific types of first and third party cookies served through our Websites and the purposes they perform are described in the table below (please note that the specific cookies served may vary depending on the specific Online Properties you visit):

Essential website cookies:

These cookies are strictly necessary to provide you with services available through our Websites and to use some of its features, such as access to secure areas.

Name:__tlbcpv
Purpose:Used to record unique visitor views of the consent banner.
Provider:.termly.io
Service:Termly View Service Privacy Policy
Country:United States
Type:http_cookie
Expires in:1 year

Analytics and customization cookies:

These cookies collect information that is used either in aggregate form to help us understand how our Websites are being used or how effective our marketing campaigns are, or to help us customize our Websites for you.

Name:_gid
Purpose:Keeps an entry of unique ID which is then used to come up with statistical data on website usage by visitors. It is a HTTP cookie type and expires after a browsing session.
Provider:.cornlet.com
Service:Google Analytics View Service Privacy Policy
Country:United States
Type:http_cookie
Expires in:1 day
Name:_hjIncludedInSample
Purpose:This cookie is set to let Hotjar know whether that visitor is included in the sample which is used to generate Heatmaps, Funnels, Recordings, etc.
Provider:www.cornlet.com
Service:Hotjar View Service Privacy Policy
Country:United States
Type:http_cookie
Expires in:session
Name:_ga
Purpose:It records a particular ID used to come up with data about website usage by the user. It is a HTTP cookie that expires after 2 years.
Provider:.cornlet.com
Service:Google Analytics View Service Privacy Policy
Country:United States
Type:http_cookie
Expires in:1 year 11 months 29 days
Name:_gat#
Purpose:Enables Google Analytics regulate the rate of requesting. It is a HTTP cookie type that lasts for a session.
Provider:.cornlet.com
Service:Google Analytics View Service Privacy Policy
Country:United States
Type:http_cookie
Expires in:1 minute

Unclassified cookies:

These are cookies that have not yet been categorized. We are in the process of classifying these cookies with the help of their providers.

Name:_hjid
Purpose:__________
Provider:www.cornlet.com
Service:__________
Country:United States
Type:html_local_storage
Expires in:persistent
Name:_hjid
Purpose:__________
Provider:.cornlet.com
Service:__________
Country:United States
Type:http_cookie
Expires in:session
Name:_hjRecordingEnabled
Purpose:__________
Provider:www.cornlet.com
Service:__________
Country:United States
Type:html_session_storage
Expires in:session
Name:hjViewportId
Purpose:__________
Provider:www.cornlet.com
Service:__________
Country:United States
Type:html_session_storage
Expires in:session
Name:_hjRecordingLastActivity
Purpose:__________
Provider:www.cornlet.com
Service:__________
Country:United States
Type:html_session_storage
Expires in:session

What about other tracking technologies, like web beacons?

Cookies are not the only way to recognize or track visitors to a website. We may use other, similar technologies from time to time, like web beacons (sometimes called "tracking pixels" or "clear gifs"). These are tiny graphics files that contain a unique identifier that enable us to recognize when someone has visited our Websites or opened an e-mail including them. This allows us, for example, to monitor the traffic patterns of users from one page within a website to another, to deliver or communicate with cookies, to understand whether you have come to the website from an online advertisement displayed on a third-party website, to improve site performance, and to measure the success of e-mail marketing campaigns. In many instances, these technologies are reliant on cookies to function properly, and so declining cookies will impair their functioning.

Do you use Flash cookies or Local Shared Objects?

Websites may also use so-called "Flash Cookies" (also known as Local Shared Objects or "LSOs") to, among other things, collect and store information about your use of our services, fraud prevention and for other site operations.

If you do not want Flash Cookies stored on your computer, you can adjust the settings of your Flash player to block Flash Cookies storage using the tools contained in the Website Storage Settings Panel. You can also control Flash Cookies by going to the Global Storage Settings Panel and following the instructions (which may include instructions that explain, for example, how to delete existing Flash Cookies (referred to "information" on the Macromedia site), how to prevent Flash LSOs from being placed on your computer without your being asked, and (for Flash Player 8 and later) how to block Flash Cookies that are not being delivered by the operator of the page you are on at the time).

Please note that setting the Flash Player to restrict or limit acceptance of Flash Cookies may reduce or impede the functionality of some Flash applications, including, potentially, Flash applications used in connection with our services or online content.

Do you serve targeted advertising?

Third parties may serve cookies on your computer or mobile device to serve advertising through our Websites. These companies may use information about your visits to this and other websites in order to provide relevant advertisements about goods and services that you may be interested in. They may also employ technology that is used to measure the effectiveness of advertisements. This can be accomplished by them using cookies or web beacons to collect information about your visits to this and other sites in order to provide relevant advertisements about goods and services of potential interest to you. The information collected through this process does not enable us or them to identify your name, contact details or other details that directly identify you unless you choose to provide these.

How often will you update this Cookie Policy?

We may update this Cookie Policy from time to time in order to reflect, for example, changes to the cookies we use or for other operational, legal or regulatory reasons. Please therefore re-visit this Cookie Policy regularly to stay informed about our use of cookies and related technologies.

The date at the top of this Cookie Policy indicates when it was last updated.

Where can I get further information?

If you have any questions about our use of cookies or other technologies, please email us at cornletservice@gmail.com
+
+`; + +const CookiePolicy = () => ( +
+ + +
+ +
+); + +export default CookiePolicy; diff --git a/client/src/pages/edit/Edit/index.jsx b/client/src/pages/edit/Edit/index.jsx new file mode 100644 index 0000000..f459c1e --- /dev/null +++ b/client/src/pages/edit/Edit/index.jsx @@ -0,0 +1,25 @@ +import React from 'react'; +import styled from 'styled-components'; +import ListingForm from 'src/components/forms/ListingForm'; +import BackHeader from 'src/components/headers/BackHeader'; +import MainHeader from 'src/components/headers/MainHeader'; +import RenderOn from 'src/containers/RenderOn'; +import Space from 'src/components/layouts/Space'; + +const Container = styled.div` + +`; + +const Edit = ({ user, initialValues }) => ( + + + + + + +); + +export default Edit; diff --git a/client/src/pages/edit/index.jsx b/client/src/pages/edit/index.jsx new file mode 100644 index 0000000..04994f1 --- /dev/null +++ b/client/src/pages/edit/index.jsx @@ -0,0 +1,34 @@ +import React, { useState, useEffect } from 'react'; +import styled from 'styled-components'; +import api from 'src/util/api'; +import log from 'src/util/log'; +import { useSelector } from 'react-redux'; +import Edit from './Edit'; + +const Container = styled.div` + +`; + +const EditIndex = ({ match }) => { + const { id } = match.params; + const [listing, setListing] = useState(); + useEffect(() => { + api.get(`/listing/${id}`) + .then((res) => setListing(res.data)) + .catch((e) => log('ERROR EditIndex get listing by id', e)); + }, [id]); + const user = useSelector((state) => state.user); + + if (!user || !listing || user.uid !== listing.user.uid) return
; + + return ( + + + + ); +}; + +export default EditIndex; diff --git a/client/src/pages/env/index.jsx b/client/src/pages/env/index.jsx new file mode 100644 index 0000000..c0c4ced --- /dev/null +++ b/client/src/pages/env/index.jsx @@ -0,0 +1,14 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Container = styled.div` + +`; + +const Env = () => ( + + {JSON.stringify(process.env)} + +); + +export default Env; diff --git a/client/src/pages/home/Listings.jsx b/client/src/pages/home/Listings.jsx new file mode 100644 index 0000000..5a96f95 --- /dev/null +++ b/client/src/pages/home/Listings.jsx @@ -0,0 +1,62 @@ +import React, { useEffect, useState } from 'react' +import PaginationBtns from 'src/components/buttons/PaginationBtns' +import ListingCardV2 from 'src/components/cards/ListingCardV2' +import LoadingDots from 'src/components/displays/LoadingDots' +import VertCardList from 'src/containers/VertCardList' +import api from 'src/util/api' +import useRouter from 'src/util/hooks/useRouter' +import log from 'src/util/log' +import styled from 'styled-components' + +const Listings = () => { + const router = useRouter() + const [listings, setListings] = useState([]) + const [loading, setLoading] = useState(false) + const [totalPages, setTotalPages] = useState(1) + const [page, setPage] = useState(1) + + useEffect(() => { + setLoading(true) + const connector = router.location.search ? '&' : '?' + api + .get(`/listing${router.location.search}${connector}active=true`) + .then((res) => { + setListings(res.data.docs) + setTotalPages(res.data.totalPages) + setPage(res.data.page) + setLoading(false) + }) + .catch(({ response }) => { + log('ERROR get listings at home', { response }) + setLoading(false) + }) + }, [router]) + + if (loading || !listings) + return ( +
+ +
+ ) + + return ( + + + {listings.map((listing) => ( + + ))} + + + + ) +} + +const Container = styled.div`` + +const Center = styled.div` + width: 100%; + display: flex; + justify-content: center; +` + +export default Listings diff --git a/client/src/pages/home/SearchOptions/Filters/FilterContents.jsx b/client/src/pages/home/SearchOptions/Filters/FilterContents.jsx new file mode 100644 index 0000000..bb066b9 --- /dev/null +++ b/client/src/pages/home/SearchOptions/Filters/FilterContents.jsx @@ -0,0 +1,91 @@ +import React from 'react' +import styled from 'styled-components' +import Body from 'src/components/fonts/Body' +import DateFilter from 'src/components/filters/DateFilter' +import SliderFilter from 'src/components/filters/SliderFilter' +import { FlexRow } from 'src/components/layouts/Flex' +import theme from 'src/theme' +import Space from 'src/components/layouts/Space' +import Btn from 'src/components/buttons/Btn' +import TextBtn from 'src/components/buttons/TextBtn' +import useRouter from 'src/util/hooks/useRouter' +import Text from 'src/components/fonts/Text' + +const FilterContents = ({ setShow }) => { + const router = useRouter() + + const clearFilters = () => { + router.updateQuery({}, true) + setShow(false) + } + + return ( + + + Date + + + + + to + + + + + Price + + + + + Minutes from campus + + + + + + Clear + + + setShow(false)}>Apply filters + + + ) +} + +const Container = styled.div` + width: 300px; + padding: 1.5rem 1rem; + + background: white; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + + @media (min-width: ${(props) => props.theme.md}px) { + width: 350px; + } +` + +const Row = styled.div` + display: flex; + align-items: center; + + & > * { + margin-right: 0.5rem; + } +` + +export default FilterContents diff --git a/client/src/pages/home/SearchOptions/Filters/FilterStatus.jsx b/client/src/pages/home/SearchOptions/Filters/FilterStatus.jsx new file mode 100644 index 0000000..b8e2cb4 --- /dev/null +++ b/client/src/pages/home/SearchOptions/Filters/FilterStatus.jsx @@ -0,0 +1,65 @@ +import React from 'react' +import { ReactComponent as CloseRaw } from 'src/assets/svgs/close.svg' +import InvertedBtn from 'src/components/buttons/InvertedBtn' +import IconContainer from 'src/components/displays/IconContainer' +import Space from 'src/components/layouts/Space' +import useFilters from 'src/util/hooks/useFilters' +import useIsDesktop from 'src/util/hooks/useIsDesktop' +import styled from 'styled-components' + +const FilterStatus = () => { + const filters = useFilters() + + const isDesktop = useIsDesktop() + if (!isDesktop) return null + + return ( + + {filters.map(({ text, cb }) => ( + + {text} + + + cb()} /> + + + ))} + + ) +} + +const Container = styled.div` + display: flex; + align-items: center; + + & > * { + margin-left: 1rem; + flex-shrink: 0; + white-space: nowrap; + } +` + +const StatusBadge = styled.div` + border: 2px solid ${(props) => props.theme.brand300}; + border-radius: 20px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.2rem 0.2rem 0.2rem 0.8rem; +` + +const BadgeText = styled.p` + font-weight: 500; + color: ${(props) => props.theme.brand[500]}; + font-size: 0.9rem; + padding-top: 0.1rem; +` + +const CloseSVG = styled(CloseRaw)` + height: 0.7rem; + width: 0.7rem; + fill: ${(props) => props.theme.primary}; + cursor: pointer; +` + +export default FilterStatus diff --git a/client/src/pages/home/SearchOptions/Filters/index.jsx b/client/src/pages/home/SearchOptions/Filters/index.jsx new file mode 100644 index 0000000..ae4fe2b --- /dev/null +++ b/client/src/pages/home/SearchOptions/Filters/index.jsx @@ -0,0 +1,91 @@ +import React, { useState } from 'react' +import { ReactComponent as FilterRaw } from 'src/assets/svgs/filter.svg' +import Dropdown from 'src/components/views/Dropdown' +import useFilters from 'src/util/hooks/useFilters' +import styled from 'styled-components' +import FilterContents from './FilterContents' +import FilterStatus from './FilterStatus' + +const Filters = () => { + const [show, setShow] = useState(false) + const handleClick = () => { + setShow(true) + } + const filters = useFilters() + + return ( + + + + + Filters + {filters.length > 0 && {filters.length}} + + + + + + + + ) +} + +const Container = styled.div` + position: relative; + overflow: visible; +` + +const Row = styled.div` + padding: 0.2rem; + display: flex; + align-items: center; + flex-wrap: nowrap; + overflow-x: auto; + -ms-overflow-style: none; + -webkit-overflow-scrolling: touch; + + &::-webkit-scrollbar { + display: none; + } +` + +const FilterBtn = styled.button` + background: white; + border-radius: 8px; + padding: 0.3rem 0.7rem; + border: 2px solid rgba(0, 0, 0, 0.2); + color: ${(props) => props.theme.textLight}; + + display: flex; + align-items: center; +` + +const FilterSVG = styled(FilterRaw)` + height: 1.3rem; + margin-right: 0.3rem; + fill: ${(props) => props.theme.textLight}; +` + +const FilterCounter = styled.div` + height: 1.3rem; + width: 1.3rem; + margin-left: 0.5rem; + + font-size: 0.8rem; + font-weight: 500; + + border-radius: 50%; + background: ${(props) => props.theme.brand500}; + color: white; + + display: flex; + justify-content: center; + align-items: center; + + @media (min-width: ${(props) => props.theme.md}px) { + height: 1.2rem; + width: 1.2rem; + } +` + +export default Filters diff --git a/client/src/pages/home/SearchOptions/ListingSortSelect.jsx b/client/src/pages/home/SearchOptions/ListingSortSelect.jsx new file mode 100644 index 0000000..5033c9e --- /dev/null +++ b/client/src/pages/home/SearchOptions/ListingSortSelect.jsx @@ -0,0 +1,45 @@ +import React from 'react' +import Select from 'src/components/inputs/Select' +import useRouter from 'src/util/hooks/useRouter' +import styled from 'styled-components' + +const Container = styled.div` + display: flex; + align-items: center; +` + +const ListingSortSelect = () => { + const router = useRouter() + const { query, updateQuery } = router + + const opts = [ + { + value: 'recent', + label: 'Recent', + }, + { + value: 'price-asc', + label: 'Price: Low to High', + }, + { + value: 'price-dec', + label: 'Price: High to Low', + }, + { + value: 'to-campus', + label: 'Distance to Campus', + }, + ] + + const handleChange = (e) => { + updateQuery({ sort: e.target.value }) + } + + return ( + + setMsg(e.target.value)} /> + + + Send Message + + + {createChatroomError && ( + {createChatroomError} + )} + + + +
+ ) +} + +const Wrapper = styled.div` + display: flex; + justify-content: center; + + @media (min-width: ${(props) => props.theme.md}px) { + padding-top: 3rem; + } +` + +const Container = styled.div` + width: 100%; + max-width: 1200px; +` + +const Content = styled.div` + margin-top: 1.5rem; + + @media (min-width: ${(props) => props.theme.md}px) { + margin-top: 0; + flex: 2; + max-width: 700px; + padding: 0 1rem; + } +` + +const ListingSection = styled.div` + @media (min-width: ${(props) => props.theme.md}px) { + padding: 4rem 0 8rem 0; + } +` + +const Section = styled.div` + margin: 1rem 0 3.5rem 0; + + @media (min-width: ${(props) => props.theme.md}px) { + margin-top: 0; + } +` + +const ModalContents = styled.div` + text-align: start; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 50vw; + } +` + +const RightSidePanelContainer = styled.div` + width: 20%; + min-width: 300px; +` + +const ModalButtonContainer = styled(HoriCenter)` + margin-top: 1.5rem; + margin-bottom: 1rem; +` + +const ModalCreateChatroomError = styled.p` + color: ${(props) => props.theme.danger}; + text-align: center; + margin-bottom: 1rem; + line-height: 1.2; + font-size: 0.875rem; + padding: 0 4rem; +` + +export default DesktopListing diff --git a/client/src/pages/listing/Listing/IconsSection.jsx b/client/src/pages/listing/Listing/IconsSection.jsx new file mode 100644 index 0000000..6bd8ccb --- /dev/null +++ b/client/src/pages/listing/Listing/IconsSection.jsx @@ -0,0 +1,112 @@ +import React from 'react' +import { ReactComponent as ShowerSVG } from 'src/assets/svgs/shower-outlined.svg' +import { ReactComponent as BedSVG } from 'src/assets/svgs/bed-outlined.svg' +import { ReactComponent as CalendarSVG } from 'src/assets/svgs/calendar.svg' +import { ReactComponent as PersonSVG } from 'src/assets/svgs/person.svg' +import Body from 'src/components/fonts/Body' +import { FlexRow } from 'src/components/layouts/Flex' +import getDateString from 'src/util/helpers/getDateString' +import styled from 'styled-components' + +const IconsSection = ({ listing }) => { + const { bathrooms, maleRoommates, femaleRoommates } = listing || {} + + return ( + + + + + + {getDateString(listing, { isNumeric: true })} + + {bathrooms !== 0 && ( + + + + + + {bathrooms} bathrooms + + 0.5 bathrooms is a "half bathroom" with just a toilet and sink, with no tub or shower. + + + + )} + {(maleRoommates !== 0 || femaleRoommates !== 0) && ( + + + + + + {maleRoommates + femaleRoommates} roommate(s) during sublet + + You will have {maleRoommates > 0 ? `${maleRoommates} male roommates ` : ''} + {maleRoommates > 0 && femaleRoommates > 0 ? 'and ' : ''} + {femaleRoommates > 0 ? `${femaleRoommates} female roommates ` : ''} + for the duration of the sublet. + + + + )} + {maleRoommates === 0 && femaleRoommates === 0 && ( + + + + + + Entire place + + You will have the entire place to yourself for the duration of the sublet. + + + + )} + + ) +} + +const Container = styled.div` + & > div { + margin-bottom: 1.5rem; + } +` + +const SVGContainer = styled.div` + display: flex; + justify-content: center; + margin-right: 0.8rem; + + & svg { + width: 1.7rem; + height: 1.7rem; + } + + @media (min-width: ${(props) => props.theme.md}px) { + & svg { + width: 2rem; + height: 2rem; + } + } +` + +const TextContainer = styled.div`` + +const IconLabel = styled(Body)` + font-weight: 500; + font-size: 1rem; + + @media (min-width: ${(props) => props.theme.md}px) { + font-size: 1.2rem; + } +` + +const IconDesc = styled(Body)` + margin-top: 0.3rem; + font-size: 0.9rem; + + @media (min-width: ${(props) => props.theme.md}px) { + font-size: 1rem; + } +` + +export default IconsSection diff --git a/client/src/pages/listing/Listing/ImgModal.jsx b/client/src/pages/listing/Listing/ImgModal.jsx new file mode 100644 index 0000000..aaf536e --- /dev/null +++ b/client/src/pages/listing/Listing/ImgModal.jsx @@ -0,0 +1,62 @@ +import React, { useState } from 'react' +import Modal from 'src/components/views/Modal' +import styled from 'styled-components' + +const ImgModal = ({ imgs, isModalOpen, setIsModalOpen }) => { + const [imgIdx, setImgIdx] = useState(0) + + return ( + setIsModalOpen(false)}> + + + + + + {imgs.map((img, i) => ( + setImgIdx(i)} /> + ))} + + + + ) +} + +const Container = styled.div` + padding-top: 2rem; + display: flex; +` + +const LargeView = styled.div` + margin-right: 2rem; +` + +const LargeImg = styled.img` + width: 60vw; + height: 40vw; + border-radius: 20px; + object-fit: cover; + overflow: hidden; +` + +const ScrollView = styled.div` + overflow-y: auto; + overflow-x: hidden; + height: 40vw; + display: flex; + flex-direction: column; + padding-right: 0.5rem; +` + +const ThumbnailImg = styled.img` + height: 10vw; + flex-shrink: 0; + width: 12vw; + overflow: hidden; + border-radius: 10px; + object-fit: cover; + margin-bottom: 1rem; + cursor: pointer; + border: 2px solid ${(props) => props.theme.border.default}; +` + +export default ImgModal diff --git a/client/src/pages/listing/Listing/ImgPanels.jsx b/client/src/pages/listing/Listing/ImgPanels.jsx new file mode 100644 index 0000000..a6393ee --- /dev/null +++ b/client/src/pages/listing/Listing/ImgPanels.jsx @@ -0,0 +1,121 @@ +import React, { useState } from 'react' +import InvertedBtn from 'src/components/buttons/InvertedBtn' +import ImgCarousel from 'src/components/displays/ImgCarousel' +import Body from 'src/components/fonts/Body' +import Space from 'src/components/layouts/Space' +import Modal from 'src/components/views/Modal' +import styled from 'styled-components' +import ImgModal from './ImgModal' + +const NoImgComponent = () => ( + + No image + +) + +const ImgPanels = ({ imgs }) => { + const [isModalOpen, setIsModalOpen] = useState(false) + + return ( + <> + setIsModalOpen(true)}> + + + + + + + {imgs[1] ? : } + + {imgs[2] ? : } + + + {imgs[3] ? : } + + + {imgs[4] ? : } + + Show all photos + + + + + + + ) +} + +const Container = styled.div` + width: 100%; + border-radius: 20px; + overflow: hidden; + display: flex; + height: 500px; + cursor: pointer; +` + +const MainPanel = styled.div` + height: 100%; + flex: 2; + overflow: hidden; + margin-right: 0.5rem; +` + +const InnerPanel = styled.div` + overflow: hidden; +` + +const MainPanelInner = styled(InnerPanel)` + height: 100%; + width: 100%; +` + +const SidePanel = styled.div` + height: 100%; + flex: 1; + overflow: hidden; + + // marginRight + margin-right: ${(props) => props.marginRight && '.5rem'}; +` + +const SidePanelInner = styled(InnerPanel)` + width: 100%; + height: 50%; + position: relative; +` + +const Img = styled.img` + object-fit: cover; + height: 100%; + width: 100%; + overflow: hidden; +` + +const ShowAllArea = styled.div` + position: absolute; + bottom: 20px; + right: 15px; +` + +const ShowAllBtn = styled(InvertedBtn)` + border: 2px solid ${(props) => props.theme.grey[400]}; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +` + +const NoImg = styled.div` + background: ${(props) => props.theme.brand50}; + height: 100%; + width: 100%; + + display: flex; + justify-content: center; + align-items: center; +` + +const NoImageText = styled(Body)` + color: ${(props) => props.theme.textLight}; + font-weight: 500; +` + +export default ImgPanels diff --git a/client/src/pages/listing/Listing/MobileFooter.jsx b/client/src/pages/listing/Listing/MobileFooter.jsx new file mode 100644 index 0000000..4287bfc --- /dev/null +++ b/client/src/pages/listing/Listing/MobileFooter.jsx @@ -0,0 +1,63 @@ +import React from 'react' +import { useSelector } from 'react-redux' +import Btn from 'src/components/buttons/Btn' +import Text from 'src/components/fonts/Text' +import { FlexRow } from 'src/components/layouts/Flex' +import Space from 'src/components/layouts/Space' +import useIsDesktop from 'src/util/hooks/useIsDesktop' +import styled from 'styled-components' + +const MobileFooter = ({ listing, handleMsgBtnClick }) => { + const isDesktop = useIsDesktop() + const { price, sold, cornellOnly } = listing || {} + const signedInUser = useSelector((state) => state.user) + const isRestricted = !( + !cornellOnly || + (cornellOnly && signedInUser && signedInUser.email.split('@')[1] === 'cornell.edu') + ) + + if (isDesktop || sold) return null + + return ( + + + + ${price} / month + + + Message host + + + {isRestricted && ( + <> + + + + Restricted to Cornell + + + + )} + + ) +} + +const Container = styled.div` + position: fixed; + bottom: 0; + right: 0; + left: 0; + + background: white; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + border-top: 1px solid ${(props) => props.theme.border.default}; + + padding: 1rem 1rem 1.5rem 1rem; +` + +const Muted = styled.span` + font-weight: 400; + color: ${(props) => props.theme.textMuted}; +` + +export default MobileFooter diff --git a/client/src/pages/listing/Listing/RightSidePanel.jsx b/client/src/pages/listing/Listing/RightSidePanel.jsx new file mode 100644 index 0000000..4c2d473 --- /dev/null +++ b/client/src/pages/listing/Listing/RightSidePanel.jsx @@ -0,0 +1,123 @@ +import React from 'react'; +import { ReactComponent as LockRaw } from 'src/assets/svgs/lock.svg'; +import Btn from 'src/components/buttons/Btn'; +import Badge from 'src/components/displays/Badge'; +import DetailedAvatar from 'src/components/displays/DetailedAvatar'; +import Searchers from 'src/components/displays/Searchers'; +import Body from 'src/components/fonts/Body'; +import Subheading from 'src/components/fonts/Subheading'; +import { FlexColumn } from 'src/components/layouts/Flex'; +import { FlexRow } from 'src/components/layouts/Flex'; +import Space from 'src/components/layouts/Space'; +import theme from 'src/theme'; +import styled from 'styled-components'; + +const Container = styled.div` + position: sticky; + top: 20px; + border-radius: 16px; + border: 2px solid ${props => props.theme.border.default}; + box-shadow: 0 2px 4px rgba(0, 0, 0, .05); + + & > div { + border-bottom: 2px solid ${props => props.theme.border.default}; + } + + & > div:last-child { + border-bottom: none; + } +`; + +const Section = styled.div` + padding: 1rem; +`; + +const LockSVG = styled(LockRaw)` + height: 1rem; + opacity: .6; +`; + +const LockAvatar = styled.div` + height: 40px; + width: 40px; + background: rgba(0, 0, 0, .1); + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + border-radius: 50%; + padding: .5rem; + margin-right: 1rem; + + display: flex; + justify-content: center; + align-items: center; +`; + +const SoldComponent = () => ( + + Message host + + This listing has been marked as sold + +) + +const RestrictedComponent = () => ( +
+ + + + + + Restricted to Cornell + + + + + Message host + + + Sign in with a @cornell.edu account to contact the owner + + +
+) + +const RightSidePanel = ({ listing, handleMsgBtnClick, signedInUser, searchers }) => { + const { price, displayName, user, cornellOnly, sold } = listing || {}; + + return ( + +
+ + ${price} + + / month + +
+
+ {sold + ? + : ( + <> + {(!cornellOnly || (cornellOnly && signedInUser && signedInUser.email.split('@')[1] === 'cornell.edu')) + ? ( +
+ + + Message host +
+ ) : + } + + ) + } +
+
+ +
+
+ ) +} + +export default RightSidePanel diff --git a/client/src/pages/listing/Listing/index.jsx b/client/src/pages/listing/Listing/index.jsx new file mode 100644 index 0000000..188850b --- /dev/null +++ b/client/src/pages/listing/Listing/index.jsx @@ -0,0 +1,537 @@ +import React, { useState } from 'react' +import { useDispatch, useSelector } from 'react-redux' +import { ReactComponent as CalendarRaw } from 'src/assets/svgs/calendar.svg' +import { ReactComponent as LockRaw } from 'src/assets/svgs/lock.svg' +import BmBtn from 'src/components/buttons/BmBtn' +import Btn from 'src/components/buttons/Btn' +import DetailedAvatar from 'src/components/displays/DetailedAvatar' +import ImgCarousel from 'src/components/displays/ImgCarousel' +import InfoBox from 'src/components/displays/InfoBox' +import ListingLocation from 'src/components/displays/ListingLocation' +import Map from 'src/components/displays/Map' +import PolicyDisclaimer from 'src/components/displays/PolicyDisclaimer' +import Searchers from 'src/components/displays/Searchers' +import Body from 'src/components/fonts/Body' +import Heading from 'src/components/fonts/Heading' +import Subheading from 'src/components/fonts/Subheading' +import Text from 'src/components/fonts/Text' +import BackHeader from 'src/components/headers/BackHeader' +import MainHeader from 'src/components/headers/MainHeader' +import Input from 'src/components/inputs/Input' +import Space from 'src/components/layouts/Space' +import Modal from 'src/components/views/Modal' +import HoriCenter from 'src/containers/HoriCenter' +import api from 'src/util/api' +import formatListingDesc from 'src/util/helpers/formatListingDesc' +import kmToMins from 'src/util/helpers/kmToMins' +import signin from 'src/util/helpers/signin' +import useIsDesktop from 'src/util/hooks/useIsDesktop' +import useRouter from 'src/util/hooks/useRouter' +import log from 'src/util/log' +import socket from 'src/util/socket' +import styled from 'styled-components' +import DesktopListing from './DesktopListing' +import IconsSection from './IconsSection' +import MobileFooter from './MobileFooter' + +const Listing = ({ listing, searchers }) => { + const { + imgs, + addr, + price, + user, + desc, + sold, + displayName, + cornellOnly, + totalRooms, + availRooms, + bathrooms, + type, + toCampus, + maleRoommates, + femaleRoommates, + lat, + lng, + } = listing + const router = useRouter() + const dispatch = useDispatch() + const isDesktop = useIsDesktop() + + const signedInUser = useSelector((state) => state.user) + const chatrooms = useSelector((state) => state.chatrooms) + const tempValues = useSelector((state) => state.tempValues) + + // create message modal + const [open, setOpen] = useState(false) + const [msg, setMsg] = useState('') + const [createChatroomError, setCreateChatroomError] = useState('') + const [isCreateChatroomDisabled, setIsCreateChatroomDisabled] = useState(false) + + const handleMsgBtnClick = async () => { + if (signedInUser) { + const existing = chatrooms.filter((chatroom) => chatroom.listing._id === listing._id) + if (existing.length !== 0) { + router.push(`/profile/chat/${existing[0]._id}`) + } else { + const { data } = await api.get(`/chatroom/recent-chatroom-create-count/${signedInUser.uid}`) + const { recentlyCreatedChatrooms } = data + + if (recentlyCreatedChatrooms >= 2) { + setCreateChatroomError( + "You've messaged 2 hosts in the past 12 hours. Please check back after 12 hours to message more hosts." + ) + setIsCreateChatroomDisabled(true) + } + setOpen(true) + } + } + } + + const handleClose = () => { + setOpen(false) + } + + const createMsg = () => { + const msgContent = tempValues || msg + + if (msgContent.includes('gmail') && msgContent.includes('@')) { + // prevent sending gmail address in the first message + setCreateChatroomError( + 'Please do not include a Gmail address in your first message. This is to prevent spammers from sending phishing email links to Cornlet users.' + ) + } else { + // DB create + // DB must be created first to get the data schema + const reqData = { + lid: listing._id, + msgContent, + searcherUid: signedInUser.uid, + ownerUid: user.uid, + } + api + .post('/chatroom/create', reqData) + .then(({ data }) => { + // emit socket event + socket.emit('new chatroom', data) + + // redirect + router.push(`/profile/chat/${data._id}`) + }) + .catch(({ response }) => log('Listing', response)) + } + } + + const handleCreateMsg = () => { + if (!signedInUser) { + // not signed in, signin + handleClose() + dispatch({ + type: 'TEMP_VALUES_SET', + payload: msg, + }) + signin({ redirectPath: `/listing/${listing._id}` }) + } else { + const listingChatrooms = chatrooms.filter((chatroom) => chatroom.listing._id === listing._id) + if (listingChatrooms.length >= 1) { + // chatroom already exists + // append msg to existing chatroom + const data = { + cid: listingChatrooms[0]._id, + type: 'txt', + content: tempValues || msg, + uid: signedInUser.uid, + createdAt: new Date(), + } + socket.emit('msg', data) + router.push(`/profile/chat/${listingChatrooms[0]._id}`) + } else { + createMsg() + } + } + } + + // auto send message after sign in + if (tempValues && signedInUser) { + handleCreateMsg() + + dispatch({ + type: 'TEMP_VALUES_SET', + payload: null, + }) + + return ( +
+ + Creating message ... +
+ ) + } + + if (isDesktop) + return ( + + ) + + return ( +
+ + + + + {!listing.active || listing.deleted ? ( + This listing is inactive or has been deleted by the owner. + ) : ( + + + + + +
+ + {formatListingDesc(listing)} + + + + + + +
+ + {/* contact section */} + {!sold && ( +
+ + Contact + + + {!cornellOnly || + (cornellOnly && + signedInUser && + signedInUser.email.split('@')[1] === 'cornell.edu') ? ( + + + + + Message + + + + + ) : ( + + + + + + Restricted to Cornell + + Sign in with a @cornell.edu account to contact the owner. + + + + )} + +
+ )} + + {/* sold warning info box */} + {sold && ( +
+ + + This listing has been marked as sold + + +
+ )} + + {/* location */} +
+ + Location + + {toCampus && ( + + + + )} + + {lat && lng && ( + + + + )} +
+ + {/* description */} +
+ + Description + + + {desc} + +
+ +
+
+ )} +
+
+ + + + setMsg(e.target.value)} /> + + + Send Message + + + {createChatroomError && ( + {createChatroomError} + )} + + + +
+ ) +} + +const Wrapper = styled.div` + display: flex; + justify-content: center; + + @media (min-width: ${(props) => props.theme.md}px) { + padding-top: 3rem; + } +` + +const Container = styled.div` + width: 100vw; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 700px; + } +` + +const ImgInnerContainer = styled.div` + width: 90vw; + position: relative; + border-radius: 10px; + overflow: hidden; + + @media (min-width: ${(props) => props.theme.md}px) { + width: 700px; + margin-right: 2rem; + height: auto; + } + + & * { + outline: none; + overflow: hidden; + } +` + +const Content = styled.div` + margin-top: 1.5rem; + + @media (min-width: ${(props) => props.theme.md}px) { + margin-top: 0; + width: 500px; + } +` + +const ListingSection = styled.div` + @media (min-width: ${(props) => props.theme.md}px) { + display: flex; + padding: 4rem 0 8rem 0; + } +` + +const Section = styled.div` + margin: 1rem 0 3.5rem 0; + + @media (min-width: ${(props) => props.theme.md}px) { + margin-top: 0; + } +` + +const Row = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + padding: 0; + margin: 0.2rem 0; + + @media (min-width: ${(props) => props.theme.md}px) { + margin: 0 0 0.5rem 0; + } + + // marginTop + margin-top: ${(props) => (props.marginTop ? '1rem' : '')}; + + @media (min-width: ${(props) => props.theme.md}px) { + margin-top: ${(props) => (props.marginTop ? '1.2rem' : '')}; + } + + // marginTopLarge + margin-top: ${(props) => (props.marginTopLarge ? '1.5rem' : '')}; + + @media (min-width: ${(props) => props.theme.md}px) { + margin-top: ${(props) => (props.marginTopLarge ? '1.7rem' : '')}; + } + + // marginBottom + margin-bottom: ${(props) => (props.marginBottom ? '1rem' : '')}; + + @media (min-width: ${(props) => props.theme.md}px) { + margin-bottom: ${(props) => (props.marginBottom ? '1.2rem' : '')}; + } + + // marginBottomLarge + margin-bottom: ${(props) => (props.marginBottomLarge ? '1.5rem' : '')}; + + @media (min-width: ${(props) => props.theme.md}px) { + margin-bottom: ${(props) => (props.marginBottomLarge ? '1.7rem' : '')}; + } + + // icon + justify-content: ${(props) => (props.icon ? 'flex-start' : '')}; + + /* alignStart */ + align-items: ${(props) => props.alignStart && `flex-start`}; +` + +const MapContainer = styled.div` + @media (min-width: ${(props) => props.theme.md}px) { + padding: 0 1rem; + } +` + +const SVGContainer = styled.div` + display: flex; + justify-content: center; + width: 2rem; + margin-right: 0.2rem; + + & > svg { + width: 1.5rem; + height: 1.5rem; + opacity: 0.6; + } + + // mr + margin-right: ${(props) => (props.mr ? '.5rem' : '')}; +` + +const CalendarSVG = styled(CalendarRaw)` + width: 30px !important; +` + +const LockSection = styled.div` + display: flex; + align-items: flex-start; +` + +const LockSVG = styled(LockRaw)` + height: 1rem; + opacity: 0.6; +` + +const LockAvatar = styled.div` + height: 40px; + width: 40px; + background: rgba(0, 0, 0, 0.1); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + border-radius: 50%; + padding: 0.5rem; + margin-right: 1rem; + + display: flex; + justify-content: center; + align-items: center; +` + +const TextSection = styled.div` + max-width: 270px; +` + +const Fullwidth = styled.div` + width: 100%; +` + +const ContactContainer = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1rem; +` + +const MsgBtn = styled.button` + width: 100%; + max-width: 400px; + padding: 0.8rem 0; + margin-top: 1rem; + font-size: 1rem; + + display: flex; + align-items: flex-start; + justify-content: center; + + background: ${(props) => props.theme.primary}; + color: white; + + border-radius: 10px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + + & svg { + height: 1.2rem; + width: 1.2rem; + fill: white; + margin-right: 1rem; + } +` + +const ModalContents = styled.div` + text-align: start; +` + +const ModalButtonContainer = styled(HoriCenter)` + margin-top: 1.5rem; + margin-bottom: 1rem; +` + +const ModalCreateChatroomError = styled.p` + color: ${(props) => props.theme.danger}; + text-align: center; + margin-bottom: 1rem; + line-height: 1.3; + font-size: 0.875rem; + padding: 0 2rem; +` + +export default Listing diff --git a/client/src/pages/listing/index.jsx b/client/src/pages/listing/index.jsx new file mode 100644 index 0000000..1e470f5 --- /dev/null +++ b/client/src/pages/listing/index.jsx @@ -0,0 +1,39 @@ +import React, { useState, useEffect } from 'react' +import styled from 'styled-components' +import api from 'src/util/api' +import log from 'src/util/log' +import Listing from './Listing' + +const Container = styled.div`` + +const ListingIndex = ({ match }) => { + const { id } = match.params + const [listing, setListing] = useState() + const [searchers, setSearchers] = useState([]) + + useEffect(() => { + if (id) { + api + .get(`/listing/${id}`) + .then((res) => setListing(res.data)) + .catch((e) => log('ERROR get listing at listing details page', e)) + + api + .get(`/chatroom/listing/searchers/${id}`) + .then((res) => setSearchers(res.data)) + .catch((e) => log('ERROR get listing at listing details page', e)) + + api.post(`/listing/${id}/increment-view`) + } + }, [id]) + + if (!listing) return
+ + return ( + + + + ) +} + +export default ListingIndex diff --git a/client/src/pages/new/New/index.jsx b/client/src/pages/new/New/index.jsx new file mode 100644 index 0000000..d9801c3 --- /dev/null +++ b/client/src/pages/new/New/index.jsx @@ -0,0 +1,24 @@ +import React from 'react'; +import styled from 'styled-components'; +import ListingForm from 'src/components/forms/ListingForm'; +import BackHeader from 'src/components/headers/BackHeader'; +import MainHeader from 'src/components/headers/MainHeader'; +import RenderOn from 'src/containers/RenderOn'; + +const Container = styled.div` + +`; + +const New = ({ user }) => ( + + + + + + + +); + +export default New; diff --git a/client/src/pages/new/index.jsx b/client/src/pages/new/index.jsx new file mode 100644 index 0000000..9b2a637 --- /dev/null +++ b/client/src/pages/new/index.jsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; +import New from './New'; + +const NewIndex = () => { + const user = useSelector((state) => state.user); + + return ( + + ); +}; + +export default NewIndex; diff --git a/client/src/pages/privacy-policy/index.jsx b/client/src/pages/privacy-policy/index.jsx new file mode 100644 index 0000000..e59d1a0 --- /dev/null +++ b/client/src/pages/privacy-policy/index.jsx @@ -0,0 +1,72 @@ +import React from 'react'; +import styled from 'styled-components'; +import MainHeader from 'src/components/headers/MainHeader'; + +const html = ` + +
+
PRIVACY POLICY

Last updated June 11, 2020


Thank you for choosing to be part of our community at Cornlet Housing (“Company”, “we”, “us”, or “our”). We are committed to protecting your personal information and your right to privacy. If you have any questions or concerns about our policy, or our practices with regards to your personal information, please contact us at cornletservice@gmail.com.

When you visit our website https://www.cornlet.com/, and use our services, you trust us with your personal information. We take your privacy very seriously. In this privacy policy, we seek to explain to you in the clearest way possible what information we collect, how we use it and what rights you have in relation to it. We hope you take some time to read through it carefully, as it is important. If there are any terms in this privacy policy that you do not agree with, please discontinue use of our Sites and our services.

This privacy policy applies to all information collected through our website (such as https://www.cornlet.com/), and/or any related services, sales, marketing or events (we refer to them collectively in this privacy policy as the "Services").

Please read this privacy policy carefully as it will help you make informed decisions about sharing your personal information with us.


TABLE OF CONTENTS

1. WHAT INFORMATION DO WE COLLECT?

2. HOW DO WE USE YOUR INFORMATION?

3. WILL YOUR INFORMATION BE SHARED WITH ANYONE?

4. DO WE USE COOKIES AND OTHER TRACKING TECHNOLOGIES?

5. DO WE USE GOOGLE MAPS?

6. HOW DO WE HANDLE YOUR SOCIAL LOGINS?

7. HOW LONG DO WE KEEP YOUR INFORMATION?

8. HOW DO WE KEEP YOUR INFORMATION SAFE?

9. DO WE COLLECT INFORMATION FROM MINORS?

10. WHAT ARE YOUR PRIVACY RIGHTS?

11. CONTROLS FOR DO-NOT-TRACK FEATURES

12. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?

13. DO WE MAKE UPDATES TO THIS POLICY?

14. HOW CAN YOU CONTACT US ABOUT THIS POLICY?


1. WHAT INFORMATION DO WE COLLECT?


Personal information you disclose to us

In Short: We collect personal information that you provide to us.

We collect personal information that you voluntarily provide to us when registering at the Services expressing an interest in obtaining information about us or our products and services, when participating in activities on the Services (such as posting messages in our online forums or entering competitions, contests or giveaways) or otherwise contacting us.

The personal information that we collect depends on the context of your interactions with us and the Services, the choices you make and the products and features you use. The personal information we collect can include the following:

Publicly Available Personal Information. We collect first name, maiden name, last name, and nickname; current and former address; email addresses; business email; social media; photos of housing / rooms; geolocation of address; and other similar data.

Personal Information Provided by You. We collect data collected from surveys; passwords; site usage data; and other similar data.

Social Media Login Data. We may provide you with the option to register using social media account details, like your Facebook, Twitter or other social media account. If you choose to register in this way, we will collect the Information described in the section called "HOW DO WE HANDLE YOUR SOCIAL LOGINS" below.

All personal information that you provide to us must be true, complete and accurate, and you must notify us of any changes to such personal information.


Information automatically collected

In Short: Some information — such as IP address and/or browser and device characteristics — is collected automatically when you visit our Services.

We automatically collect certain information when you visit, use or navigate the Services. This information does not reveal your specific identity (like your name or contact information) but may include device and usage information, such as your IP address, browser and device characteristics, operating system, language preferences, referring URLs, device name, country, location, information about how and when you use our Services and other technical information. This information is primarily needed to maintain the security and operation of our Services, and for our internal analytics and reporting purposes.

Like many businesses, we also collect information through cookies and similar technologies.

Online Identifiers. We collect devices; applications; tools and protocols, such as IP (Internet Protocol) addresses; cookie identifiers, or others such as the ones used for analytics and marketing; device's geolocation; and other similar data.


Information collected from other sources

In Short: We may collect limited data from public databases, marketing partners, social media platforms, and other outside sources.

We may obtain information about your from other sources, such as public databases, joint marketing partners, social media platforms (such as Facebook), as well as from other third parties. Examples of the information we receive from other sources include: social media profile information (your name, gender, birthday, email, current city, state and country, user identification numbers for your contacts, profile picture URL, and any other information that you choose to make public); marketing leads and search results and links, including paid listings (such as sponsored links). We will inform you about the source of information and the type of information and the type of information we have collected about you within a reasonable period after obtaining the personal data, but at the latest within one month.


2. HOW DO WE USE YOUR INFORMATION?

In Short: We process your information for purposes based on legitimate business interests, the fulfillment of our contract with you, compliance with our legal obligations, and/or your consent.

We use personal information collected via our Services for a variety of business purposes described below. We process your personal information for these purposes in reliance on our legitimate business interests, in order to enter into or perform a contract with you, with your consent, and/or for compliance with our legal obligations. We indicate the specific processing grounds we rely on next to each purpose listed below.

We use the information we collect or receive:

  • To facilitate account creation and logon process. If you choose to link your account with us to a third party account (such as your Google or Facebook account), we use the information you allowed us to collect from those third parties to facilitate account creation and logon process for the performance of the contract. See the section below headed "HOW DO WE HANDLE YOUR SOCIAL LOGINS" for further information.

  • To send you marketing and promotional communications. We and/or our third party marketing partners may use the personal information you send to us for our marketing purposes, if this is in accordance with your marketing preferences. You can opt-out of our marketing emails at any time (see the "WHAT ARE YOUR PRIVACY RIGHTS" below).

  • To send administrative information to you. We may use your personal information to send you product, service and new feature information and/or information about changes to our terms, conditions, and policies.

  • Fulfill and manage your orders. We may use your information to fulfill and manage your orders, payments, returns, and exchanges made through the Services.

  • Deliver targeted advertising to you. We may use your information to develop and display content and advertising (and work with third parties who do so) tailored to your interests and/or location and to measure its effectiveness.

  • Request Feedback. We may use your information to request feedback and to contact you about your use of our Services.

  • To protect our Services. We may use your information as part of our efforts to keep our Services safe and secure (for example, for fraud monitoring and prevention).

  • To enable user-to-user communications. We may use your information in order to enable user-to-user communications with each user's consent.

  • To manage user accounts. We may use your information for the purposes of managing our account and keeping it in working order.
  • To deliver services to the user. We may use your information to provide you with the requested service.

  • To respond to user inquiries/offer support to users. We may use your information to respond to your inquiries and solve any potential issues you might have with the use of our Services.

  • For other Business Purposes. We may use your information for other Business Purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Services, products, marketing and your experience. We may use and store this information in aggregated and anonymized form so that it is not associated with individual end users and does not include personal information. We will not use identifiable personal information without your consent.


3. WILL YOUR INFORMATION BE SHARED WITH ANYONE?

In Short: We only share information with your consent, to comply with laws, to provide you with services, to protect your rights, or to fulfill business obligations.

We may process or share data based on the following legal basis:
  • Consent: We may process your data if you have given us specific consent to use your personal information in a specific purpose.

  • Legitimate Interests: We may process your data when it is reasonably necessary to achieve our legitimate business interests.

  • Performance of a Contract: Where we have entered into a contract with you, we may process your personal information to fulfill the terms of our contract.

  • Legal Obligations: We may disclose your information where we are legally required to do so in order to comply with applicable law, governmental requests, a judicial proceeding, court order, or legal process, such as in response to a court order or a subpoena (including in response to public authorities to meet national security or law enforcement requirements).

  • Vital Interests: We may disclose your information where we believe it is necessary to investigate, prevent, or take action regarding potential violations of our policies, suspected fraud, situations involving potential threats to the safety of any person and illegal activities, or as evidence in litigation in which we are involved.

More specifically, we may need to process your data or share your personal information in the following situations:

  • Vendors, Consultants and Other Third-Party Service Providers. We may share your data with third party vendors, service providers, contractors or agents who perform services for us or on our behalf and require access to such information to do that work. Examples include: payment processing, data analysis, email delivery, hosting services, customer service and marketing efforts. We may allow selected third parties to use tracking technology on the Services, which will enable them to collect data about how you interact with the Services over time. This information may be used to, among other things, analyze and track data, determine the popularity of certain content and better understand online activity. Unless described in this Policy, we do not share, sell, rent or trade any of your information with third parties for their promotional purposes.

  • Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.

  • Third-Party Advertisers. We may use third-party advertising companies to serve ads when you visit the Services. These companies may use information about your visits to our Website(s) and other websites that are contained in web cookies and other tracking technologies in order to provide advertisements about goods and services of interest to you.

  • Business Partners. We may share your information with our business partners to offer you certain products, services or promotions.

  • Other Users. When you share personal information (for example, by posting comments, contributions or other content to the Services) or otherwise interact with public areas of the Services, such personal information may be viewed by all users and may be publicly distributed outside the Services in perpetuity. If you interact with other users of our Services and register through a social network (such as Facebook), your contacts on the social network will see your name, profile photo, and descriptions of your activity. Similarly, other users will be able to view descriptions of your activity, communicate with you within our Services, and view your profile.


4. DO WE USE COOKIES AND OTHER TRACKING TECHNOLOGIES?

In Short: We may use cookies and other tracking technologies to collect and store your information.

We may use cookies and similar tracking technologies (like web beacons and pixels) to access or store information. Specific information about how we use such technologies and how you can refuse certain cookies is set out in our Cookie Policy.


5. DO WE USE GOOGLE MAPS?

In Short: Yes, we use Google Maps for the purpose of providing better service.

This website, mobile application, or Facebook application uses Google Maps APIs. You may find the Google Maps APIs Terms of Service here. To better understand Google’s Privacy Policy, please refer to this link.

By using our Maps API Implementation, you agree to be bound by Google’s Terms of Service. By using our implementation of the Google Maps APIs, you agree to allow us to gain access to information about you including personally identifiable information (such as usernames) and non-personally identifiable information (such as location). We will be collecting the following information:

address

geolocation

coordinates

For a full list of what we use information for, please see the previous section titled "HOW DO WE USE YOUR INFORMATION?" and WILL YOUR INFORMATION BE SHARED WITH ANYONE? You agree to allow us to obtain or cache your location. You may revoke your consent at anytime. We use information about location in conjunction with data from other data providers.

The Maps APIs that we use store and access cookies and other information on your devices. If you are a user currently in the European Economic Area (EU countries, Iceland, Liechtenstein and Norway), please take a look at our EU User Consent Policy.


6. HOW DO WE HANDLE YOUR SOCIAL LOGINS?

In Short: If you choose to register or log in to our services using a social media account, we may have access to certain information about you.

Our Services offer you the ability to register and login using your third party social media account details (like your Facebook or Twitter logins). Where you choose to do this, we will receive certain profile information about you from your social media provider. The profile Information we receive may vary depending on the social media provider concerned, but will often include your name, e-mail address, friends list, profile picture as well as other information you choose to make public.

We will use the information we receive only for the purposes that are described in this privacy policy or that are otherwise made clear to you on the Services. Please note that we do not control, and are not responsible for, other uses of your personal information by your third party social media provider. We recommend that you review their privacy policy to understand how they collect, use and share your personal information, and how you can set your privacy preferences on their sites and apps.


7. HOW LONG DO WE KEEP YOUR INFORMATION?

In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy policy unless otherwise required by law.

We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy policy, unless a longer retention period is required or permitted by law (such as tax, accounting or other legal requirements). No purpose in this policy will require us keeping your personal information for longer than the period of time in which users have an account with us.

When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize it, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.


8. HOW DO WE KEEP YOUR INFORMATION SAFE?

In Short: We aim to protect your personal information through a system of organizational and technical security measures.

We have implemented appropriate technical and organizational security measures designed to protect the security of any personal information we process. However, please also remember that we cannot guarantee that the internet itself is 100% secure. Although we will do our best to protect your personal information, transmission of personal information to and from our Services is at your own risk. You should only access the services within a secure environment.


9. DO WE COLLECT INFORMATION FROM MINORS?

In Short: We do not knowingly collect data from or market to children under 18 years of age.

We do not knowingly solicit data from or market to children under 18 years of age. By using the Services, you represent that you are at least 18 or that you are the parent or guardian of such a minor and consent to such minor dependent’s use of the Services. If we learn that personal information from users less than 18 years of age has been collected, we will deactivate the account and take reasonable measures to promptly delete such data from our records. If you become aware of any data we have collected from children under age 18, please contact us at cornletservice@gmail.com.


10. WHAT ARE YOUR PRIVACY RIGHTS?

In Short: You may review, change, or terminate your account at any time.

If you are resident in the European Economic Area and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: http://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.

If you have questions or comments about your privacy rights, you may email us at cornletservice@gmail.com.


Account Information

If you would at any time like to review or change the information in your account or terminate your account, you can:

Log into your account settings and update your user account.

Upon your request to terminate your account, we will deactivate or delete your account and information from our active databases. However, some information may be retained in our files to prevent fraud, troubleshoot problems, assist with any investigations, enforce our Terms of Use and/or comply with legal requirements.

Cookies and similar technologies: Most Web browsers are set to accept cookies by default. If you prefer, you can usually choose to set your browser to remove cookies and to reject cookies. If you choose to remove cookies or reject cookies, this could affect certain features or services of our Services. To opt-out of interest-based advertising by advertisers on our Services visit http://www.aboutads.info/choices/.

Opting out of email marketing: You can unsubscribe from our marketing email list at any time by clicking on the unsubscribe link in the emails that we send or by contacting us using the details provided below. You will then be removed from the marketing email list – however, we will still need to send you service-related emails that are necessary for the administration and use of your account. To otherwise opt-out, you may:

Access your account settings and update preferences.


11. CONTROLS FOR DO-NOT-TRACK FEATURES

Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track (“DNT”) feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. No uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy policy.


12. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?

In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.

California Civil Code Section 1798.83, also known as the “Shine The Light” law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.

If you are under 18 years of age, reside in California, and have a registered account with the Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below, and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from our systems.


13. DO WE MAKE UPDATES TO THIS POLICY?

In Short: Yes, we will update this policy as necessary to stay compliant with relevant laws.

We may update this privacy policy from time to time. The updated version will be indicated by an updated “Revised” date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy policy, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy policy frequently to be informed of how we are protecting your information.


14. HOW CAN YOU CONTACT US ABOUT THIS POLICY?

If you have questions or comments about this policy, you may email us at cornletservice@gmail.com or by post to:

Cornlet Housing
106-1302 Oh-Hyun Ro 56, Gang-buk Gu
Seoul 01232
South Korea


HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?

Based on the laws of some countries, you may have the right to request access to the personal information we collect from you, change that information, or delete it in some circumstances. To request to review, update, or delete your personal information, please submit a request form by clicking here. We will respond to your request within 30 days.
+
`; + +export const Container = styled.div` + padding: 2rem 0; +`; + +const PrivacyPolicy = () => ( +
+ + +
+ +
+); + +export default PrivacyPolicy; diff --git a/client/src/pages/profile/MyBookmarks/index.jsx b/client/src/pages/profile/MyBookmarks/index.jsx new file mode 100644 index 0000000..a4f7e7f --- /dev/null +++ b/client/src/pages/profile/MyBookmarks/index.jsx @@ -0,0 +1,82 @@ +import React from 'react' +import { useSelector } from 'react-redux' +import { ReactComponent as NoBookmarksSVGRaw } from 'src/assets/illustrations/no-bookmarks.svg' +import ListingCardV2 from 'src/components/cards/ListingCardV2' +import Heading from 'src/components/fonts/Heading' +import Text from 'src/components/fonts/Text' +import MainHeader from 'src/components/headers/MainHeader' +import Navbar from 'src/components/headers/Navbar' +import { FlexRow } from 'src/components/layouts/Flex' +import { FlexColumn } from 'src/components/layouts/Flex' +import Space from 'src/components/layouts/Space' +import VertCardList from 'src/containers/VertCardList' +import theme from 'src/theme/colors' +import styled from 'styled-components' + +const MyBookmarks = () => { + const bm = useSelector((state) => state.bm) + const user = useSelector((state) => state.user) + const listings = user ? user.bm.listings : bm.listings + + return ( +
+ + + + + Bookmarks + + + + {/* bookmarked listings */} + + + {listings.map((listing) => ( + + ))} + + + + {/* no bookmarked listings */} + {listings && listings.length === 0 && ( + + + + + No bookmarks yet! + + Bookmark a listing to get started + + + )} +
+ ) +} + +const TitleWrapper = styled.div` + @media (min-width: ${(props) => props.theme.md}px) { + display: flex; + justify-content: center; + } +` + +const TitleContainer = styled.div` + padding: 2rem 0 0 0.5rem; + + @media (min-width: ${(props) => props.theme.md}px) { + width: ${(props) => `${props.theme.md}px`}; + padding: 2rem 0 0 2rem; + } +` + +const CardListContainer = styled.div` + padding: 1rem 0 3rem 0; +` + +const NoBookmarksSVG = styled(NoBookmarksSVGRaw)` + width: 50%; + opacity: 0.9; + max-width: 200px; +` + +export default MyBookmarks diff --git a/client/src/pages/profile/MyChats/Chat/index.jsx b/client/src/pages/profile/MyChats/Chat/index.jsx new file mode 100644 index 0000000..59909dd --- /dev/null +++ b/client/src/pages/profile/MyChats/Chat/index.jsx @@ -0,0 +1,83 @@ +import React, { useState, useEffect } from 'react'; +import styled from 'styled-components'; +import MainHeader from 'src/components/headers/MainHeader'; +import Navbar from 'src/components/headers/Navbar'; +import { useSelector, useDispatch } from 'react-redux'; +import Body from 'src/components/fonts/Body'; +import ChatroomList from '../ChatroomList'; +import api from 'src/util/api'; +import log from 'src/util/log'; +import LoadingDots from 'src/components/displays/LoadingDots'; + +const Container = styled.div` + display: flex; + flex-direction: column; + height: 100%; + + @media (min-width: ${(props) => props.theme.md}px) { + max-height: 90vh; + + & > * { + flex-shrink: 0; + } + } +`; + +export const Center = styled.div` + margin-top: 2rem; + display: flex; + justify-content: center; +`; + +export const Content = styled.div` + flex-grow: 1; + flex-shrink: 1; + overflow: hidden; + + @media (min-width: ${(props) => props.theme.md}px) { + border: 1px solid ${props => props.theme.border.default}; + } +`; + +const Chat = () => { + const chatrooms = useSelector((state) => state.chatrooms); + const user = useSelector(state => state.user); + + // reload chats + const [loading, setLoading] = useState(false); + const dispatch = useDispatch(); + useEffect(() => { + if (user) { + setLoading(true); + api.get(`/chatroom/user/${user.uid}`) + .then(({ data }) => { + dispatch({ + type: 'CHATROOMS_SET', + payload: data, + }); + setLoading(false); + }) + .catch(({ response }) => { + log('Chat', response) + setLoading(false); + }) + } + }, []) + + return ( + + + + + {loading + ? + : chatrooms.length === 0 + ?
No chats yet!
+ : + } +
+
+ ); +}; + +export default Chat; diff --git a/client/src/pages/profile/MyChats/Chatroom/index.jsx b/client/src/pages/profile/MyChats/Chatroom/index.jsx new file mode 100644 index 0000000..b127c2b --- /dev/null +++ b/client/src/pages/profile/MyChats/Chatroom/index.jsx @@ -0,0 +1,49 @@ +import React from 'react'; +import styled from 'styled-components'; +import MainHeader from 'src/components/headers/MainHeader'; +import Navbar from 'src/components/headers/Navbar'; +import RenderOn from 'src/containers/RenderOn'; +import ChatroomList from '../ChatroomList'; +import ChatroomPanel from '../ChatroomPanel'; + +export const Container = styled.div` + display: flex; + flex-direction: column; + height: 100%; + + @media (min-width: ${(props) => props.theme.md}px) { + max-height: 90vh; + + & > * { + flex-shrink: 0; + } + } +`; + +const Content = styled.div` + display: flex; + flex-grow: 1; + flex-shrink: 1; + overflow: hidden; + + @media (min-width: ${(props) => props.theme.md}px) { + border: 1px solid ${props => props.theme.border.default}; + } +`; + +const Chatroom = ({ match }) => ( + + + + + + + + + + + + +); + +export default Chatroom; diff --git a/client/src/pages/profile/MyChats/ChatroomList/ListElt.jsx b/client/src/pages/profile/MyChats/ChatroomList/ListElt.jsx new file mode 100644 index 0000000..218b7b6 --- /dev/null +++ b/client/src/pages/profile/MyChats/ChatroomList/ListElt.jsx @@ -0,0 +1,95 @@ +import React from 'react' +import { useSelector } from 'react-redux' +import { Link } from 'react-router-dom' +import Avatar from 'src/components/displays/Avatar' +import CornerRedDot from 'src/components/displays/CornerRedDot' +import Body from 'src/components/fonts/Body' +import getFromNowDate from 'src/util/helpers/getFromNowDate' +import getShortAddr from 'src/util/helpers/getShortAddr' +import useChatOtherUser from 'src/util/hooks/useChatOtherUser' +import useRouter from 'src/util/hooks/useRouter' +import styled from 'styled-components' + +const ListElt = ({ chatroom }) => { + const otherUser = useChatOtherUser(chatroom) + const router = useRouter() + const chatroomPath = `/profile/chat/${chatroom._id}` + const selected = router.pathname === chatroomPath + const nextPath = selected ? '/profile/chat' : chatroomPath + const user = useSelector((state) => state.user) + const hasNotif = chatroom.notifUids && chatroom.notifUids.includes(user.uid) + const lastMsg = chatroom.msgs[chatroom.msgs.length - 1] + + return ( +
+ + + + + {hasNotif && } + + + + {otherUser.name} + + + {getShortAddr(chatroom.listing.addr)} + + + + + + + {chatroom.searcher && chatroom.searcher.isBanned + ? '- User banned -' + : chatroom.msgs[chatroom.msgs.length - 1].content} + + + {getFromNowDate(lastMsg.createdAt)} + + + + +
+ ) +} + +const Container = styled.div` + display: flex; + padding: 1rem 0; + border-radius: 2px; + border-bottom: 1px solid ${(props) => props.theme.border.default}; + + @media (min-width: ${(props) => props.theme.md}px) { + padding: 1rem; + } + + // selected + background: ${(props) => (props.selected ? 'rgba(0, 0, 0, .1)' : '')}; +` + +const PhotoSection = styled.div` + margin-right: 1rem; + position: relative; +` + +const TextSection = styled.div` + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; +` + +const Row = styled.div` + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 0.2rem; +` + +const TextContainer = styled.div` + max-width: ${(props) => (props.maxWidth ? `${props.maxWidth}px` : '140px')}; +` + +export default ListElt diff --git a/client/src/pages/profile/MyChats/ChatroomList/index.jsx b/client/src/pages/profile/MyChats/ChatroomList/index.jsx new file mode 100644 index 0000000..bdeb6c3 --- /dev/null +++ b/client/src/pages/profile/MyChats/ChatroomList/index.jsx @@ -0,0 +1,78 @@ +import React, { useEffect, useState } from 'react' +import PerfectScrollbar from 'react-perfect-scrollbar' +import { useDispatch, useSelector } from 'react-redux' +import Text from 'src/components/fonts/Text' +import { FlexColumn } from 'src/components/layouts/Flex' +import Space from 'src/components/layouts/Space' +import theme from 'src/theme/colors' +import styled from 'styled-components' +import ListElt from './ListElt' +import { ReactComponent as NoChatroomsSVGRaw } from 'src/assets/illustrations/no-chatrooms.svg' +import api from 'src/util/api' +import log from 'src/util/log' + +const Container = styled.div` + @media (min-width: ${(props) => props.theme.md}px) { + width: 400px; + height: 100%; + max-height: 100%; + border-right: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + } +` + +const NoChatroomsSVG = styled(NoChatroomsSVGRaw)` + width: 40%; + opacity: 0.9; + max-width: 150px; +` + +const ChatroomList = () => { + const chatrooms = useSelector((state) => state.chatrooms) + const user = useSelector((state) => state.user) + + // reload chats + const dispatch = useDispatch() + + useEffect(() => { + if (user) { + api + .get(`/chatroom/user/${user.uid}`) + .then(({ data }) => { + dispatch({ + type: 'CHATROOMS_SET', + payload: data, + }) + }) + .catch(({ response }) => { + log('Chat', response) + }) + } + }, []) + + return ( + + + {/* chatroom list */} + {chatrooms.map((chatroom) => ( + + ))} + + {/* no chatrooms */} + {chatrooms && chatrooms.length === 0 && ( + + + + + No chatrooms yet! + + Message a host to get started + + + )} + + + ) +} + +export default ChatroomList diff --git a/client/src/pages/profile/MyChats/ChatroomPanel/ChatContents/MsgGroup.jsx b/client/src/pages/profile/MyChats/ChatroomPanel/ChatContents/MsgGroup.jsx new file mode 100644 index 0000000..7f36bc6 --- /dev/null +++ b/client/src/pages/profile/MyChats/ChatroomPanel/ChatContents/MsgGroup.jsx @@ -0,0 +1,64 @@ +import React from 'react'; +import styled from 'styled-components'; +import Avatar from 'src/components/displays/Avatar'; +import Body from 'src/components/fonts/Body'; +import formatDate from 'src/util/helpers/formatDate'; +import getFromNowDate from 'src/util/helpers/getFromNowDate'; + +const Container = styled.div` + display: flex; + margin: 1rem 0; +`; + +export const PhotoSection = styled.div` + margin-right: 1rem; +`; + +export const TextSection = styled.div` + +`; + +export const UserSection = styled.div` + display: flex; + align-items: center; + + & p { + margin-right: .5rem; + } +`; + +export const MsgSection = styled.div` + margin-top: .3rem; +`; + +const DateSpan = styled.span` + font-size: .9rem; + color: ${props => props.theme.textMuted}; + font-weight: 400; +`; + +const MsgGroup = ({ user, msgs, isOwner }) => { + const lastMsg = msgs[msgs.length - 1]; + + return ( + + + + + + + {user.name} {isOwner ? '(Host)' : ''} {getFromNowDate(lastMsg.createdAt)} + + + {msgs.map((msg) => ( + {msg.content} + ))} + + + + ); +}; + +export default MsgGroup; diff --git a/client/src/pages/profile/MyChats/ChatroomPanel/ChatContents/index.jsx b/client/src/pages/profile/MyChats/ChatroomPanel/ChatContents/index.jsx new file mode 100644 index 0000000..61d373a --- /dev/null +++ b/client/src/pages/profile/MyChats/ChatroomPanel/ChatContents/index.jsx @@ -0,0 +1,59 @@ +import React, { useRef, useLayoutEffect } from 'react' +import Space from 'src/components/layouts/Space' +import styled from 'styled-components' +import MsgGroup from './MsgGroup' + +const Container = styled.div` + max-height: 100%; + padding: 1rem; +` + +const ChatContents = ({ chatroom }) => { + const msgGroups = [] + + if (chatroom.msgs) { + chatroom.msgs.forEach((msg) => { + const isOwner = msg.uid === chatroom.listing.user.uid + + if (msgGroups.length > 0 && msgGroups[msgGroups.length - 1].isOwner === isOwner) { + // msg by same user as previous msgGroup + // merge msg + msgGroups[msgGroups.length - 1].msgs.push(msg) + } else { + // msg by different user + // append new msgGroup + const user = isOwner ? chatroom.listing.user : chatroom.searcher || chatroom.listing.user + + const data = { + user, + msgs: [msg], + isOwner, + } + msgGroups.push(data) + } + }) + } + + const messagesEndRef = useRef(null) + const scrollToBottom = () => { + messagesEndRef.current.scrollIntoView({ block: 'nearest' }) + } + + useLayoutEffect(() => { + scrollToBottom() + }, [msgGroups]) + + if (chatroom.searcher && chatroom.searcher.isBanned) return
+ + return ( + + {msgGroups.map((msgGroup) => ( + + ))} + +
+ + ) +} + +export default ChatContents diff --git a/client/src/pages/profile/MyChats/ChatroomPanel/Header.jsx b/client/src/pages/profile/MyChats/ChatroomPanel/Header.jsx new file mode 100644 index 0000000..028f0e5 --- /dev/null +++ b/client/src/pages/profile/MyChats/ChatroomPanel/Header.jsx @@ -0,0 +1,102 @@ +import React from 'react' +import styled from 'styled-components' +import { ReactComponent as LeftRaw } from 'src/assets/svgs/left.svg' +import { ReactComponent as HouseRaw } from 'src/assets/svgs/house.svg' +import { Avatar } from '@material-ui/core' +import useChatOtherUser from 'src/util/hooks/useChatOtherUser' +import Body from 'src/components/fonts/Body' +import getShortAddr from 'src/util/helpers/getShortAddr' +import { Link } from 'react-router-dom' +import RenderOn from 'src/containers/RenderOn' +import TextBtn from 'src/components/buttons/TextBtn' +import theme from 'src/theme' +import useIsDesktop from 'src/util/hooks/useIsDesktop' +import Btn from 'src/components/buttons/Btn' +import InvertedBtn from 'src/components/buttons/InvertedBtn' +import Space from 'src/components/layouts/Space' +import { FlexRow } from 'src/components/layouts/Flex' + +const Container = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + padding: 1rem 0; + width: 100%; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + + @media (min-width: ${(props) => props.theme.md}px) { + padding: 1rem 2rem; + } +` + +const LeftSVG = styled(LeftRaw)` + height: 1.2rem; + width: 1.2rem; + fill: ${(props) => props.theme.primary}; + margin-right: 2rem; +` + +const HouseSVG = styled(HouseRaw)` + height: 1.5rem; + width: 1.5rem; + fill: ${(props) => props.theme.primary}; + margin-right: 1rem; +` + +const ContactSection = styled.div` + display: flex; +` + +const ContactText = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + margin-left: 1rem; +` + +const Header = ({ chatroom }) => { + const otherUser = useChatOtherUser(chatroom) + const isDesktop = useIsDesktop() + + return ( + + + +
+ + + + +
+
+
+ + + + + {otherUser.name} + + {getShortAddr(chatroom.listing.addr)} + + + + + + + + View listing + + +
+
+ {isDesktop && ( + + View listing + + )} +
+ ) +} + +export default Header diff --git a/client/src/pages/profile/MyChats/ChatroomPanel/InputSection.jsx b/client/src/pages/profile/MyChats/ChatroomPanel/InputSection.jsx new file mode 100644 index 0000000..9bf980a --- /dev/null +++ b/client/src/pages/profile/MyChats/ChatroomPanel/InputSection.jsx @@ -0,0 +1,174 @@ +import React, { useState } from 'react' +import styled from 'styled-components' +import Input from 'src/components/inputs/Input' +import Btn from 'src/components/buttons/Btn' +import Body from 'src/components/fonts/Body' +import RenderOn from 'src/containers/RenderOn' +import socket from 'src/util/socket' +import { useSelector } from 'react-redux' +import Text from 'src/components/fonts/Text' +import api from 'src/util/api' + +const HEIGHT = 84 + +const InputSection = ({ chatroom }) => { + const [msg, setMsg] = useState('') + const minRows = 1 + const maxRows = 6 + const lineHeight = 24 + const [rows, setRows] = useState(minRows) + const user = useSelector((state) => state.user) + + const handleChange = (event) => { + // reset number of rows in textarea + const previousRows = rows + setRows(minRows) + + // calculate number of rows + const currentRows = Math.floor(event.target.scrollHeight / lineHeight) + + // if rows didn't change + if (currentRows === previousRows) { + setRows(currentRows) + } + + // if rows increased + if (currentRows >= maxRows) { + // increase rows + setRows(maxRows) + event.target.scrollTop = event.target.scrollHeight + } + + setMsg(event.target.value) + setRows(currentRows < maxRows ? currentRows : maxRows) + } + + const handleSendMsg = () => { + setMsg('') + setRows(minRows) + + const data = { + cid: chatroom._id, + type: 'txt', + content: msg, + uid: user.uid, + createdAt: new Date(), + } + + if (msg?.includes('@gmail.com')) { + api.post('/user/flag-msg', { + msg, + user, + }) + } + socket.emit('msg', data) + } + + const handleKeyDown = (e) => { + if (e.key === 'Enter' && !e.altKey) { + e.preventDefault() + e.stopPropagation() + handleSendMsg() + } + } + + if (chatroom.searcher && chatroom.searcher.isBanned) { + return ( + + This user has been banned from Cornlet + + This user has been banned for suspicious activities such as spamming, conversations not + related to subletting, or potentially malicious behaviors. + + + If you have any questions or concerns, please reach out to contactcornlet@gmail.com + + + ) + } + + return ( +
+ + + + + + Send + + + + + +
+ ) +} + +const Container = styled.div` + position: fixed; + bottom: 0; + left: 0; + right: 0; + padding: 0.5rem 1rem 1rem 1rem; + height: ${HEIGHT}px; + + display: flex; + align-items: center; + justify-content: space-between; + + border-top: 1px solid rgba(0, 0, 0, 0.05); + background: white; + + & > button { + margin-left: 1rem; + margin-top: 0.5rem; + } + + @media (min-width: ${(props) => props.theme.md}px) { + position: static; + height: auto; + } +` + +export const Placeholder = styled.div` + height: ${HEIGHT}px; +` + +export const InputContainer = styled.div` + position: relative; + width: 100%; +` + +export const HelpText = styled(Body)` + position: absolute; + bottom: 0.8rem; + left: 1rem; +` + +const BanMessageContainer = styled.div` + border-top: 1px solid rgba(0, 0, 0, 0.05); + padding: 1.5rem 0 2rem 0; + + @media (min-width: ${(props) => props.theme.md}px) { + padding: 1.5rem; + } +` + +const Title = styled(Text)` + margin-bottom: 0.3rem; +` + +const Desc = styled(Text)` + font-size: 0.9rem; + opacity: 0.9; + margin-bottom: 0.3rem; +` + +export default InputSection diff --git a/client/src/pages/profile/MyChats/ChatroomPanel/index.jsx b/client/src/pages/profile/MyChats/ChatroomPanel/index.jsx new file mode 100644 index 0000000..2c97827 --- /dev/null +++ b/client/src/pages/profile/MyChats/ChatroomPanel/index.jsx @@ -0,0 +1,45 @@ +import React from 'react'; +import styled from 'styled-components'; +import useChatroom from 'src/util/hooks/useChatroom'; +import PerfectScrollbar from 'react-perfect-scrollbar' +import { useSelector } from 'react-redux'; +import socket from 'src/util/socket'; +import Header from './Header'; +import ChatContents from './ChatContents'; +import InputSection from './InputSection'; + +const Container = styled.div` + width: 100%; + display: flex; + flex-direction: column; +`; + +export const Fill = styled.div` + flex: 1; + overflow-x: hidden; + overflow-y: auto; +`; + +const ChatroomPanel = ({ cid }) => { + const chatroom = useChatroom(cid); + const user = useSelector((state) => state.user); + if (chatroom && user && chatroom.notifUids.includes(user.uid)) { + socket.emit('chatroom seen', { cid, uid: user.uid }); + } + + if (!chatroom) return
; + + return ( + +
+ + {/* */} + + {/* */} + + + + ); +}; + +export default ChatroomPanel; diff --git a/client/src/pages/profile/MyListings/MyListingsList.jsx b/client/src/pages/profile/MyListings/MyListingsList.jsx new file mode 100644 index 0000000..e8ee111 --- /dev/null +++ b/client/src/pages/profile/MyListings/MyListingsList.jsx @@ -0,0 +1,77 @@ +import React, { useEffect, useState } from 'react' +import { ReactComponent as NoListingSVGRaw } from 'src/assets/illustrations/no-listings.svg' +import PaginationBtns from 'src/components/buttons/PaginationBtns' +import ListingCardV2 from 'src/components/cards/ListingCardV2' +import ListingHostCard from 'src/components/cards/ListingHostCard' +import LoadingDots from 'src/components/displays/LoadingDots' +import Text from 'src/components/fonts/Text' +import { FlexColumn } from 'src/components/layouts/Flex' +import Space from 'src/components/layouts/Space' +import VertCardList from 'src/containers/VertCardList' +import theme from 'src/theme/colors' +import api from 'src/util/api' +import log from 'src/util/log' +import styled from 'styled-components' + +const MyListingsList = ({ uid, setHasListings }) => { + const [listings, setListings] = useState([]) + const [loading, setLoading] = useState(false) + + const reload = () => { + setLoading(true) + api + .get(`/user/${uid}/listings`) + .then((res) => { + setListings(res.data) + setLoading(false) + }) + .catch((e) => log('ERROR get mylistings', e)) + } + + useEffect(() => { + if (uid) { + reload() + } + }, [uid]) + + useEffect(() => { + if (listings.length > 0) setHasListings(true) + else setHasListings(false) + }, [listings, setHasListings]) + + return ( + + {loading && } + + {listings.map((listing) => ( + + ))} + + + {/* no listings */} + {!loading && listings && listings.length === 0 && ( + + + + + No listings yet! + + Create a listing to get started + + + )} + + ) +} + +const Container = styled.div` + margin: 2rem 0; +` + +const NoListingSVG = styled(NoListingSVGRaw)` + width: 70%; + opacity: 0.9; + max-width: 300px; +` + +export default MyListingsList diff --git a/client/src/pages/profile/MyListings/index.jsx b/client/src/pages/profile/MyListings/index.jsx new file mode 100644 index 0000000..decbece --- /dev/null +++ b/client/src/pages/profile/MyListings/index.jsx @@ -0,0 +1,70 @@ +import React, { useState, useEffect } from 'react' +import styled from 'styled-components' +import Heading from 'src/components/fonts/Heading' +import Body from 'src/components/fonts/Body' +import { useSelector } from 'react-redux' +import MainHeader from 'src/components/headers/MainHeader' +import Navbar from 'src/components/headers/Navbar' +import MyListingsList from './MyListingsList' +import { FlexRow } from 'src/components/layouts/Flex' +import Btn from 'src/components/buttons/Btn' +import Space from 'src/components/layouts/Space' +import useIsDesktop from 'src/util/hooks/useIsDesktop' +import { Link } from 'react-router-dom' +import { ReactComponent as PlusIcon } from 'src/assets/svgs/plus.svg' + +const MyListings = () => { + const user = useSelector((state) => state.user) + + // conditionally render body text + const defaultText = 'Create a new listing to get started' + const hasListingsText = 'Update your listing to improve its sort rating' + const [hasListings, setHasListings] = useState(false) + const [text, setText] = useState(defaultText) + const isDesktop = useIsDesktop() + + useEffect(() => { + if (hasListings) setText(hasListingsText) + else setText(defaultText) + }, [hasListings]) + + return ( + + + + +
+ + {`Hi, ${user.name.split(' ')[0]}`} + + + + Create listing + + + + {isDesktop && ( + <> + + {text} + + )} +
+ + +
+ ) +} + +const Container = styled.div`` + +const StyledPlusIcon = styled(PlusIcon)` + fill: #fff; +` + +const ButtonText = styled.p` + margin-left: 0.2rem; + line-height: 1.5; +` + +export default MyListings diff --git a/client/src/pages/profile/Settings/index.jsx b/client/src/pages/profile/Settings/index.jsx new file mode 100644 index 0000000..a99e1d4 --- /dev/null +++ b/client/src/pages/profile/Settings/index.jsx @@ -0,0 +1,58 @@ +import React from 'react'; +import styled from 'styled-components'; +import MainHeader from 'src/components/headers/MainHeader'; +import Navbar from 'src/components/headers/Navbar'; +import Btn from 'src/components/buttons/Btn'; +import api from 'src/util/api'; +import log from 'src/util/log'; +import useRouter from 'src/util/hooks/useRouter'; +import { useDispatch } from 'react-redux'; + +const Container = styled.div` +`; + +const Content = styled.div` + display: flex; + justify-content: center; + padding-top: 2rem; +`; + +const Settings = () => { + const router = useRouter(); + const dispatch = useDispatch(); + const handleSignOut = async () => { + api.get('/auth/signout') + .then(() => { + router.history.push('/'); + + dispatch({ + type: 'USER_SET', + payload: null, + }); + + dispatch({ + type: 'CHATROOMS_SET', + payload: [], + }); + }) + .catch(({ response }) => log('Settings', response)) + }; + + return ( + + + + + +Sign Out + + + + ); +}; + +export default Settings; diff --git a/client/src/pages/profile/index.jsx b/client/src/pages/profile/index.jsx new file mode 100644 index 0000000..4ee92c2 --- /dev/null +++ b/client/src/pages/profile/index.jsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; +import { useHistory } from 'react-router-dom'; + +const ProfileIndex = () => { + const user = useSelector((state) => state.user); + const history = useHistory(); + + if (!user) history.push('/'); + else history.push('/profile/listings'); + + return
; +}; + +export default ProfileIndex; diff --git a/client/src/pages/stats/index.jsx b/client/src/pages/stats/index.jsx new file mode 100644 index 0000000..d9df21a --- /dev/null +++ b/client/src/pages/stats/index.jsx @@ -0,0 +1,28 @@ +import React, { useState, useEffect } from 'react'; +import api from 'src/util/api'; + +const StatsIndex = () => { + const [stats, setStats] = useState(); + const [isLoading, setIsLoading] = useState(false); + + useEffect(() => { + setIsLoading(true) + api.get(`/stats`) + .then((res) => { + setStats(res.data) + setIsLoading(false) + }) + .catch((error) => { + console.log('StatsIndex error', error) + setIsLoading(false) + }) + }, []); + + if (!stats || isLoading) return
Loading stats (this takes several minutes!)
+ + return
{Object.entries(stats).map(([ key, value ]) => ( +

{key}: {value}

+ ))}
; +}; + +export default StatsIndex; diff --git a/client/src/pages/terms-conditions/index.jsx b/client/src/pages/terms-conditions/index.jsx new file mode 100644 index 0000000..c4e2903 --- /dev/null +++ b/client/src/pages/terms-conditions/index.jsx @@ -0,0 +1,73 @@ +import React from 'react'; +import styled from 'styled-components'; +import MainHeader from 'src/components/headers/MainHeader'; + +const Container = styled.div` + padding: 2rem 0; +`; + +const html = ` + +
+
TERMS AND CONDITIONS

Last Updated 12 June 2020


1. Agreement to Terms

1.1 These Terms and Conditions constitute a legally binding agreement made between you, whether personally or on behalf of an entity (you), and Cornlet Housing, located at 106-1302 Oh-Hyun Ro 56, Gang-buk, Seoul, 01232 South Korea (we, us), concerning your access to and use of the cornlet (https://www.cornlet.com) website as well as any related applications (the Site).

The Site provides the following services: Online platform for sharing sublets and leases near Cornell University (Services). You agree that by accessing the Site and/or Services, you have read, understood, and agree to be bound by all of these Terms and Conditions.

If you do not agree with all of these Terms and Conditions, then you are prohibited from using the Site and Services and you must discontinue use immediately. We recommend that you print a copy of these Terms and Conditions for future reference.

1.2 The supplemental policies set out in Section 1.7 below, as well as any supplemental terms and condition or documents that may be posted on the Site from time to time, are expressly incorporated by reference.

1.3 We may make changes to these Terms and Conditions at any time. The updated version of these Terms and Conditions will be indicated by an updated “Revised” date and the updated version will be effective as soon as it is accessible. You are responsible for reviewing these Terms and Conditions to stay informed of updates. Your continued use of the Site represents that you have accepted such changes.

1.4 We may update or change the Site from time to time to reflect changes to our products, our users' needs and/or our business priorities.

1.5 The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country.

1.6 The Site is intended for users who are at least 18 years old. If you are under the age of 18, you are not permitted to register for the Site or use the Services without parental permission.

1.7 Additional policies which also apply to your use of the Site include:

Our Privacy Notice https://www.cornlet.com/privacy-policy, which sets out the terms on which we process any personal data we collect from you, or that you provide to us. By using the Site, you consent to such processing and you warrant that all data provided by you is accurate.
Our Cookie Policy https://www.cornlet.com/cookie-policy, which sets out information about the cookies on the Site.

2. Acceptable Use

2.1 You may not access or use the Site for any purpose other than that for which we make the site and our services available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.

2.2 As a user of this Site, you agree not to:

Systematically retrieve data or other content from the Site to a compile database or directory without written permission from us
Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users to send unsolicited email or creating user accounts under false pretenses
Use a buying agent or purchasing agent to make purchases on the Site
Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any content or enforce limitations on the use
Engage in unauthorized framing of or linking to the Site
Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords
Make improper use of our support services, or submit false reports of abuse or misconduct
Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools
Interfere with, disrupt, or create an undue burden on the Site or the networks and services connected to the Site
Attempt to impersonate another user or person, or use the username of another user
Sell or otherwise transfer your profile
Use any information obtained from the Site in order to harass, abuse, or harm another person
Use the Site or our content as part of any effort to compete with us or to create a revenue-generating endeavor or commercial enterprise
Decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site
Harass, annoy, intimidate, or threaten any of our employees, agents, or other users
Attempt to access any portions of the Site that you are restricted from accessing
Delete the copyright or other proprietary rights notice from any of the content
Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code
Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material that interferes with any party’s uninterrupted use and enjoyment of the Site, or any material that acts as a passive or active information collection or transmission mechanism
Use, launch, or engage in any automated use of the system, such as using scripts to send comments or messages, robots, scrapers, offline readers, or similar data gathering and extraction tools
Use the Site in a manner inconsistent with any applicable laws or regulations
Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site
Threaten users with negative feedback or offering services solely to give positive feedback to users
Misrepresent experience, skills, or information about a User
Advertise products or services not intended by us
Falsely imply a relationship with us or another company with whom you do not have a relationship

3. Information you provide to us

3.1 You represent and warrant that: (a) all registration information you submit will be true, accurate, current, and complete and relate to you and not a third party; (b) you will maintain the accuracy of such information and promptly update such information as necessary; (c) you will keep your password confidential and will be responsible for all use of your password and account; (d) you have the legal capacity and you agree to comply with these Terms and Conditions; and (e) you are not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site.

If you know or suspect that anyone other than you knows your user information (such as an identification code or user name) and/or password you must promptly notify us at cornletservice@gmail.com.

3.2 If you provide any information that is untrue, inaccurate, not current or incomplete, we may suspend or terminate your account. We may remove or change a user name you select if we determine that such user name is inappropriate.

3.3 As part of the functionality of the Site, you may link your account with online accounts you may have with third party service providers (each such account, a Third Party Account) by either: (a) providing your Third Party Account login information through the Site; or (b) allowing us to access your Third Party Account, as is permitted under the applicable terms and conditions that govern your use of each Third Party Account.

You represent that you are entitled to disclose your Third Party Account login information to us and/or grant us access to your Third Party Account without breach by you of any of the terms and conditions that govern your use of the applicable Third Party Account and without obligating us to pay any fees or making us subject to any usage limitations imposed by such third party service providers.

3.4 By granting us access to any Third Party Accounts, you understand that (a) we may access, make available and store (if applicable) any content that you have provided to and stored in your Third Party Account (the “Social Network Content”) so that it is available on and through the Site via your account, including without limitation any friend lists; and (b) we may submit and receive additional information to your Third Party Account to the extent you are notified when you link your account with the Third Party Account.

Depending on the Third Party Accounts you choose and subject to the privacy settings that you have set in such Third Party Accounts, personally identifiable information that you post to your Third Party Accounts may be available on and through your account on the Site. Please note that if a Third Party Account or associated service becomes unavailable or our access to such Third Party Account is terminated by the third party service provider, then Social Network Content may no longer be available on and through the Site.

You will have the ability to disable the connection between your account on the Site and your Third Party Accounts at any time. Please note that your relationship with the third party service providers associated with your third party accounts is governed solely by your agreement(s) with such third party service providers. We make no effort to review any Social Network Content for any purpose, including but not limited to, for accuracy, legality or non-infringement, and we are not responsible for any Social Network Content.

You acknowledge and agree that we may access your email address book associated with a Third Party Account and your contacts list stored on your mobile device or tablet computer solely for purposes of identifying and informing you of those contacts who have also registered to use the Site. At your email request to cornletservice@gmail.com or through your account settings (if applicable), we will deactivate the connection between the Site and your Third Party Account and attempt to delete any information stored on our servers that was obtained through such Third Party Account, except the username and profile picture that became associated with your account.

4. Content you provide to us

4.1 There may be opportunities for you to post content to the Site or send feedback to us (User Content). You understand and agree that your User Content may be viewed by other users on the Site, and that they may be able to see who has posted that User Content.

4.2 You further agree that we can use your User Content for any other purposes whatsoever in perpetuity without payment to you, and combine your User Content with other content for use within the Site and otherwise. We do not have to attribute your User Content to you.

4.3 In posting User Content, including reviews or making contact with other users of the Site you shall comply with our Acceptable Use Policy https://www.cornlet.com/terms-conditions.

4.4 You warrant that any User Content does comply with our Acceptable Use Policy, and you will be liable to us and indemnify us for any breach of that warranty. This means you will be responsible for any loss or damage we suffer as a result of your breach of this warranty.

4.5 We have the right to remove any User Content you put on the Site if, in our opinion, such User Content does not comply with the Acceptable Use Policy.

4.6 We are not responsible and accept no liability for any User Content including any such content that contains incorrect information or is defamatory or loss of User Content. We accept no obligation to screen, edit or monitor any User Content but we reserve the right to remove, screen and/or edit any User Content without notice and at any time. User Content has not been verified or approved by us and the views expressed by other users on the Site do not represent our views or values

4.7 If you wish to complain about User Content uploaded by other users please contact us at cornletservice@gmail.com or use the take down or report button.

5. Our content

5.1 Unless otherwise indicated, the Site and Services including source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (Our Content) are owned or licensed to us, and are protected by copyright and trade mark laws.

5.2 Except as expressly provided in these Terms and Conditions, no part of the Site, Services or Our Content may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.

5.3 Provided that you are eligible to use the Site, you are granted a limited licence to access and use the Site and Our Content and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use.

5.4 You shall not (a) try to gain unauthorised access to the Site or any networks, servers or computer systems connected to the Site; and/or (b) make for any purpose including error correction, any modifications, adaptions, additions or enhancements to the Site or Our Content, including the modification of the paper or digital copies you may have downloaded.

5.5 We shall (a) prepare the Site and Our Content with reasonable skill and care; and (b) use industry standard virus detection software to try to block the uploading of content to the Site that contains viruses.

5.6 The content on the Site is provided for general information only. It is not intended to amount to advice on which you should rely. You must obtain professional or specialist advice before taking, or refraining from taking, any action on the basis of the content on the Site.

5.7 Although we make reasonable efforts to update the information on our site, we make no representations, warranties or guarantees, whether express or implied, that Our Content on the Site is accurate, complete or up to date.

6. Site Management

6.1 We reserve the right at our sole discretion, to (1) monitor the Site for breaches of these Terms and Conditions; (2) take appropriate legal action against anyone in breach of applicable laws or these Terms and Conditions; (3) refuse, restrict access to or availability of, or disable (to the extent technologically feasible) any of your Contributions; (4) remove from the Site or otherwise disable all files and content that are excessive in size or are in any way a burden to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site and Services.

6.2 We do not guarantee that the Site will be secure or free from bugs or viruses.

6.3 You are responsible for configuring your information technology, computer programs and platform to access the Site and you should use your own virus protection software.

7. Modifications to and availability of the Site

7.1 We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. We also reserve the right to modify or discontinue all or part of the Services without notice at any time.

7.2 We cannot guarantee the Site and Services will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site or Services during any downtime or discontinuance of the Site or Services.We are not obliged to maintain and support the Site or Services or to supply any corrections, updates, or releases.

7.3 There may be information on the Site that contains typographical errors, inaccuracies, or omissions that may relate to the Services, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information at any time, without prior notice.

8. Disclaimer/Limitation of Liability

8.1 The Site and Services are provided on an as-is and as-available basis. You agree that your use of the Site and/or Services will be at your sole risk except as expressly set out in these Terms and Conditions. All warranties, terms, conditions and undertakings, express or implied (including by statute, custom or usage, a course of dealing, or common law) in connection with the Site and Services and your use thereof including, without limitation, the implied warranties of satisfactory quality, fitness for a particular purpose and non-infringement are excluded to the fullest extent permitted by applicable law.

We make no warranties or representations about the accuracy or completeness of the Site’s content and are not liable for any (1) errors or omissions in content: (2) any unauthorized access to or use of our servers and/or any and all personal information and/or financial information stored on our server; (3) any interruption or cessation of transmission to or from the site or services; and/or (4) any bugs, viruses, trojan horses, or the like which may be transmitted to or through the site by any third party. We will not be responsible for any delay or failure to comply with our obligations under these Terms and Conditions if such delay or failure is caused by an event beyond our reasonable control.

8.2 Our responsibility for loss or damage suffered by you:

Whether you are a consumer or a business user:

We do not exclude or limit in any way our liability to you where it would be unlawful to do so. This includes liability for death or personal injury caused by our negligence or the negligence of our employees, agents or subcontractors and for fraud or fraudulent misrepresentation.

If we fail to comply with these Terms and Conditions, we will be responsible for loss or damage you suffer that is a foreseeable result of our breach of these Terms and Conditions, but we would not be responsible for any loss or damage that were not foreseeable at the time you started using the Site/Services.

Notwithstanding anything to the contrary contained in the Disclaimer/Limitation of Liability section, our liability to you for any cause whatsoever and regardless of the form of the action, will at all times be limited to a total aggregate amount equal to the greater of (a) the sum of £0 or (b) the amount paid, if any, by you to us for the Services/Site during the six (6) month period prior to any cause of action arising.

If you are a consumer user:

Please note that we only provide our Site for domestic and private use. You agree not to use our Site for any commercial or business purposes, and we have no liability to you for any loss of profit, loss of business, business interruption, or loss of business opportunity.

If defective digital content that we have supplied, damages a device or digital content belonging to you and this is caused by our failure to use reasonable care and skill, we will either repair the damage or pay you compensation.

You have legal rights in relation to goods that are faulty or not as described. Advice about your legal rights is available from your local Citizens' Advice Bureau or Trading Standards office. Nothing in these Terms and Conditions will affect these legal rights.

9. Term and Termination

9.1 These Terms and Conditions shall remain in full force and effect while you use the Site or Services or are otherwise a user of the Site, as applicable. You may terminate your use or participation at any time, for any reason, by following the instructions for terminating user accounts in your account settings, if available, or by contacting us at cornletservice@gmail.com.

9.2 Without limiting any other provision of these Terms and Conditions, we reserve the right to, in our sole discretion and without notice or liability, deny access to and use of the Site and the Services (including blocking certain IP addresses), to any person for any reason including without limitation for breach of any representation, warranty or covenant contained in these Terms and Conditions or of any applicable law or regulation.

If we determine, in our sole discretion, that your use of the Site/Services is in breach of these Terms and Conditions or of any applicable law or regulation, we may terminate your use or participation in the Site and the Services or delete your profile and any content or information that you posted at any time, without warning, in our sole discretion.

9.3 If we terminate or suspend your account for any reason set out in this Section 9, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.

10. General

10.1 Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing.

You hereby agree to the use of electronic signatures, contracts, orders and other records and to electronic delivery of notices, policies and records of transactions initiated or completed by us or via the Site. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by other than electronic means.

10.2 These Terms and Conditions and any policies or operating rules posted by us on the Site or in respect to the Services constitute the entire agreement and understanding between you and us.

10.3 Our failure to exercise or enforce any right or provision of these Terms and Conditions shall not operate as a waiver of such right or provision.

10.4 We may assign any or all of our rights and obligations to others at any time.

10.5 We shall not be responsible or liable for any loss, damage, delay or failure to act caused by any cause beyond our reasonable control.

10.6 If any provision or part of a provision of these Terms and Conditions is unlawful, void or unenforceable, that provision or part of the provision is deemed severable from these Terms and Conditions and does not affect the validity and enforceability of any remaining provisions.

10.7 There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms and Conditions or use of the Site or Services.

10.8 For consumers only - Please note that these Terms and Conditions, their subject matter and their formation, are governed by English law. You and we both agree that the courts of England and Wales will have exclusive jurisdiction expect that if you are a resident of Northern Ireland you may also bring proceedings in Northern Ireland, and if you are resident of Scotland, you may also bring proceedings in Scotland. If you have any complaint or wish to raise a dispute under these Terms and Conditions or otherwise in relation to the Site please follow this link http://ec.europa.eu/odr

10.9 A person who is not a party to these Terms and Conditions shall have no right under the Contracts (Rights of Third Parties) Act 1999 to enforce any term of these Terms and Conditions.

10.10 In order to resolve a complaint regarding the Services or to receive further information regarding use of the Services, please contact us by email at cornletservice@gmail.com or by post to:

Cornlet Housing
106-1302 Oh-Hyun Ro 56, Gang-buk
Seoul, 01232
South Korea
+
+`; + +const TermsConditions = () => ( +
+ + +
+ +
+); + +export default TermsConditions; diff --git a/client/src/redux/reducers/authing.js b/client/src/redux/reducers/authing.js new file mode 100644 index 0000000..05cff93 --- /dev/null +++ b/client/src/redux/reducers/authing.js @@ -0,0 +1,10 @@ +const authingReducer = (state = false, action) => { + switch (action.type) { + case 'AUTHING_SET': + return action.payload; + default: + return state + } +} + +export default authingReducer; \ No newline at end of file diff --git a/client/src/redux/reducers/bm.js b/client/src/redux/reducers/bm.js new file mode 100644 index 0000000..1c1ca97 --- /dev/null +++ b/client/src/redux/reducers/bm.js @@ -0,0 +1,52 @@ +const bmReducer = (state = { notif: false, listings: [] }, action) => { + switch (action.type) { + case 'BM_SET': + return action.payload; + + case 'BM_ADD': + if (!state.listings) { + return { + listings: [action.payload], + notif: true, + } + } + else { + const newListings = [...state.listings]; + newListings.push(action.payload); + return { + ...state, + listings: newListings, + notif: true, + } + } + + case 'BM_REMOVE': + if (!state.listings) { + return state; + } + else { + const newListings = state.listings.filter((listing) => listing._id !== action.payload._id); + return { + ...state, + listings: newListings, + } + } + + case 'BM_NOTIF_TRUE': + return { + ...state, + notif: true, + } + + case 'BM_NOTIF_FALSE': + return { + ...state, + notif: false, + } + + default: + return state + } +} + +export default bmReducer; \ No newline at end of file diff --git a/client/src/redux/reducers/chatrooms.js b/client/src/redux/reducers/chatrooms.js new file mode 100644 index 0000000..1ffb521 --- /dev/null +++ b/client/src/redux/reducers/chatrooms.js @@ -0,0 +1,70 @@ +const chatroomsReducer = (state = [], action) => { + switch (action.type) { + case 'CHATROOMS_SET': { + return action.payload; + } + + case 'CHATROOMS_ADD': { + if (state.includes(action.payload)) { + return state; + } + else { + return [action.payload, ...state]; + } + } + + case 'CHATROOMS_REMOVE': { + return state.filter((chatroom) => chatroom._id !== action.payload._id); + } + + case 'CHATROOMS_MSG': { + const { cid } = action.payload; + const cids = state.map((chatroom) => chatroom._id); + const idx = cids.indexOf(cid); + + if (idx >= 0) { + // new chat occured in user's chatroom + const newState = [...state]; + const [chatroom] = newState.splice(idx, 1); + + // set other user to unread + const otherUserUid = chatroom.uids.filter((uid) => uid !== action.payload.uid)[0]; + if (!chatroom.notifUids.includes(otherUserUid)) { + chatroom.notifUids.push(otherUserUid); + } + + // add msg to chatroom + delete action.payload.cid; + chatroom.msgs.push(action.payload); + newState.unshift(chatroom); + + return newState; + } + else { + return state; + } + } + + case 'CHATROOMS_SEEN': { + const { cid, uid } = action.payload; + const targetChatrooms = state.filter((chatroom) => chatroom._id === cid); + if (targetChatrooms.length === 1) { + const chatroom = targetChatrooms[0]; + if (chatroom.notifUids.includes(uid)) { + chatroom.notifUids.splice(chatroom.notifUids.indexOf(uid), 1); + } + const newState = state.filter((chatroom) => chatroom._id !== cid); + newState.unshift(chatroom); + return newState; + } + else { + return state; + } + } + + default: + return state + } +} + +export default chatroomsReducer; \ No newline at end of file diff --git a/client/src/redux/reducers/index.js b/client/src/redux/reducers/index.js new file mode 100644 index 0000000..338b620 --- /dev/null +++ b/client/src/redux/reducers/index.js @@ -0,0 +1,18 @@ +import { combineReducers } from 'redux'; +import user from './user'; +import authing from './authing'; +import redirectPath from './redirectPath'; +import bm from './bm'; +import tempValues from './tempValues'; +import chatrooms from './chatrooms'; + +const rootReducer = combineReducers({ + user, + authing, + redirectPath, + bm, + tempValues, + chatrooms, +}) + +export default rootReducer \ No newline at end of file diff --git a/client/src/redux/reducers/redirectPath.js b/client/src/redux/reducers/redirectPath.js new file mode 100644 index 0000000..074b665 --- /dev/null +++ b/client/src/redux/reducers/redirectPath.js @@ -0,0 +1,10 @@ +const redirectPathReducer = (state = null, action) => { + switch (action.type) { + case 'REDIRECT_PATH_SET': + return action.payload; + default: + return state + } +} + +export default redirectPathReducer; \ No newline at end of file diff --git a/client/src/redux/reducers/tempValues.js b/client/src/redux/reducers/tempValues.js new file mode 100644 index 0000000..85f8493 --- /dev/null +++ b/client/src/redux/reducers/tempValues.js @@ -0,0 +1,14 @@ +const tempValuesReducer = (state = null, action) => { + switch (action.type) { + case 'TEMP_VALUES_SET': + return action.payload; + + case 'TEMP_VALUES_RESET': + return null; + + default: + return state + } +} + +export default tempValuesReducer; \ No newline at end of file diff --git a/client/src/redux/reducers/user.js b/client/src/redux/reducers/user.js new file mode 100644 index 0000000..0955b9a --- /dev/null +++ b/client/src/redux/reducers/user.js @@ -0,0 +1,69 @@ +const userReducer = (state = null, action) => { + switch (action.type) { + case 'USER_SET': + return action.payload + + case 'USER_SET_PROP': + return { + ...state, + ...action.payload, + } + + case 'USER_BM_ADD': + if (!state) return state + + const matches = state.bm.listings.filter((listing) => listing._id === action.payload._id) + if (matches.length > 0) { + // listing already in bm + return state + } else { + // add listing to bm + return { + ...state, + bm: { + ...state.bm, + notif: true, + listings: [...state.bm.listings, action.payload], + }, + } + } + + case 'USER_BM_REMOVE': + if (!state) return state + + const newBmListings = state.bm.listings.filter( + (listing) => listing._id !== action.payload._id + ) + return { + ...state, + bm: { + ...state.bm, + listings: newBmListings, + }, + } + + case 'USER_BM_NOTIF_FALSE': + if (!state) return state + + return { + ...state, + bm: { + ...state.bm, + notif: false, + }, + } + + case 'USER_BAN': + if (!state) return state + + return { + ...state, + isBanned: true, + } + + default: + return state + } +} + +export default userReducer diff --git a/client/src/redux/store.js b/client/src/redux/store.js new file mode 100644 index 0000000..5ad2bf9 --- /dev/null +++ b/client/src/redux/store.js @@ -0,0 +1,21 @@ +import { createStore, applyMiddleware } from 'redux'; +import rootReducer from 'src/redux/reducers'; +import logger from 'redux-logger'; +import thunk from 'redux-thunk'; +import { persistReducer } from 'redux-persist'; +import storage from 'redux-persist/lib/storage' // defaults to localStorage for web + +const blacklist = process.env.NODE_ENV === 'development' ? [] : []; + +const persistConfig = { + key: 'root', + storage, + blacklist, +} + +const middleware = process.env.REACT_APP_ENV !== 'production' ? [thunk, logger] : [thunk]; + +const persistedReducer = persistReducer(persistConfig, rootReducer) +const store = createStore(persistedReducer, applyMiddleware(...middleware)); + +export default store; \ No newline at end of file diff --git a/client/src/services/firebase/index.js b/client/src/services/firebase/index.js new file mode 100644 index 0000000..7d050e8 --- /dev/null +++ b/client/src/services/firebase/index.js @@ -0,0 +1,21 @@ +import * as firebase from "firebase/app"; +import 'firebase/storage'; +import uploadFile from './uploadFile'; + +const firebaseConfig = { + apiKey: "AIzaSyAQ9olIfEWy0ydA0yJU52qfH0paJn9MXIM", + authDomain: "cornlet-prod.firebaseapp.com", + databaseURL: "https://cornlet-prod.firebaseio.com", + projectId: "cornlet-prod", + storageBucket: "cornlet-prod.appspot.com", + messagingSenderId: "88125142899", + appId: "1:88125142899:web:59480abcd4cf2bd7eb7706", + measurementId: "G-045Z67SPL6" +}; + +firebase.initializeApp(firebaseConfig); + +export default firebase; +export { + uploadFile, +} \ No newline at end of file diff --git a/client/src/services/firebase/uploadFile.js b/client/src/services/firebase/uploadFile.js new file mode 100644 index 0000000..b935017 --- /dev/null +++ b/client/src/services/firebase/uploadFile.js @@ -0,0 +1,39 @@ +import Compressor from 'compressorjs' +import firebase from 'src/services/firebase' + +// REJECT: Upload error +// RESOLVE: Img download url +const uploadFile = (file, directory) => + new Promise((resolve, reject) => { + console.log('file', file) + const storage = firebase.storage() + const storageRef = storage.ref() + const path = `${directory}/${file.name}` + + // compress file + new Compressor(file, { + quality: 0.6, + convertSize: 1, + success(result) { + const uploadTask = storageRef.child(path).put(result) + uploadTask.on( + 'state_changed', + (snapshot) => {}, + (e) => { + reject(e) + }, + () => { + // UPLOAD SUCCESS + uploadTask.snapshot.ref.getDownloadURL().then((src) => { + resolve(src) + }) + } + ) + }, + error(err) { + console.log(err.message) + }, + }) + }) + +export default uploadFile diff --git a/client/src/theme/Normalise.css b/client/src/theme/Normalise.css new file mode 100644 index 0000000..08bccbd --- /dev/null +++ b/client/src/theme/Normalise.css @@ -0,0 +1,70 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} + +a, a:hover, a:focus { + text-decoration: none; + color: inherit; +} + +input, button { + border:none; +} + +a:focus, a:active, button:active, button:focus { + outline:0; +} + +html { + font-size: 16px; + font-family: 'Roboto', sans-serif; + + @media (min-width: 768px) { + font-size: 16px; + } +} \ No newline at end of file diff --git a/client/src/theme/colors.js b/client/src/theme/colors.js new file mode 100644 index 0000000..832f3b6 --- /dev/null +++ b/client/src/theme/colors.js @@ -0,0 +1,74 @@ +const palette = { + grey: { + 50: '#fafafa', + 100: '#f5f5f5', + 200: '#eeeeee', + 300: '#e0e0e0', + 400: '#bdbdbd', + 500: '#9e9e9e', + 600: '#757575', + 700: '#616161', + 800: '#424242', + 900: '#212121', + }, +} + +const theme = { + ...palette, + + // region + collegetown: '#66C088', + collegetownBg: '#E6F5EB', + west: '#0275d8', + westBg: '#D5E8F9', + north: '#F0AD4E', + northBg: '#FDF1E2', + + // state feedback + success: '#66c088', + primary: '#B31B1B', + primaryLight: '#d17676', + blue: '#0275d8', + warning: '#f0ad4e', + warningLight: '#FDF1E2', + danger: '#de6362', + + // text + text: '#3B454E', + textLight: '#575859', + textMuted: '#737576', + textPlaceholder: '#D3D7DB', + + // brand + brand: { + '25': '#FBF2F2', + '50': '#f6e4e4', + '100': '#e8bbbb', + '200': '#d98d8d', + '300': '#ca5f5f', + '400': '#be3d3d', + '500': '#b31b1b', + '600': '#ac1818', + '700': '#a31414', + '800': '#9a1010', + '900': '#8b0808', + }, + brandLight: '#D98D8D', + brandDark: '#5A0E0E', + brandBg: '#F4DFDF', + + brand500: '#B31B1B', + brand300: '#C65454', + brand100: '#D98D8D', + brand100: '#D98D8D', + brand50: '#F9ECEC', + + // border + border: { + default: palette.grey[200], + light: '#E2E2E3', + dark: '#C6C6C7', + }, +} + +export default theme diff --git a/client/src/theme/dimensions.js b/client/src/theme/dimensions.js new file mode 100644 index 0000000..bfef488 --- /dev/null +++ b/client/src/theme/dimensions.js @@ -0,0 +1,6 @@ +export default { + DESKTOP_CONTENT_WIDTH: 1200, + md: 768, + CARD_WIDTH: 300, + medium: '768px', +} \ No newline at end of file diff --git a/client/src/theme/index.js b/client/src/theme/index.js new file mode 100644 index 0000000..a575545 --- /dev/null +++ b/client/src/theme/index.js @@ -0,0 +1,8 @@ +import colors from './colors'; +import dimensions from './dimensions'; + +export default { + ...colors, + ...dimensions, + shadow: '0 2px 4px rgba(0, 0, 0, .1)' +}; diff --git a/client/src/util/api.js b/client/src/util/api.js new file mode 100644 index 0000000..e36b2fb --- /dev/null +++ b/client/src/util/api.js @@ -0,0 +1,5 @@ +import axios from 'axios'; + +export default axios.create({ + baseURL: '/api' +}); diff --git a/client/src/util/auth/fetchSelfAndStore.js b/client/src/util/auth/fetchSelfAndStore.js new file mode 100644 index 0000000..e53670e --- /dev/null +++ b/client/src/util/auth/fetchSelfAndStore.js @@ -0,0 +1,22 @@ +import store from 'src/redux/store'; +import axios from 'axios'; +import log from 'src/util/log'; + +const fetchSelfAndStore = (id) => { + return new Promise((resolve, reject) => { + axios.get(`/api/user/${id}`) + .then((res) => { + store.dispatch({ + type: 'USER_SET', + payload: res.data + }) + resolve(res.data); + }) + .catch((e) => { + log('ERROR util auth fetchselfandstore', e); + reject(e); + }) + }) +} + +export default fetchSelfAndStore \ No newline at end of file diff --git a/client/src/util/auth/logout.js b/client/src/util/auth/logout.js new file mode 100644 index 0000000..c9d6f10 --- /dev/null +++ b/client/src/util/auth/logout.js @@ -0,0 +1,19 @@ +import axios from 'axios'; +import log from 'src/util/log'; +import store from 'src/redux/store'; + +const logout = () => { + axios.post('/api/user/logout') + .then((res) => { + log('logout successful', res); + store.dispatch({ + type: 'USER_SET', + payload: null + }) + }) + .catch((e) => { + log('logout error', e) + }) +} + +export default logout; \ No newline at end of file diff --git a/client/src/util/helpers/calcDistance.js b/client/src/util/helpers/calcDistance.js new file mode 100644 index 0000000..3f2e9e4 --- /dev/null +++ b/client/src/util/helpers/calcDistance.js @@ -0,0 +1,21 @@ +const calcDistance = (lat1, lon1, lat2, lon2) => { + var R = 6371 // km + var dLat = toRad(lat2 - lat1) + var dLon = toRad(lon2 - lon1) + var lat1 = toRad(lat1) + var lat2 = toRad(lat2) + + var a = + Math.sin(dLat / 2) * Math.sin(dLat / 2) + + Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2) + var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)) + var d = R * c + return d +} + +// Converts numeric degrees to radians +const toRad = (value) => { + return (value * Math.PI) / 180 +} + +export default calcDistance diff --git a/client/src/util/helpers/formatDate.js b/client/src/util/helpers/formatDate.js new file mode 100644 index 0000000..7a855dd --- /dev/null +++ b/client/src/util/helpers/formatDate.js @@ -0,0 +1,12 @@ +import moment from 'moment' + +const formatDate = (date, isText) => { + const d = new Date(date) + if (isText) { + return moment(d).format('MMM D') + } + const dateString = `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}` + return dateString +} + +export default formatDate diff --git a/client/src/util/helpers/formatListingDesc.js b/client/src/util/helpers/formatListingDesc.js new file mode 100644 index 0000000..a5bb3eb --- /dev/null +++ b/client/src/util/helpers/formatListingDesc.js @@ -0,0 +1,7 @@ +const formatListingDesc = (listing) => { + return `${listing.availRooms || '1'} ${listing.availRooms > 1 ? 'rooms' : 'room'} in a ${ + listing.totalRooms || 1 + }-BR ${listing.type.charAt(0).toUpperCase() + listing.type.slice(1)}` +} + +export default formatListingDesc diff --git a/client/src/util/helpers/getDateDiff.js b/client/src/util/helpers/getDateDiff.js new file mode 100644 index 0000000..e25e0cc --- /dev/null +++ b/client/src/util/helpers/getDateDiff.js @@ -0,0 +1,7 @@ +const getDateDiff = (future, past) => { + const oneDay = 24 * 60 * 60 * 1000; + + return Math.round(Math.abs((new Date(future) - new Date(past)) / oneDay)); +} + +export default getDateDiff; diff --git a/client/src/util/helpers/getDateString.js b/client/src/util/helpers/getDateString.js new file mode 100644 index 0000000..48d5c27 --- /dev/null +++ b/client/src/util/helpers/getDateString.js @@ -0,0 +1,22 @@ +import formatDate from 'src/util/helpers/formatDate' +import getNumericDate from './getNumericDate' + +const getDateString = (listing, options = {}) => { + const { start, end } = listing + const { isNumeric } = options + + if (isNumeric) { + return `${getNumericDate(start)} - ${getNumericDate(end)}` + } + + const startYear = + new Date(start).getFullYear() !== new Date(end).getFullYear() + ? `, ${new Date(start).getFullYear()}` + : '' + return `${formatDate(new Date(start), true)}${startYear} - ${formatDate( + new Date(end), + true + )}, ${new Date(end).getFullYear()}` +} + +export default getDateString diff --git a/client/src/util/helpers/getFromNowDate.js b/client/src/util/helpers/getFromNowDate.js new file mode 100644 index 0000000..83574c8 --- /dev/null +++ b/client/src/util/helpers/getFromNowDate.js @@ -0,0 +1,10 @@ +import moment from 'moment' +import formatDate from './formatDate' + +const getFromNowDate = (date) => { + const daysSince = Math.floor((new Date() - new Date(date)) / (1000 * 60 * 60 * 24)) + const dateString = daysSince > 3 ? formatDate(date, true) : moment(new Date(date)).fromNow() + return dateString || '' +} + +export default getFromNowDate diff --git a/client/src/util/helpers/getNumericDate.js b/client/src/util/helpers/getNumericDate.js new file mode 100644 index 0000000..3fb55d1 --- /dev/null +++ b/client/src/util/helpers/getNumericDate.js @@ -0,0 +1,10 @@ +const getNumericDate = (dateString) => { + const date = new Date(dateString) + const month = (date.getMonth() + 1).toString() + const day = date.getDate().toString() + const monthString = month.length === 1 ? `0${month}` : month + const dayString = day.length === 1 ? `0${day}` : day + return `${date.getFullYear()}/${monthString}/${dayString}` +} + +export default getNumericDate diff --git a/client/src/util/helpers/getRegion.js b/client/src/util/helpers/getRegion.js new file mode 100644 index 0000000..b05cf2e --- /dev/null +++ b/client/src/util/helpers/getRegion.js @@ -0,0 +1,48 @@ +import theme from 'src/theme' +import calcDistance from './calcDistance' + +const regions = { + north: { + lat: 42.451288, + lng: -76.482072, + label: 'North campus', + color: theme.north, + background: theme.northBg, + }, + west: { + lat: 42.447549, + lng: -76.487739, + label: 'West campus', + color: theme.west, + background: theme.westBg, + }, + collegetown: { + lat: 42.443147, + lng: -76.485249, + label: 'Collegetown', + color: theme.collegetown, + background: theme.collegetownBg, + }, +} + +const getRegion = ({ lat, lng }) => { + let minDistance = null + let closestRegion = null + + Object.values(regions).forEach((region) => { + const distanceFromRegion = Math.abs(calcDistance(lat, lng, region.lat, region.lng)) + if (!minDistance) { + minDistance = distanceFromRegion + closestRegion = region + } else { + if (distanceFromRegion < minDistance) { + minDistance = distanceFromRegion + closestRegion = region + } + } + }) + + return closestRegion +} + +export default getRegion diff --git a/client/src/util/helpers/getShortAddr.js b/client/src/util/helpers/getShortAddr.js new file mode 100644 index 0000000..1f55302 --- /dev/null +++ b/client/src/util/helpers/getShortAddr.js @@ -0,0 +1,5 @@ +const getShortAddr = (addr) => { + return addr.split(', Ithaca')[0] +} + +export default getShortAddr; \ No newline at end of file diff --git a/client/src/util/helpers/getShortDateString.js b/client/src/util/helpers/getShortDateString.js new file mode 100644 index 0000000..cd44551 --- /dev/null +++ b/client/src/util/helpers/getShortDateString.js @@ -0,0 +1,8 @@ +import formatDate from 'src/util/helpers/formatDate'; + +const getShortDateString = (listing) => { + const { start, end } = listing; + return `${formatDate(new Date(start), true)} - ${formatDate(new Date(end), true)}`; +} + +export default getShortDateString diff --git a/client/src/util/helpers/kmToMins.js b/client/src/util/helpers/kmToMins.js new file mode 100644 index 0000000..27d9de6 --- /dev/null +++ b/client/src/util/helpers/kmToMins.js @@ -0,0 +1,3 @@ +const kmToMins = (km) => km * 20 || 0 + +export default kmToMins diff --git a/client/src/util/helpers/listingDatestring.js b/client/src/util/helpers/listingDatestring.js new file mode 100644 index 0000000..9faf2d2 --- /dev/null +++ b/client/src/util/helpers/listingDatestring.js @@ -0,0 +1,8 @@ +import formatDate from './formatDate'; + +const listingDatestring = (listing) => { + if (!listing || !listing.start || !listing.end) return ''; + return formatDate(listing.start) + ' ~ ' + formatDate(listing.end); +} + +export default listingDatestring; \ No newline at end of file diff --git a/client/src/util/helpers/signin.js b/client/src/util/helpers/signin.js new file mode 100644 index 0000000..88a8d4c --- /dev/null +++ b/client/src/util/helpers/signin.js @@ -0,0 +1,22 @@ +import store from 'src/redux/store'; + +const signin = (options) => { + const url = process.env.NODE_ENV === 'development' + ? 'http://localhost:8081/api/auth/google' + : `${process.env.REACT_APP_CLIENT_DOMAIN}/api/auth/google`; + + window.open(url, '_self'); + store.dispatch({ + type: 'AUTHING_SET', + payload: true, + }); + + if (options && options.redirectPath) { + store.dispatch({ + type: 'REDIRECT_PATH_SET', + payload: options.redirectPath, + }) + } +} + +export default signin; diff --git a/client/src/util/hooks/useChatOtherUser.js b/client/src/util/hooks/useChatOtherUser.js new file mode 100644 index 0000000..01d3f6c --- /dev/null +++ b/client/src/util/hooks/useChatOtherUser.js @@ -0,0 +1,16 @@ +import { useSelector } from "react-redux"; + +function useChatOtherUser(chatroom) { + const signedInUser = useSelector((state) => state.user); + if (!chatroom.searcher) { + return chatroom.listing.user; + } + if (chatroom.searcher.uid !== signedInUser.uid) { + return chatroom.searcher; + } + else { + return chatroom.listing.user; + } +} + +export default useChatOtherUser; \ No newline at end of file diff --git a/client/src/util/hooks/useChatroom.js b/client/src/util/hooks/useChatroom.js new file mode 100644 index 0000000..55edea7 --- /dev/null +++ b/client/src/util/hooks/useChatroom.js @@ -0,0 +1,11 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; + +const useChatroom = (cid) => { + const chatrooms = useSelector((state) => state.chatrooms); + const target = chatrooms.filter((chatroom) => chatroom._id === cid); + if (target.length === 0) return null; + else return target[0] +} + +export default useChatroom; \ No newline at end of file diff --git a/client/src/util/hooks/useFilters.js b/client/src/util/hooks/useFilters.js new file mode 100644 index 0000000..955d6b7 --- /dev/null +++ b/client/src/util/hooks/useFilters.js @@ -0,0 +1,58 @@ +import getNumericDate from '../helpers/getNumericDate' +import useRouter from './useRouter' + +const useFilters = () => { + const router = useRouter() + const { query, updateQuery } = router + const { minToCampus, maxToCampus, minPrice, maxPrice, start, end } = query + + const filters = [] + + const removeFilters = (removedFilters) => { + const data = {} + removedFilters.forEach((filter) => { + data[filter] = undefined + }) + updateQuery(data) + } + + if (start) { + const filter = { + type: 'date', + text: `Starts ${getNumericDate(start)}`, + cb: () => removeFilters(['start']), + } + filters.push(filter) + } + + if (end) { + const filter = { + type: 'date', + text: `Ends ${getNumericDate(end)}`, + cb: () => removeFilters(['end']), + } + filters.push(filter) + } + + if (minToCampus && maxToCampus) { + const filter = { + type: 'distance', + text: `From campus: ${minToCampus} mins - ${maxToCampus} mins`, + cb: () => removeFilters(['minToCampus', 'maxToCampus']), + } + filters.push(filter) + } + + if (minPrice && maxPrice) { + const filter = { + type: 'price', + text: `Price: $${minPrice} - $${maxPrice}`, + cb: () => removeFilters(['minPrice', 'maxPrice']), + } + filters.push(filter) + } + + return filters +} + +export default useFilters diff --git a/client/src/util/hooks/useIsDesktop.js b/client/src/util/hooks/useIsDesktop.js new file mode 100644 index 0000000..d47b0ae --- /dev/null +++ b/client/src/util/hooks/useIsDesktop.js @@ -0,0 +1,16 @@ +import React, { useEffect, useState } from 'react'; +import theme from 'src/theme'; +import useWindowSize from './useWindowSize'; + +function useIsDesktop() { + const [width, height] = useWindowSize(); + const [isDesktop, setIsDesktop] = useState(width >= theme.md); + + useEffect(() => { + setIsDesktop(width >= theme.md); + }, [width]); + + return isDesktop; +} + +export default useIsDesktop; \ No newline at end of file diff --git a/client/src/util/hooks/useIsMobile.js b/client/src/util/hooks/useIsMobile.js new file mode 100644 index 0000000..f6e4497 --- /dev/null +++ b/client/src/util/hooks/useIsMobile.js @@ -0,0 +1,16 @@ +import React, { useState, useEffect } from 'react'; +import theme from 'src/theme'; +import useWindowSize from './useWindowSize'; + +const useIsMobile = () => { + const [width] = useWindowSize(); + const [isMobile, setIsMobile] = useState(width < theme.md); + + useEffect(() => { + setIsMobile(width < theme.md); + }, [width]); + + return isMobile; +} + +export default useIsMobile; \ No newline at end of file diff --git a/client/src/util/hooks/useLocalStorage.js b/client/src/util/hooks/useLocalStorage.js new file mode 100644 index 0000000..44e5d96 --- /dev/null +++ b/client/src/util/hooks/useLocalStorage.js @@ -0,0 +1,71 @@ +import { useState } from 'react'; + +const useLocalStorage = (key, initialValue) => { + + // State to store our value + + // Pass initial state function to useState so logic is only executed once + + const [storedValue, setStoredValue] = useState(() => { + + try { + + // Get from local storage by key + + const item = window.localStorage.getItem(key); + + // Parse stored json or if none return initialValue + + return item ? JSON.parse(item) : initialValue; + + } catch (error) { + + // If error also return initialValue + + + return initialValue; + + } + + }); + + + + // Return a wrapped version of useState's setter function that ... + + // ... persists the new value to localStorage. + + const setValue = value => { + + try { + + // Allow value to be a function so we have same API as useState + + const valueToStore = + + value instanceof Function ? value(storedValue) : value; + + // Save state + + setStoredValue(valueToStore); + + // Save to local storage + + window.localStorage.setItem(key, JSON.stringify(valueToStore)); + + } catch (error) { + + // A more advanced implementation would handle the error case + + + } + + }; + + + + return [storedValue, setValue]; + +} + +export default useLocalStorage; \ No newline at end of file diff --git a/client/src/util/hooks/useOnOutsideClick.js b/client/src/util/hooks/useOnOutsideClick.js new file mode 100644 index 0000000..5c5eef8 --- /dev/null +++ b/client/src/util/hooks/useOnOutsideClick.js @@ -0,0 +1,22 @@ +import React, { useEffect } from 'react' + +const useOnOutsideClick = (ref, handler) => { + useEffect(() => { + const handleClickOutside = (event) => { + if (ref.current && !ref.current.contains(event.target)) { + event.stopPropagation() + event.stopImmediatePropagation() + event.preventDefault() + handler() + } + } + + document.addEventListener('mousedown', handleClickOutside) + + return () => { + document.removeEventListener('mousedown', handleClickOutside) + } + }, [ref]) +} + +export default useOnOutsideClick diff --git a/client/src/util/hooks/useRouter.js b/client/src/util/hooks/useRouter.js new file mode 100644 index 0000000..94d4576 --- /dev/null +++ b/client/src/util/hooks/useRouter.js @@ -0,0 +1,41 @@ +import { useParams, useLocation, useHistory, useRouteMatch } from 'react-router-dom'; +import { useMemo } from 'react'; +import queryString from 'query-string'; + +export default function useRouter() { + const params = useParams(); + const location = useLocation(); + const history = useHistory(); + const match = useRouteMatch(); + + const query = { + ...queryString.parse(location.search), // Convert string to object + ...params + } + + const setQuery = (newQuery) => { + const queryStr = queryString.stringify(newQuery); + const newPath = `${location.pathname}?${queryStr}`; + history.push(newPath); + } + + const updateQuery = (obj, overwrite = false) => { + const newQuery = Object.assign({}, query, obj); + setQuery(overwrite ? obj : newQuery); + } + + return useMemo(() => { + return { + push: history.push, + replace: history.replace, + pathname: location.pathname, + query, + updateQuery, + match, + location, + history + }; + + }, [params, match, location, history]); + +} diff --git a/client/src/util/hooks/useScript.js b/client/src/util/hooks/useScript.js new file mode 100644 index 0000000..bb81e57 --- /dev/null +++ b/client/src/util/hooks/useScript.js @@ -0,0 +1,129 @@ +import { useState, useEffect } from 'react'; + +let cachedScripts = []; + +function useScript(src) { + + // Keeping track of script loaded and error state + + const [state, setState] = useState({ + + loaded: false, + + error: false + + }); + + + + useEffect( + + () => { + + // If cachedScripts array already includes src that means another instance ... + + // ... of this hook already loaded this script, so no need to load again. + + if (cachedScripts.includes(src)) { + + setState({ + + loaded: true, + + error: false + + }); + + } else { + + cachedScripts.push(src); + + + + // Create script + + let script = document.createElement('script'); + + script.src = src; + + script.async = true; + + + + // Script event listener callbacks for load and error + + const onScriptLoad = () => { + + setState({ + + loaded: true, + + error: false + + }); + + }; + + + + const onScriptError = () => { + + // Remove from cachedScripts we can try loading again + + const index = cachedScripts.indexOf(src); + + if (index >= 0) cachedScripts.splice(index, 1); + + script.remove(); + + + + setState({ + + loaded: true, + + error: true + + }); + + }; + + + + script.addEventListener('load', onScriptLoad); + + script.addEventListener('error', onScriptError); + + + + // Add script to document body + + document.body.appendChild(script); + + + + // Remove event listeners on cleanup + + return () => { + + script.removeEventListener('load', onScriptLoad); + + script.removeEventListener('error', onScriptError); + + }; + + } + + }, + + [src] // Only re-run effect if script src changes + + ); + + + + return [state.loaded, state.error]; + +} + +export default useScript; \ No newline at end of file diff --git a/client/src/util/hooks/useUnreadChatrooms.js b/client/src/util/hooks/useUnreadChatrooms.js new file mode 100644 index 0000000..b96a5a0 --- /dev/null +++ b/client/src/util/hooks/useUnreadChatrooms.js @@ -0,0 +1,11 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; + +const useUnreadChatrooms = () => { + const chatrooms = useSelector((state) => state.chatrooms); + const user = useSelector(state => state.user); + if (!user) return []; + return chatrooms.filter((chatroom) => chatroom.notifUids.includes(user.uid)); +} + +export default useUnreadChatrooms; \ No newline at end of file diff --git a/client/src/util/hooks/useWindowSize.js b/client/src/util/hooks/useWindowSize.js new file mode 100644 index 0000000..b621d79 --- /dev/null +++ b/client/src/util/hooks/useWindowSize.js @@ -0,0 +1,16 @@ +import React, { useLayoutEffect, useState } from 'react'; + +function useWindowSize() { + const [size, setSize] = useState([window.innerWidth, window.innerHeight]); + useLayoutEffect(() => { + function updateSize() { + setSize([window.innerWidth, window.innerHeight]); + } + window.addEventListener('resize', updateSize); + updateSize(); + return () => window.removeEventListener('resize', updateSize); + }, []); + return size; +} + +export default useWindowSize; \ No newline at end of file diff --git a/client/src/util/log.js b/client/src/util/log.js new file mode 100644 index 0000000..33b9e4f --- /dev/null +++ b/client/src/util/log.js @@ -0,0 +1,7 @@ +const log = (txt, data = null) => { + if (process.env.NODE_ENV === 'development') { + console.log(txt, data); + } +}; + +export default log; diff --git a/client/src/util/path/getQuery.js b/client/src/util/path/getQuery.js new file mode 100644 index 0000000..ce57df9 --- /dev/null +++ b/client/src/util/path/getQuery.js @@ -0,0 +1,7 @@ +import qs from 'qs'; + +const getQuery = (location) => { + return qs.parse(location.search.split('?')[1]); +} + +export default getQuery; \ No newline at end of file diff --git a/client/src/util/path/updateQuery.js b/client/src/util/path/updateQuery.js new file mode 100644 index 0000000..afde06c --- /dev/null +++ b/client/src/util/path/updateQuery.js @@ -0,0 +1,11 @@ +import qs from 'qs'; + +const updateQuery = (query, location, history) => { + const prevQuery = qs.parse(location.search.split('?')[1]); + const newQuery = Object.assign({}, prevQuery, query); + const queryStr = qs.stringify(newQuery); + const newPath = `${location.pathname}?${queryStr}`; + history.push(newPath); +} + +export default updateQuery; \ No newline at end of file diff --git a/client/src/util/socket.js b/client/src/util/socket.js new file mode 100644 index 0000000..61a02af --- /dev/null +++ b/client/src/util/socket.js @@ -0,0 +1,5 @@ +import io from "socket.io-client"; + +const socket = io.connect(process.env.REACT_APP_CLIENT_DOMAIN); + +export default socket; \ No newline at end of file diff --git a/client/vite.config.js b/client/vite.config.js new file mode 100644 index 0000000..172e709 --- /dev/null +++ b/client/vite.config.js @@ -0,0 +1,14 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react-swc' +import svgr from "vite-plugin-svgr"; + + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [svgr(), react()], + resolve: { + alias: { + src: "/src", + }, + }, +}) From f0003fa7cae8ce35deaf5ea3e560150d0c365524 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 19:34:14 -0400 Subject: [PATCH 05/22] remove unused app jsx --- client/src/App.jsx | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 client/src/App.jsx diff --git a/client/src/App.jsx b/client/src/App.jsx deleted file mode 100644 index 4df4e9d..0000000 --- a/client/src/App.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' -import './App.css' - -function App() { - const [count, setCount] = useState(0) - - return ( - <> - -

Vite + React

-
- -

- Edit src/App.jsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

- - ) -} - -export default App From 81a00ef2b36fdbbc55bcc34932fe5ab5f37cf94c Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 19:39:12 -0400 Subject: [PATCH 06/22] refactor svg import syntax --- .../src/components/buttons/Auth.jsx | 42 +++---- .../src/components/buttons/BmBtn.jsx | 8 +- .../src/components/buttons/CircleCross.jsx | 30 ++--- .../components/cards/ListingCard/index.jsx | 4 +- .../src/components/core/ScrollToTop.jsx | 47 ++++---- .../src/components/displays/Avatar.jsx | 2 +- .../src/components/displays/InfoBox.jsx | 8 +- .../src/components/displays/Logo.jsx | 2 +- .../src/components/displays/Metadata.jsx | 42 +++---- .../src/components/filters/DateFilter.jsx | 67 ++++++----- .../src/components/fonts/ListingInfo.jsx | 2 +- .../components/headers/BackHeader/index.jsx | 2 +- .../headers/MainHeader/Bookmarks/index.jsx | 2 +- .../headers/MainHeader/Chat/index.jsx | 2 +- .../MainHeader/MobileNav/FullscreenNav.jsx | 2 +- .../headers/MainHeader/MobileNav/index.jsx | 2 +- .../components/headers/MainHeader/index.jsx | 2 +- .../src/components/views/Modal/index.jsx | 2 +- client-cra-legacy/src/constants/amenities.jsx | 22 ++-- .../SearchOptions/Filters/FilterStatus.jsx | 2 +- .../home/SearchOptions/Filters/index.jsx | 2 +- .../pages/listing/Listing/IconsSection.jsx | 8 +- .../pages/listing/Listing/RightSidePanel.jsx | 110 ++++++++++-------- .../src/pages/listing/Listing/index.jsx | 4 +- .../src/pages/profile/MyBookmarks/index.jsx | 2 +- .../profile/MyChats/ChatroomList/index.jsx | 2 +- .../profile/MyChats/ChatroomPanel/Header.jsx | 4 +- .../profile/MyListings/MyListingsList.jsx | 2 +- .../src/pages/profile/MyListings/index.jsx | 2 +- client/src/components/buttons/Auth.jsx | 2 +- client/src/components/buttons/BmBtn.jsx | 8 +- client/src/components/buttons/CircleCross.jsx | 10 +- .../components/cards/ListingCard/index.jsx | 4 +- client/src/components/core/ScrollToTop.jsx | 2 +- client/src/components/displays/Avatar.jsx | 2 +- client/src/components/displays/InfoBox.jsx | 2 +- client/src/components/displays/Logo.jsx | 2 +- client/src/components/displays/Metadata.jsx | 2 +- client/src/components/filters/DateFilter.jsx | 4 +- client/src/components/fonts/ListingInfo.jsx | 2 +- .../components/headers/BackHeader/index.jsx | 2 +- .../headers/MainHeader/Bookmarks/index.jsx | 2 +- .../headers/MainHeader/Chat/index.jsx | 2 +- .../MainHeader/MobileNav/FullscreenNav.jsx | 2 +- .../headers/MainHeader/MobileNav/index.jsx | 2 +- .../components/headers/MainHeader/index.jsx | 2 +- client/src/components/views/Modal/index.jsx | 2 +- client/src/constants/amenities.jsx | 16 +-- .../SearchOptions/Filters/FilterStatus.jsx | 2 +- .../home/SearchOptions/Filters/index.jsx | 2 +- .../pages/listing/Listing/IconsSection.jsx | 8 +- .../pages/listing/Listing/RightSidePanel.jsx | 2 +- client/src/pages/listing/Listing/index.jsx | 4 +- .../src/pages/profile/MyBookmarks/index.jsx | 2 +- .../profile/MyChats/ChatroomList/index.jsx | 2 +- .../profile/MyChats/ChatroomPanel/Header.jsx | 4 +- .../profile/MyListings/MyListingsList.jsx | 2 +- client/src/pages/profile/MyListings/index.jsx | 2 +- 58 files changed, 265 insertions(+), 263 deletions(-) diff --git a/client-cra-legacy/src/components/buttons/Auth.jsx b/client-cra-legacy/src/components/buttons/Auth.jsx index b7658d5..f213d02 100644 --- a/client-cra-legacy/src/components/buttons/Auth.jsx +++ b/client-cra-legacy/src/components/buttons/Auth.jsx @@ -1,11 +1,11 @@ -import React from 'react'; -import styled from 'styled-components'; -import { ReactComponent as Google } from 'src/assets/svgs/google.svg'; -import Avatar from 'src/components/displays/Avatar'; -import { useDispatch, useSelector } from 'react-redux'; -import Loading from 'src/components/displays/Loading'; -import signin from 'src/util/helpers/signin'; -import Body from '../fonts/Body'; +import React from 'react' +import styled from 'styled-components' +import Google from 'src/assets/svgs/google.svg' +import Avatar from 'src/components/displays/Avatar' +import { useDispatch, useSelector } from 'react-redux' +import Loading from 'src/components/displays/Loading' +import signin from 'src/util/helpers/signin' +import Body from '../fonts/Body' const SignIn = styled(Google)` height: 30px; @@ -15,28 +15,22 @@ const SignIn = styled(Google)` padding: .5rem; border-radius: 5px; cursor: pointer; -`; +` -const Container = styled.div` - -`; +const Container = styled.div`` const Auth = ({ border }) => { - const user = useSelector((state) => state.user); + const user = useSelector((state) => state.user) if (user) { - return ( - - ); + return } return ( - Sign in - ); -}; + + Sign in + + ) +} -export default Auth; +export default Auth diff --git a/client-cra-legacy/src/components/buttons/BmBtn.jsx b/client-cra-legacy/src/components/buttons/BmBtn.jsx index 7bbf585..5090f18 100644 --- a/client-cra-legacy/src/components/buttons/BmBtn.jsx +++ b/client-cra-legacy/src/components/buttons/BmBtn.jsx @@ -3,10 +3,10 @@ import styled from 'styled-components' import { useSelector, useDispatch } from 'react-redux' import api from 'src/util/api' import log from 'src/util/log' -import { ReactComponent as BmUnfilledRaw } from 'src/assets/svgs/bookmark.svg' -import { ReactComponent as BmFilledRaw } from 'src/assets/svgs/bookmark-filled.svg' -import { ReactComponent as UnfilledBmIcon } from 'src/assets/svgs/bookmark.svg' -import { ReactComponent as FilledBmIcon } from 'src/assets/svgs/bookmark-filled.svg' +import BmUnfilledRaw from 'src/assets/svgs/bookmark.svg' +import BmFilledRaw from 'src/assets/svgs/bookmark-filled.svg' +import UnfilledBmIcon from 'src/assets/svgs/bookmark.svg' +import FilledBmIcon from 'src/assets/svgs/bookmark-filled.svg' import ClickableIcon from '../displays/ClickableIcon' import useIsDesktop from 'src/util/hooks/useIsDesktop' diff --git a/client-cra-legacy/src/components/buttons/CircleCross.jsx b/client-cra-legacy/src/components/buttons/CircleCross.jsx index db55f6d..4a026f7 100644 --- a/client-cra-legacy/src/components/buttons/CircleCross.jsx +++ b/client-cra-legacy/src/components/buttons/CircleCross.jsx @@ -1,39 +1,39 @@ -import React from 'react'; -import styled from 'styled-components'; -import { ReactComponent as CrossRaw } from 'src/assets/svgs/close.svg'; +import React from 'react' +import styled from 'styled-components' +import CrossRaw from 'src/assets/svgs/close.svg' const Container = styled.div` background: white; - border: 1px solid rgba(0, 0, 0, .2); + border: 1px solid rgba(0, 0, 0, 0.2); border-radius: 50%; - box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); cursor: pointer; - + width: 24px; height: 24px; - + display: flex; justify-content: center; align-items: center; - + flex-grow: 0; flex-shrink: 0; -`; +` const Cross = styled(CrossRaw)` height: 10px; width: 10px; - opacity: .6; - + opacity: 0.6; + &:hover { - opacity: .9; + opacity: 0.9; } -`; +` const CircleCross = (props) => ( -); +) -export default CircleCross; +export default CircleCross diff --git a/client-cra-legacy/src/components/cards/ListingCard/index.jsx b/client-cra-legacy/src/components/cards/ListingCard/index.jsx index 3fa4dab..a313afd 100644 --- a/client-cra-legacy/src/components/cards/ListingCard/index.jsx +++ b/client-cra-legacy/src/components/cards/ListingCard/index.jsx @@ -2,8 +2,8 @@ import FormControlLabel from '@material-ui/core/FormControlLabel' import Switch from '@material-ui/core/Switch' import React, { useEffect, useState } from 'react' import { Link } from 'react-router-dom' -import { ReactComponent as BinRaw } from 'src/assets/svgs/bin.svg' -import { ReactComponent as PencilRaw } from 'src/assets/svgs/pencil.svg' +import BinRaw from 'src/assets/svgs/bin.svg' +import PencilRaw from 'src/assets/svgs/pencil.svg' import BmBtn from 'src/components/buttons/BmBtn' import Btn from 'src/components/buttons/Btn' import TextBtn from 'src/components/buttons/TextBtn' diff --git a/client-cra-legacy/src/components/core/ScrollToTop.jsx b/client-cra-legacy/src/components/core/ScrollToTop.jsx index 1ccf9ca..07798ab 100644 --- a/client-cra-legacy/src/components/core/ScrollToTop.jsx +++ b/client-cra-legacy/src/components/core/ScrollToTop.jsx @@ -1,13 +1,13 @@ -import { useEffect, useState } from 'react'; -import { ReactComponent as UpRaw } from 'src/assets/svgs/up.svg'; -import useIsDesktop from 'src/util/hooks/useIsDesktop'; -import useRouter from 'src/util/hooks/useRouter'; -import styled from 'styled-components'; +import { useEffect, useState } from 'react' +import UpRaw from 'src/assets/svgs/up.svg' +import useIsDesktop from 'src/util/hooks/useIsDesktop' +import useRouter from 'src/util/hooks/useRouter' +import styled from 'styled-components' export const Container = styled.div` border-radius: 50%; - background: ${props => props.theme.primary}; - box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + background: ${(props) => props.theme.primary}; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); position: fixed; bottom: 2rem; @@ -21,7 +21,7 @@ export const Container = styled.div` align-items: center; cursor: pointer; -`; +` const UpSVG = styled(UpRaw)` height: 1.2rem; @@ -31,30 +31,29 @@ const UpSVG = styled(UpRaw)` const ScrollToTop = () => { // scroll to top on route change - const router = useRouter(); + const router = useRouter() useEffect(() => { - window.scrollTo(0, 0); - }, [router.location]); + window.scrollTo(0, 0) + }, [router.location]) // for mobile, if not currently at top // render back to top button - const isDesktop = useIsDesktop(); - const [isAtTop, setIsAtTop] = useState(true); - window.onscroll = function() { - if(window.pageYOffset === 0) { - setIsAtTop(true); - } - else { - setIsAtTop(false); + const isDesktop = useIsDesktop() + const [isAtTop, setIsAtTop] = useState(true) + window.onscroll = function () { + if (window.pageYOffset === 0) { + setIsAtTop(true) + } else { + setIsAtTop(false) } - }; + } const handleClick = () => { window.scrollTo({ top: 0, left: 0, - behavior: 'smooth' - }); + behavior: 'smooth', + }) } return null @@ -66,6 +65,6 @@ const ScrollToTop = () => { // //
// ); -}; +} -export default ScrollToTop; +export default ScrollToTop diff --git a/client-cra-legacy/src/components/displays/Avatar.jsx b/client-cra-legacy/src/components/displays/Avatar.jsx index 3870d4b..238f533 100644 --- a/client-cra-legacy/src/components/displays/Avatar.jsx +++ b/client-cra-legacy/src/components/displays/Avatar.jsx @@ -2,7 +2,7 @@ import React from 'react' import styled from 'styled-components' import { Link } from 'react-router-dom' import { default as MaterialAvatar } from '@material-ui/core/Avatar' -import { ReactComponent as AvatarIconRaw } from 'src/assets/svgs/avatar.svg' +import AvatarIconRaw from 'src/assets/svgs/avatar.svg' const Avatar = ({ src, path, lg, sm, border, isLinked = true, ...rest }) => (
diff --git a/client-cra-legacy/src/components/displays/InfoBox.jsx b/client-cra-legacy/src/components/displays/InfoBox.jsx index 85f28f6..7842e0d 100644 --- a/client-cra-legacy/src/components/displays/InfoBox.jsx +++ b/client-cra-legacy/src/components/displays/InfoBox.jsx @@ -1,7 +1,7 @@ import React from 'react' -import { ReactComponent as WarningSVGRaw } from 'src/assets/svgs/warning.svg' +import WarningSVGRaw from 'src/assets/svgs/warning.svg' import styled from 'styled-components' -import Space from '../layouts/Space'; +import Space from '../layouts/Space' const Container = styled.div` display: flex; @@ -13,8 +13,8 @@ const Container = styled.div` ` const WarningSVG = styled(WarningSVGRaw)` - fill: ${props => props.theme.warning}; -`; + fill: ${(props) => props.theme.warning}; +` const InfoBox = ({ variant, children }) => { return ( diff --git a/client-cra-legacy/src/components/displays/Logo.jsx b/client-cra-legacy/src/components/displays/Logo.jsx index 4f8ae42..1a4086c 100644 --- a/client-cra-legacy/src/components/displays/Logo.jsx +++ b/client-cra-legacy/src/components/displays/Logo.jsx @@ -1,6 +1,6 @@ import React from 'react' import styled from 'styled-components' -import { ReactComponent as LogoRaw } from 'src/assets/svgs/logo.svg' +import LogoRaw from 'src/assets/svgs/logo.svg' const LogoSVG = styled(LogoRaw)` height: 3rem; diff --git a/client-cra-legacy/src/components/displays/Metadata.jsx b/client-cra-legacy/src/components/displays/Metadata.jsx index a041b58..ec1c31d 100644 --- a/client-cra-legacy/src/components/displays/Metadata.jsx +++ b/client-cra-legacy/src/components/displays/Metadata.jsx @@ -1,42 +1,42 @@ -import React from 'react'; -import styled from 'styled-components'; -import { ReactComponent as Eye } from 'src/assets/svgs/eye.svg'; +import React from 'react' +import styled from 'styled-components' +import Eye from 'src/assets/svgs/eye.svg' const Container = styled.div` display: flex; - opacity: .7; - font-size: .8rem; + opacity: 0.7; + font-size: 0.8rem; align-items: center; -`; +` const Wrapper = styled.div` - padding: 0 .4rem 0 0; + padding: 0 0.4rem 0 0; display: flex; align-items: center; -`; +` const SEye = styled(Eye)` - width: .8rem; - height: .8rem; - margin-right: .1rem; - opacity: .6; -`; + width: 0.8rem; + height: 0.8rem; + margin-right: 0.1rem; + opacity: 0.6; +` const Metadata = ({ date, pv }) => { - const formattedDate = date ? date.split('T')[0] : ''; + const formattedDate = date ? date.split('T')[0] : '' return (

{formattedDate}

{pv && ( - - -

{pv}

-
+ + +

{pv}

+
)}
- ); -}; + ) +} -export default Metadata; +export default Metadata diff --git a/client-cra-legacy/src/components/filters/DateFilter.jsx b/client-cra-legacy/src/components/filters/DateFilter.jsx index 9a9d0c7..57363fe 100644 --- a/client-cra-legacy/src/components/filters/DateFilter.jsx +++ b/client-cra-legacy/src/components/filters/DateFilter.jsx @@ -1,19 +1,19 @@ -import React, { useState, useEffect, useRef } from 'react'; -import styled from 'styled-components'; -import DatePicker from 'react-datepicker'; -import 'react-datepicker/dist/react-datepicker.css'; -import useRouter from 'src/util/hooks/useRouter'; -import formatDate from 'src/util/helpers/formatDate'; -import { ReactComponent as CalendarRaw } from 'src/assets/svgs/calendar.svg'; +import React, { useState, useEffect, useRef } from 'react' +import styled from 'styled-components' +import DatePicker from 'react-datepicker' +import 'react-datepicker/dist/react-datepicker.css' +import useRouter from 'src/util/hooks/useRouter' +import formatDate from 'src/util/helpers/formatDate' +import CalendarRaw from 'src/assets/svgs/calendar.svg' const Container = styled.div` position: relative; -`; +` const StyledPicker = styled(DatePicker)` /* padding: .4rem 1.5rem .4rem .4rem; */ - padding: .5rem 0; - font-size: .8rem; + padding: 0.5rem 0; + font-size: 0.8rem; font-weight: 500; background-color: white; @@ -22,47 +22,46 @@ const StyledPicker = styled(DatePicker)` border-radius: 3px; text-align: center; cursor: pointer; - + width: 110px; background-color: inherit; - color: ${props => props.theme.text}; - border: 2px solid ${props => props.theme.border.dark}; -`; + color: ${(props) => props.theme.text}; + border: 2px solid ${(props) => props.theme.border.dark}; +` const CalendarSVG = styled(CalendarRaw)` height: 1.6rem; width: 1.6rem; position: absolute; - right: .5rem; + right: 0.5rem; top: 0; bottom: 0; margin: auto; - fill: ${props => props.theme.border.dark}; -`; + fill: ${(props) => props.theme.border.dark}; +` const DateFilter = ({ name }) => { - const router = useRouter(); - const [date, setDate] = useState(); + const router = useRouter() + const [date, setDate] = useState() useEffect(() => { if (router.query[name]) { - const newDate = new Date(router.query[name].replace(/-/g, '/')); - setDate(newDate); - } - else { - setDate(null); + const newDate = new Date(router.query[name].replace(/-/g, '/')) + setDate(newDate) + } else { + setDate(null) } - }, [router.query[name]]); + }, [router.query[name]]) useEffect(() => { - if (!date) return; + if (!date) return - const newQuery = {}; - newQuery[name] = formatDate(date); - router.updateQuery(newQuery); - }, [date]); + const newQuery = {} + newQuery[name] = formatDate(date) + router.updateQuery(newQuery) + }, [date]) - const handleDateChangeRaw = (e) => e.preventDefault(); + const handleDateChangeRaw = (e) => e.preventDefault() return ( @@ -73,7 +72,7 @@ const DateFilter = ({ name }) => { /> {/* */} - ); -}; + ) +} -export default DateFilter; +export default DateFilter diff --git a/client-cra-legacy/src/components/fonts/ListingInfo.jsx b/client-cra-legacy/src/components/fonts/ListingInfo.jsx index b244dbc..8e7dc11 100644 --- a/client-cra-legacy/src/components/fonts/ListingInfo.jsx +++ b/client-cra-legacy/src/components/fonts/ListingInfo.jsx @@ -1,5 +1,5 @@ import React from 'react' -import { ReactComponent as CloseRaw } from 'src/assets/svgs/close-material.svg' +import CloseRaw from 'src/assets/svgs/close-material.svg' import theme from 'src/theme' import formatListingDesc from 'src/util/helpers/formatListingDesc' import getDateString from 'src/util/helpers/getDateString' diff --git a/client-cra-legacy/src/components/headers/BackHeader/index.jsx b/client-cra-legacy/src/components/headers/BackHeader/index.jsx index 16944cf..51daea6 100644 --- a/client-cra-legacy/src/components/headers/BackHeader/index.jsx +++ b/client-cra-legacy/src/components/headers/BackHeader/index.jsx @@ -1,6 +1,6 @@ import React from 'react' import styled from 'styled-components' -import { ReactComponent as LeftArrowRaw } from 'src/assets/svgs/left-arrow.svg' +import LeftArrowRaw from 'src/assets/svgs/left-arrow.svg' import { useHistory } from 'react-router-dom' import Body from 'src/components/fonts/Body' import Space from 'src/components/layouts/Space' diff --git a/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/index.jsx b/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/index.jsx index c5c4dda..82e1393 100644 --- a/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/index.jsx +++ b/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/index.jsx @@ -1,6 +1,6 @@ import React, { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { ReactComponent as BMIconRaw } from 'src/assets/svgs/bookmark.svg' +import BMIconRaw from 'src/assets/svgs/bookmark.svg' import ClickableIcon from 'src/components/displays/ClickableIcon' import CornerRedDot from 'src/components/displays/CornerRedDot' import api from 'src/util/api' diff --git a/client-cra-legacy/src/components/headers/MainHeader/Chat/index.jsx b/client-cra-legacy/src/components/headers/MainHeader/Chat/index.jsx index 7be59fa..fdd6ed3 100644 --- a/client-cra-legacy/src/components/headers/MainHeader/Chat/index.jsx +++ b/client-cra-legacy/src/components/headers/MainHeader/Chat/index.jsx @@ -1,7 +1,7 @@ import React from 'react' import styled from 'styled-components' import { useSelector } from 'react-redux' -import { ReactComponent as ChatIcon } from 'src/assets/svgs/mail.svg' +import ChatIcon from 'src/assets/svgs/mail.svg' import CornerRedDot from 'src/components/displays/CornerRedDot' import { Link } from 'react-router-dom' import Body from 'src/components/fonts/Body' diff --git a/client-cra-legacy/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx b/client-cra-legacy/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx index 44c7011..11871c0 100644 --- a/client-cra-legacy/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx +++ b/client-cra-legacy/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx @@ -6,7 +6,7 @@ import signin from 'src/util/helpers/signin' import { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock' import useUnreadChatrooms from 'src/util/hooks/useUnreadChatrooms' import NotifCounter from 'src/components/displays/NotifCounter' -import { ReactComponent as CloseRaw } from 'src/assets/svgs/close.svg' +import CloseRaw from 'src/assets/svgs/close.svg' const Container = styled.div` position: fixed; diff --git a/client-cra-legacy/src/components/headers/MainHeader/MobileNav/index.jsx b/client-cra-legacy/src/components/headers/MainHeader/MobileNav/index.jsx index 1844fc3..a49e77e 100644 --- a/client-cra-legacy/src/components/headers/MainHeader/MobileNav/index.jsx +++ b/client-cra-legacy/src/components/headers/MainHeader/MobileNav/index.jsx @@ -4,7 +4,7 @@ import Space from 'src/components/layouts/Space' import styled from 'styled-components' import Bookmarks from '../Bookmarks' import FullscreenNav from './FullscreenNav' -import { ReactComponent as BurgerIcon } from 'src/assets/svgs/burger.svg' +import BurgerIcon from 'src/assets/svgs/burger.svg' export const Wrapper = styled.div` display: flex; diff --git a/client-cra-legacy/src/components/headers/MainHeader/index.jsx b/client-cra-legacy/src/components/headers/MainHeader/index.jsx index 80a61b8..ad16afb 100644 --- a/client-cra-legacy/src/components/headers/MainHeader/index.jsx +++ b/client-cra-legacy/src/components/headers/MainHeader/index.jsx @@ -8,7 +8,7 @@ import useIsDesktop from 'src/util/hooks/useIsDesktop' import Bookmarks from './Bookmarks' import Chat from './Chat' import MobileNav from './MobileNav' -import { ReactComponent as PlusIcon } from 'src/assets/svgs/plus.svg' +import PlusIcon from 'src/assets/svgs/plus.svg' import ClickableIcon from 'src/components/displays/ClickableIcon' const MainHeader = () => { diff --git a/client-cra-legacy/src/components/views/Modal/index.jsx b/client-cra-legacy/src/components/views/Modal/index.jsx index fbaa55f..6b6a6bc 100644 --- a/client-cra-legacy/src/components/views/Modal/index.jsx +++ b/client-cra-legacy/src/components/views/Modal/index.jsx @@ -4,7 +4,7 @@ import MaterialModal from '@material-ui/core/Modal' import Backdrop from '@material-ui/core/Backdrop' import Fade from '@material-ui/core/Fade' import styled from 'styled-components' -import { ReactComponent as CloseRaw } from 'src/assets/svgs/close.svg' +import CloseRaw from 'src/assets/svgs/close.svg' import Heading from 'src/components/fonts/Heading' const useStyles = makeStyles(() => ({ diff --git a/client-cra-legacy/src/constants/amenities.jsx b/client-cra-legacy/src/constants/amenities.jsx index d784b37..b029c03 100644 --- a/client-cra-legacy/src/constants/amenities.jsx +++ b/client-cra-legacy/src/constants/amenities.jsx @@ -1,12 +1,12 @@ -import React from 'react'; -import { ReactComponent as WifiSVG } from 'src/assets/svgs/wifi.svg'; -import { ReactComponent as CarSVG } from 'src/assets/svgs/car.svg'; -import { ReactComponent as GymSVG } from 'src/assets/svgs/gym.svg'; -import { ReactComponent as HeaterSVG } from 'src/assets/svgs/heater.svg'; -import { ReactComponent as AirconSVG } from 'src/assets/svgs/snowflake.svg'; -import { ReactComponent as SofaSVG } from 'src/assets/svgs/sofa.svg'; -import { ReactComponent as UtilitiesSVG } from 'src/assets/svgs/utilities.svg'; -import { ReactComponent as BusSVG } from 'src/assets/svgs/bus.svg'; +import React from 'react' +import WifiSVG from 'src/assets/svgs/wifi.svg' +import CarSVG from 'src/assets/svgs/car.svg' +import GymSVG from 'src/assets/svgs/gym.svg' +import HeaterSVG from 'src/assets/svgs/heater.svg' +import AirconSVG from 'src/assets/svgs/snowflake.svg' +import SofaSVG from 'src/assets/svgs/sofa.svg' +import UtilitiesSVG from 'src/assets/svgs/utilities.svg' +import BusSVG from 'src/assets/svgs/bus.svg' const amenities = [ { @@ -49,6 +49,6 @@ const amenities = [ label: 'TCAT Accessible', value: 'tcat', }, -]; +] -export default amenities; +export default amenities diff --git a/client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterStatus.jsx b/client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterStatus.jsx index b8e2cb4..073302b 100644 --- a/client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterStatus.jsx +++ b/client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterStatus.jsx @@ -1,5 +1,5 @@ import React from 'react' -import { ReactComponent as CloseRaw } from 'src/assets/svgs/close.svg' +import CloseRaw from 'src/assets/svgs/close.svg' import InvertedBtn from 'src/components/buttons/InvertedBtn' import IconContainer from 'src/components/displays/IconContainer' import Space from 'src/components/layouts/Space' diff --git a/client-cra-legacy/src/pages/home/SearchOptions/Filters/index.jsx b/client-cra-legacy/src/pages/home/SearchOptions/Filters/index.jsx index ae4fe2b..c538589 100644 --- a/client-cra-legacy/src/pages/home/SearchOptions/Filters/index.jsx +++ b/client-cra-legacy/src/pages/home/SearchOptions/Filters/index.jsx @@ -1,5 +1,5 @@ import React, { useState } from 'react' -import { ReactComponent as FilterRaw } from 'src/assets/svgs/filter.svg' +import FilterRaw from 'src/assets/svgs/filter.svg' import Dropdown from 'src/components/views/Dropdown' import useFilters from 'src/util/hooks/useFilters' import styled from 'styled-components' diff --git a/client-cra-legacy/src/pages/listing/Listing/IconsSection.jsx b/client-cra-legacy/src/pages/listing/Listing/IconsSection.jsx index 6bd8ccb..b234cbb 100644 --- a/client-cra-legacy/src/pages/listing/Listing/IconsSection.jsx +++ b/client-cra-legacy/src/pages/listing/Listing/IconsSection.jsx @@ -1,8 +1,8 @@ import React from 'react' -import { ReactComponent as ShowerSVG } from 'src/assets/svgs/shower-outlined.svg' -import { ReactComponent as BedSVG } from 'src/assets/svgs/bed-outlined.svg' -import { ReactComponent as CalendarSVG } from 'src/assets/svgs/calendar.svg' -import { ReactComponent as PersonSVG } from 'src/assets/svgs/person.svg' +import ShowerSVG from 'src/assets/svgs/shower-outlined.svg' +import BedSVG from 'src/assets/svgs/bed-outlined.svg' +import CalendarSVG from 'src/assets/svgs/calendar.svg' +import PersonSVG from 'src/assets/svgs/person.svg' import Body from 'src/components/fonts/Body' import { FlexRow } from 'src/components/layouts/Flex' import getDateString from 'src/util/helpers/getDateString' diff --git a/client-cra-legacy/src/pages/listing/Listing/RightSidePanel.jsx b/client-cra-legacy/src/pages/listing/Listing/RightSidePanel.jsx index 4c2d473..be4a7b2 100644 --- a/client-cra-legacy/src/pages/listing/Listing/RightSidePanel.jsx +++ b/client-cra-legacy/src/pages/listing/Listing/RightSidePanel.jsx @@ -1,62 +1,66 @@ -import React from 'react'; -import { ReactComponent as LockRaw } from 'src/assets/svgs/lock.svg'; -import Btn from 'src/components/buttons/Btn'; -import Badge from 'src/components/displays/Badge'; -import DetailedAvatar from 'src/components/displays/DetailedAvatar'; -import Searchers from 'src/components/displays/Searchers'; -import Body from 'src/components/fonts/Body'; -import Subheading from 'src/components/fonts/Subheading'; -import { FlexColumn } from 'src/components/layouts/Flex'; -import { FlexRow } from 'src/components/layouts/Flex'; -import Space from 'src/components/layouts/Space'; -import theme from 'src/theme'; -import styled from 'styled-components'; +import React from 'react' +import LockRaw from 'src/assets/svgs/lock.svg' +import Btn from 'src/components/buttons/Btn' +import Badge from 'src/components/displays/Badge' +import DetailedAvatar from 'src/components/displays/DetailedAvatar' +import Searchers from 'src/components/displays/Searchers' +import Body from 'src/components/fonts/Body' +import Subheading from 'src/components/fonts/Subheading' +import { FlexColumn } from 'src/components/layouts/Flex' +import { FlexRow } from 'src/components/layouts/Flex' +import Space from 'src/components/layouts/Space' +import theme from 'src/theme' +import styled from 'styled-components' const Container = styled.div` position: sticky; top: 20px; border-radius: 16px; - border: 2px solid ${props => props.theme.border.default}; - box-shadow: 0 2px 4px rgba(0, 0, 0, .05); + border: 2px solid ${(props) => props.theme.border.default}; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); & > div { - border-bottom: 2px solid ${props => props.theme.border.default}; + border-bottom: 2px solid ${(props) => props.theme.border.default}; } & > div:last-child { border-bottom: none; } -`; +` const Section = styled.div` padding: 1rem; -`; +` const LockSVG = styled(LockRaw)` height: 1rem; - opacity: .6; -`; + opacity: 0.6; +` const LockAvatar = styled.div` height: 40px; width: 40px; - background: rgba(0, 0, 0, .1); - box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + background: rgba(0, 0, 0, 0.1); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); border-radius: 50%; - padding: .5rem; + padding: 0.5rem; margin-right: 1rem; display: flex; justify-content: center; align-items: center; -`; +` const SoldComponent = () => ( - Message host + + Message host + - This listing has been marked as sold - + + This listing has been marked as sold + + ) const RestrictedComponent = () => ( @@ -71,17 +75,21 @@ const RestrictedComponent = () => ( - Message host + + Message host + - Sign in with a @cornell.edu account to contact the owner + + Sign in with a @cornell.edu account to contact the owner + - +
) const RightSidePanel = ({ listing, handleMsgBtnClick, signedInUser, searchers }) => { - const { price, displayName, user, cornellOnly, sold } = listing || {}; + const { price, displayName, user, cornellOnly, sold } = listing || {} return ( @@ -93,25 +101,27 @@ const RightSidePanel = ({ listing, handleMsgBtnClick, signedInUser, searchers })
- {sold - ? - : ( - <> - {(!cornellOnly || (cornellOnly && signedInUser && signedInUser.email.split('@')[1] === 'cornell.edu')) - ? ( -
- - - Message host -
- ) : - } - - ) - } + {sold ? ( + + ) : ( + <> + {!cornellOnly || + (cornellOnly && signedInUser && signedInUser.email.split('@')[1] === 'cornell.edu') ? ( +
+ + + + Message host + +
+ ) : ( + + )} + + )}
diff --git a/client-cra-legacy/src/pages/listing/Listing/index.jsx b/client-cra-legacy/src/pages/listing/Listing/index.jsx index 188850b..d62020a 100644 --- a/client-cra-legacy/src/pages/listing/Listing/index.jsx +++ b/client-cra-legacy/src/pages/listing/Listing/index.jsx @@ -1,7 +1,7 @@ import React, { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { ReactComponent as CalendarRaw } from 'src/assets/svgs/calendar.svg' -import { ReactComponent as LockRaw } from 'src/assets/svgs/lock.svg' +import CalendarRaw from 'src/assets/svgs/calendar.svg' +import LockRaw from 'src/assets/svgs/lock.svg' import BmBtn from 'src/components/buttons/BmBtn' import Btn from 'src/components/buttons/Btn' import DetailedAvatar from 'src/components/displays/DetailedAvatar' diff --git a/client-cra-legacy/src/pages/profile/MyBookmarks/index.jsx b/client-cra-legacy/src/pages/profile/MyBookmarks/index.jsx index a4f7e7f..4cb00bc 100644 --- a/client-cra-legacy/src/pages/profile/MyBookmarks/index.jsx +++ b/client-cra-legacy/src/pages/profile/MyBookmarks/index.jsx @@ -1,6 +1,6 @@ import React from 'react' import { useSelector } from 'react-redux' -import { ReactComponent as NoBookmarksSVGRaw } from 'src/assets/illustrations/no-bookmarks.svg' +import NoBookmarksSVGRaw from 'src/assets/illustrations/no-bookmarks.svg' import ListingCardV2 from 'src/components/cards/ListingCardV2' import Heading from 'src/components/fonts/Heading' import Text from 'src/components/fonts/Text' diff --git a/client-cra-legacy/src/pages/profile/MyChats/ChatroomList/index.jsx b/client-cra-legacy/src/pages/profile/MyChats/ChatroomList/index.jsx index bdeb6c3..1e94ccc 100644 --- a/client-cra-legacy/src/pages/profile/MyChats/ChatroomList/index.jsx +++ b/client-cra-legacy/src/pages/profile/MyChats/ChatroomList/index.jsx @@ -7,7 +7,7 @@ import Space from 'src/components/layouts/Space' import theme from 'src/theme/colors' import styled from 'styled-components' import ListElt from './ListElt' -import { ReactComponent as NoChatroomsSVGRaw } from 'src/assets/illustrations/no-chatrooms.svg' +import NoChatroomsSVGRaw from 'src/assets/illustrations/no-chatrooms.svg' import api from 'src/util/api' import log from 'src/util/log' diff --git a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/Header.jsx b/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/Header.jsx index 028f0e5..39f0d71 100644 --- a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/Header.jsx +++ b/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/Header.jsx @@ -1,7 +1,7 @@ import React from 'react' import styled from 'styled-components' -import { ReactComponent as LeftRaw } from 'src/assets/svgs/left.svg' -import { ReactComponent as HouseRaw } from 'src/assets/svgs/house.svg' +import LeftRaw from 'src/assets/svgs/left.svg' +import HouseRaw from 'src/assets/svgs/house.svg' import { Avatar } from '@material-ui/core' import useChatOtherUser from 'src/util/hooks/useChatOtherUser' import Body from 'src/components/fonts/Body' diff --git a/client-cra-legacy/src/pages/profile/MyListings/MyListingsList.jsx b/client-cra-legacy/src/pages/profile/MyListings/MyListingsList.jsx index e8ee111..64e44cf 100644 --- a/client-cra-legacy/src/pages/profile/MyListings/MyListingsList.jsx +++ b/client-cra-legacy/src/pages/profile/MyListings/MyListingsList.jsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react' -import { ReactComponent as NoListingSVGRaw } from 'src/assets/illustrations/no-listings.svg' +import NoListingSVGRaw from 'src/assets/illustrations/no-listings.svg' import PaginationBtns from 'src/components/buttons/PaginationBtns' import ListingCardV2 from 'src/components/cards/ListingCardV2' import ListingHostCard from 'src/components/cards/ListingHostCard' diff --git a/client-cra-legacy/src/pages/profile/MyListings/index.jsx b/client-cra-legacy/src/pages/profile/MyListings/index.jsx index decbece..f626d26 100644 --- a/client-cra-legacy/src/pages/profile/MyListings/index.jsx +++ b/client-cra-legacy/src/pages/profile/MyListings/index.jsx @@ -11,7 +11,7 @@ import Btn from 'src/components/buttons/Btn' import Space from 'src/components/layouts/Space' import useIsDesktop from 'src/util/hooks/useIsDesktop' import { Link } from 'react-router-dom' -import { ReactComponent as PlusIcon } from 'src/assets/svgs/plus.svg' +import PlusIcon from 'src/assets/svgs/plus.svg' const MyListings = () => { const user = useSelector((state) => state.user) diff --git a/client/src/components/buttons/Auth.jsx b/client/src/components/buttons/Auth.jsx index b7658d5..d9e5eba 100644 --- a/client/src/components/buttons/Auth.jsx +++ b/client/src/components/buttons/Auth.jsx @@ -1,6 +1,6 @@ import React from 'react'; import styled from 'styled-components'; -import { ReactComponent as Google } from 'src/assets/svgs/google.svg'; +import Google from 'src/assets/svgs/google.svg'; import Avatar from 'src/components/displays/Avatar'; import { useDispatch, useSelector } from 'react-redux'; import Loading from 'src/components/displays/Loading'; diff --git a/client/src/components/buttons/BmBtn.jsx b/client/src/components/buttons/BmBtn.jsx index 7bbf585..5090f18 100644 --- a/client/src/components/buttons/BmBtn.jsx +++ b/client/src/components/buttons/BmBtn.jsx @@ -3,10 +3,10 @@ import styled from 'styled-components' import { useSelector, useDispatch } from 'react-redux' import api from 'src/util/api' import log from 'src/util/log' -import { ReactComponent as BmUnfilledRaw } from 'src/assets/svgs/bookmark.svg' -import { ReactComponent as BmFilledRaw } from 'src/assets/svgs/bookmark-filled.svg' -import { ReactComponent as UnfilledBmIcon } from 'src/assets/svgs/bookmark.svg' -import { ReactComponent as FilledBmIcon } from 'src/assets/svgs/bookmark-filled.svg' +import BmUnfilledRaw from 'src/assets/svgs/bookmark.svg' +import BmFilledRaw from 'src/assets/svgs/bookmark-filled.svg' +import UnfilledBmIcon from 'src/assets/svgs/bookmark.svg' +import FilledBmIcon from 'src/assets/svgs/bookmark-filled.svg' import ClickableIcon from '../displays/ClickableIcon' import useIsDesktop from 'src/util/hooks/useIsDesktop' diff --git a/client/src/components/buttons/CircleCross.jsx b/client/src/components/buttons/CircleCross.jsx index db55f6d..abd31c6 100644 --- a/client/src/components/buttons/CircleCross.jsx +++ b/client/src/components/buttons/CircleCross.jsx @@ -1,6 +1,6 @@ import React from 'react'; import styled from 'styled-components'; -import { ReactComponent as CrossRaw } from 'src/assets/svgs/close.svg'; +import CrossRaw from 'src/assets/svgs/close.svg'; const Container = styled.div` background: white; @@ -8,14 +8,14 @@ const Container = styled.div` border-radius: 50%; box-shadow: 0 2px 4px rgba(0, 0, 0, .2); cursor: pointer; - + width: 24px; height: 24px; - + display: flex; justify-content: center; align-items: center; - + flex-grow: 0; flex-shrink: 0; `; @@ -24,7 +24,7 @@ const Cross = styled(CrossRaw)` height: 10px; width: 10px; opacity: .6; - + &:hover { opacity: .9; } diff --git a/client/src/components/cards/ListingCard/index.jsx b/client/src/components/cards/ListingCard/index.jsx index 3fa4dab..a313afd 100644 --- a/client/src/components/cards/ListingCard/index.jsx +++ b/client/src/components/cards/ListingCard/index.jsx @@ -2,8 +2,8 @@ import FormControlLabel from '@material-ui/core/FormControlLabel' import Switch from '@material-ui/core/Switch' import React, { useEffect, useState } from 'react' import { Link } from 'react-router-dom' -import { ReactComponent as BinRaw } from 'src/assets/svgs/bin.svg' -import { ReactComponent as PencilRaw } from 'src/assets/svgs/pencil.svg' +import BinRaw from 'src/assets/svgs/bin.svg' +import PencilRaw from 'src/assets/svgs/pencil.svg' import BmBtn from 'src/components/buttons/BmBtn' import Btn from 'src/components/buttons/Btn' import TextBtn from 'src/components/buttons/TextBtn' diff --git a/client/src/components/core/ScrollToTop.jsx b/client/src/components/core/ScrollToTop.jsx index 1ccf9ca..b837b0b 100644 --- a/client/src/components/core/ScrollToTop.jsx +++ b/client/src/components/core/ScrollToTop.jsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { ReactComponent as UpRaw } from 'src/assets/svgs/up.svg'; +import UpRaw from 'src/assets/svgs/up.svg'; import useIsDesktop from 'src/util/hooks/useIsDesktop'; import useRouter from 'src/util/hooks/useRouter'; import styled from 'styled-components'; diff --git a/client/src/components/displays/Avatar.jsx b/client/src/components/displays/Avatar.jsx index 3870d4b..238f533 100644 --- a/client/src/components/displays/Avatar.jsx +++ b/client/src/components/displays/Avatar.jsx @@ -2,7 +2,7 @@ import React from 'react' import styled from 'styled-components' import { Link } from 'react-router-dom' import { default as MaterialAvatar } from '@material-ui/core/Avatar' -import { ReactComponent as AvatarIconRaw } from 'src/assets/svgs/avatar.svg' +import AvatarIconRaw from 'src/assets/svgs/avatar.svg' const Avatar = ({ src, path, lg, sm, border, isLinked = true, ...rest }) => (
diff --git a/client/src/components/displays/InfoBox.jsx b/client/src/components/displays/InfoBox.jsx index 85f28f6..e752ee1 100644 --- a/client/src/components/displays/InfoBox.jsx +++ b/client/src/components/displays/InfoBox.jsx @@ -1,5 +1,5 @@ import React from 'react' -import { ReactComponent as WarningSVGRaw } from 'src/assets/svgs/warning.svg' +import WarningSVGRaw from 'src/assets/svgs/warning.svg' import styled from 'styled-components' import Space from '../layouts/Space'; diff --git a/client/src/components/displays/Logo.jsx b/client/src/components/displays/Logo.jsx index 4f8ae42..1a4086c 100644 --- a/client/src/components/displays/Logo.jsx +++ b/client/src/components/displays/Logo.jsx @@ -1,6 +1,6 @@ import React from 'react' import styled from 'styled-components' -import { ReactComponent as LogoRaw } from 'src/assets/svgs/logo.svg' +import LogoRaw from 'src/assets/svgs/logo.svg' const LogoSVG = styled(LogoRaw)` height: 3rem; diff --git a/client/src/components/displays/Metadata.jsx b/client/src/components/displays/Metadata.jsx index a041b58..224c4f1 100644 --- a/client/src/components/displays/Metadata.jsx +++ b/client/src/components/displays/Metadata.jsx @@ -1,6 +1,6 @@ import React from 'react'; import styled from 'styled-components'; -import { ReactComponent as Eye } from 'src/assets/svgs/eye.svg'; +import Eye from 'src/assets/svgs/eye.svg'; const Container = styled.div` display: flex; diff --git a/client/src/components/filters/DateFilter.jsx b/client/src/components/filters/DateFilter.jsx index 9a9d0c7..6a4c45b 100644 --- a/client/src/components/filters/DateFilter.jsx +++ b/client/src/components/filters/DateFilter.jsx @@ -4,7 +4,7 @@ import DatePicker from 'react-datepicker'; import 'react-datepicker/dist/react-datepicker.css'; import useRouter from 'src/util/hooks/useRouter'; import formatDate from 'src/util/helpers/formatDate'; -import { ReactComponent as CalendarRaw } from 'src/assets/svgs/calendar.svg'; +import CalendarRaw from 'src/assets/svgs/calendar.svg'; const Container = styled.div` position: relative; @@ -22,7 +22,7 @@ const StyledPicker = styled(DatePicker)` border-radius: 3px; text-align: center; cursor: pointer; - + width: 110px; background-color: inherit; color: ${props => props.theme.text}; diff --git a/client/src/components/fonts/ListingInfo.jsx b/client/src/components/fonts/ListingInfo.jsx index b244dbc..8e7dc11 100644 --- a/client/src/components/fonts/ListingInfo.jsx +++ b/client/src/components/fonts/ListingInfo.jsx @@ -1,5 +1,5 @@ import React from 'react' -import { ReactComponent as CloseRaw } from 'src/assets/svgs/close-material.svg' +import CloseRaw from 'src/assets/svgs/close-material.svg' import theme from 'src/theme' import formatListingDesc from 'src/util/helpers/formatListingDesc' import getDateString from 'src/util/helpers/getDateString' diff --git a/client/src/components/headers/BackHeader/index.jsx b/client/src/components/headers/BackHeader/index.jsx index 16944cf..51daea6 100644 --- a/client/src/components/headers/BackHeader/index.jsx +++ b/client/src/components/headers/BackHeader/index.jsx @@ -1,6 +1,6 @@ import React from 'react' import styled from 'styled-components' -import { ReactComponent as LeftArrowRaw } from 'src/assets/svgs/left-arrow.svg' +import LeftArrowRaw from 'src/assets/svgs/left-arrow.svg' import { useHistory } from 'react-router-dom' import Body from 'src/components/fonts/Body' import Space from 'src/components/layouts/Space' diff --git a/client/src/components/headers/MainHeader/Bookmarks/index.jsx b/client/src/components/headers/MainHeader/Bookmarks/index.jsx index c5c4dda..82e1393 100644 --- a/client/src/components/headers/MainHeader/Bookmarks/index.jsx +++ b/client/src/components/headers/MainHeader/Bookmarks/index.jsx @@ -1,6 +1,6 @@ import React, { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { ReactComponent as BMIconRaw } from 'src/assets/svgs/bookmark.svg' +import BMIconRaw from 'src/assets/svgs/bookmark.svg' import ClickableIcon from 'src/components/displays/ClickableIcon' import CornerRedDot from 'src/components/displays/CornerRedDot' import api from 'src/util/api' diff --git a/client/src/components/headers/MainHeader/Chat/index.jsx b/client/src/components/headers/MainHeader/Chat/index.jsx index 7be59fa..fdd6ed3 100644 --- a/client/src/components/headers/MainHeader/Chat/index.jsx +++ b/client/src/components/headers/MainHeader/Chat/index.jsx @@ -1,7 +1,7 @@ import React from 'react' import styled from 'styled-components' import { useSelector } from 'react-redux' -import { ReactComponent as ChatIcon } from 'src/assets/svgs/mail.svg' +import ChatIcon from 'src/assets/svgs/mail.svg' import CornerRedDot from 'src/components/displays/CornerRedDot' import { Link } from 'react-router-dom' import Body from 'src/components/fonts/Body' diff --git a/client/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx b/client/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx index 44c7011..11871c0 100644 --- a/client/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx +++ b/client/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx @@ -6,7 +6,7 @@ import signin from 'src/util/helpers/signin' import { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock' import useUnreadChatrooms from 'src/util/hooks/useUnreadChatrooms' import NotifCounter from 'src/components/displays/NotifCounter' -import { ReactComponent as CloseRaw } from 'src/assets/svgs/close.svg' +import CloseRaw from 'src/assets/svgs/close.svg' const Container = styled.div` position: fixed; diff --git a/client/src/components/headers/MainHeader/MobileNav/index.jsx b/client/src/components/headers/MainHeader/MobileNav/index.jsx index 1844fc3..a49e77e 100644 --- a/client/src/components/headers/MainHeader/MobileNav/index.jsx +++ b/client/src/components/headers/MainHeader/MobileNav/index.jsx @@ -4,7 +4,7 @@ import Space from 'src/components/layouts/Space' import styled from 'styled-components' import Bookmarks from '../Bookmarks' import FullscreenNav from './FullscreenNav' -import { ReactComponent as BurgerIcon } from 'src/assets/svgs/burger.svg' +import BurgerIcon from 'src/assets/svgs/burger.svg' export const Wrapper = styled.div` display: flex; diff --git a/client/src/components/headers/MainHeader/index.jsx b/client/src/components/headers/MainHeader/index.jsx index 80a61b8..ad16afb 100644 --- a/client/src/components/headers/MainHeader/index.jsx +++ b/client/src/components/headers/MainHeader/index.jsx @@ -8,7 +8,7 @@ import useIsDesktop from 'src/util/hooks/useIsDesktop' import Bookmarks from './Bookmarks' import Chat from './Chat' import MobileNav from './MobileNav' -import { ReactComponent as PlusIcon } from 'src/assets/svgs/plus.svg' +import PlusIcon from 'src/assets/svgs/plus.svg' import ClickableIcon from 'src/components/displays/ClickableIcon' const MainHeader = () => { diff --git a/client/src/components/views/Modal/index.jsx b/client/src/components/views/Modal/index.jsx index fbaa55f..6b6a6bc 100644 --- a/client/src/components/views/Modal/index.jsx +++ b/client/src/components/views/Modal/index.jsx @@ -4,7 +4,7 @@ import MaterialModal from '@material-ui/core/Modal' import Backdrop from '@material-ui/core/Backdrop' import Fade from '@material-ui/core/Fade' import styled from 'styled-components' -import { ReactComponent as CloseRaw } from 'src/assets/svgs/close.svg' +import CloseRaw from 'src/assets/svgs/close.svg' import Heading from 'src/components/fonts/Heading' const useStyles = makeStyles(() => ({ diff --git a/client/src/constants/amenities.jsx b/client/src/constants/amenities.jsx index d784b37..8bc2988 100644 --- a/client/src/constants/amenities.jsx +++ b/client/src/constants/amenities.jsx @@ -1,12 +1,12 @@ import React from 'react'; -import { ReactComponent as WifiSVG } from 'src/assets/svgs/wifi.svg'; -import { ReactComponent as CarSVG } from 'src/assets/svgs/car.svg'; -import { ReactComponent as GymSVG } from 'src/assets/svgs/gym.svg'; -import { ReactComponent as HeaterSVG } from 'src/assets/svgs/heater.svg'; -import { ReactComponent as AirconSVG } from 'src/assets/svgs/snowflake.svg'; -import { ReactComponent as SofaSVG } from 'src/assets/svgs/sofa.svg'; -import { ReactComponent as UtilitiesSVG } from 'src/assets/svgs/utilities.svg'; -import { ReactComponent as BusSVG } from 'src/assets/svgs/bus.svg'; +import WifiSVG from 'src/assets/svgs/wifi.svg'; +import CarSVG from 'src/assets/svgs/car.svg'; +import GymSVG from 'src/assets/svgs/gym.svg'; +import HeaterSVG from 'src/assets/svgs/heater.svg'; +import AirconSVG from 'src/assets/svgs/snowflake.svg'; +import SofaSVG from 'src/assets/svgs/sofa.svg'; +import UtilitiesSVG from 'src/assets/svgs/utilities.svg'; +import BusSVG from 'src/assets/svgs/bus.svg'; const amenities = [ { diff --git a/client/src/pages/home/SearchOptions/Filters/FilterStatus.jsx b/client/src/pages/home/SearchOptions/Filters/FilterStatus.jsx index b8e2cb4..073302b 100644 --- a/client/src/pages/home/SearchOptions/Filters/FilterStatus.jsx +++ b/client/src/pages/home/SearchOptions/Filters/FilterStatus.jsx @@ -1,5 +1,5 @@ import React from 'react' -import { ReactComponent as CloseRaw } from 'src/assets/svgs/close.svg' +import CloseRaw from 'src/assets/svgs/close.svg' import InvertedBtn from 'src/components/buttons/InvertedBtn' import IconContainer from 'src/components/displays/IconContainer' import Space from 'src/components/layouts/Space' diff --git a/client/src/pages/home/SearchOptions/Filters/index.jsx b/client/src/pages/home/SearchOptions/Filters/index.jsx index ae4fe2b..c538589 100644 --- a/client/src/pages/home/SearchOptions/Filters/index.jsx +++ b/client/src/pages/home/SearchOptions/Filters/index.jsx @@ -1,5 +1,5 @@ import React, { useState } from 'react' -import { ReactComponent as FilterRaw } from 'src/assets/svgs/filter.svg' +import FilterRaw from 'src/assets/svgs/filter.svg' import Dropdown from 'src/components/views/Dropdown' import useFilters from 'src/util/hooks/useFilters' import styled from 'styled-components' diff --git a/client/src/pages/listing/Listing/IconsSection.jsx b/client/src/pages/listing/Listing/IconsSection.jsx index 6bd8ccb..b234cbb 100644 --- a/client/src/pages/listing/Listing/IconsSection.jsx +++ b/client/src/pages/listing/Listing/IconsSection.jsx @@ -1,8 +1,8 @@ import React from 'react' -import { ReactComponent as ShowerSVG } from 'src/assets/svgs/shower-outlined.svg' -import { ReactComponent as BedSVG } from 'src/assets/svgs/bed-outlined.svg' -import { ReactComponent as CalendarSVG } from 'src/assets/svgs/calendar.svg' -import { ReactComponent as PersonSVG } from 'src/assets/svgs/person.svg' +import ShowerSVG from 'src/assets/svgs/shower-outlined.svg' +import BedSVG from 'src/assets/svgs/bed-outlined.svg' +import CalendarSVG from 'src/assets/svgs/calendar.svg' +import PersonSVG from 'src/assets/svgs/person.svg' import Body from 'src/components/fonts/Body' import { FlexRow } from 'src/components/layouts/Flex' import getDateString from 'src/util/helpers/getDateString' diff --git a/client/src/pages/listing/Listing/RightSidePanel.jsx b/client/src/pages/listing/Listing/RightSidePanel.jsx index 4c2d473..71c05dc 100644 --- a/client/src/pages/listing/Listing/RightSidePanel.jsx +++ b/client/src/pages/listing/Listing/RightSidePanel.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import { ReactComponent as LockRaw } from 'src/assets/svgs/lock.svg'; +import LockRaw from 'src/assets/svgs/lock.svg'; import Btn from 'src/components/buttons/Btn'; import Badge from 'src/components/displays/Badge'; import DetailedAvatar from 'src/components/displays/DetailedAvatar'; diff --git a/client/src/pages/listing/Listing/index.jsx b/client/src/pages/listing/Listing/index.jsx index 188850b..d62020a 100644 --- a/client/src/pages/listing/Listing/index.jsx +++ b/client/src/pages/listing/Listing/index.jsx @@ -1,7 +1,7 @@ import React, { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' -import { ReactComponent as CalendarRaw } from 'src/assets/svgs/calendar.svg' -import { ReactComponent as LockRaw } from 'src/assets/svgs/lock.svg' +import CalendarRaw from 'src/assets/svgs/calendar.svg' +import LockRaw from 'src/assets/svgs/lock.svg' import BmBtn from 'src/components/buttons/BmBtn' import Btn from 'src/components/buttons/Btn' import DetailedAvatar from 'src/components/displays/DetailedAvatar' diff --git a/client/src/pages/profile/MyBookmarks/index.jsx b/client/src/pages/profile/MyBookmarks/index.jsx index a4f7e7f..4cb00bc 100644 --- a/client/src/pages/profile/MyBookmarks/index.jsx +++ b/client/src/pages/profile/MyBookmarks/index.jsx @@ -1,6 +1,6 @@ import React from 'react' import { useSelector } from 'react-redux' -import { ReactComponent as NoBookmarksSVGRaw } from 'src/assets/illustrations/no-bookmarks.svg' +import NoBookmarksSVGRaw from 'src/assets/illustrations/no-bookmarks.svg' import ListingCardV2 from 'src/components/cards/ListingCardV2' import Heading from 'src/components/fonts/Heading' import Text from 'src/components/fonts/Text' diff --git a/client/src/pages/profile/MyChats/ChatroomList/index.jsx b/client/src/pages/profile/MyChats/ChatroomList/index.jsx index bdeb6c3..1e94ccc 100644 --- a/client/src/pages/profile/MyChats/ChatroomList/index.jsx +++ b/client/src/pages/profile/MyChats/ChatroomList/index.jsx @@ -7,7 +7,7 @@ import Space from 'src/components/layouts/Space' import theme from 'src/theme/colors' import styled from 'styled-components' import ListElt from './ListElt' -import { ReactComponent as NoChatroomsSVGRaw } from 'src/assets/illustrations/no-chatrooms.svg' +import NoChatroomsSVGRaw from 'src/assets/illustrations/no-chatrooms.svg' import api from 'src/util/api' import log from 'src/util/log' diff --git a/client/src/pages/profile/MyChats/ChatroomPanel/Header.jsx b/client/src/pages/profile/MyChats/ChatroomPanel/Header.jsx index 028f0e5..39f0d71 100644 --- a/client/src/pages/profile/MyChats/ChatroomPanel/Header.jsx +++ b/client/src/pages/profile/MyChats/ChatroomPanel/Header.jsx @@ -1,7 +1,7 @@ import React from 'react' import styled from 'styled-components' -import { ReactComponent as LeftRaw } from 'src/assets/svgs/left.svg' -import { ReactComponent as HouseRaw } from 'src/assets/svgs/house.svg' +import LeftRaw from 'src/assets/svgs/left.svg' +import HouseRaw from 'src/assets/svgs/house.svg' import { Avatar } from '@material-ui/core' import useChatOtherUser from 'src/util/hooks/useChatOtherUser' import Body from 'src/components/fonts/Body' diff --git a/client/src/pages/profile/MyListings/MyListingsList.jsx b/client/src/pages/profile/MyListings/MyListingsList.jsx index e8ee111..64e44cf 100644 --- a/client/src/pages/profile/MyListings/MyListingsList.jsx +++ b/client/src/pages/profile/MyListings/MyListingsList.jsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react' -import { ReactComponent as NoListingSVGRaw } from 'src/assets/illustrations/no-listings.svg' +import NoListingSVGRaw from 'src/assets/illustrations/no-listings.svg' import PaginationBtns from 'src/components/buttons/PaginationBtns' import ListingCardV2 from 'src/components/cards/ListingCardV2' import ListingHostCard from 'src/components/cards/ListingHostCard' diff --git a/client/src/pages/profile/MyListings/index.jsx b/client/src/pages/profile/MyListings/index.jsx index decbece..f626d26 100644 --- a/client/src/pages/profile/MyListings/index.jsx +++ b/client/src/pages/profile/MyListings/index.jsx @@ -11,7 +11,7 @@ import Btn from 'src/components/buttons/Btn' import Space from 'src/components/layouts/Space' import useIsDesktop from 'src/util/hooks/useIsDesktop' import { Link } from 'react-router-dom' -import { ReactComponent as PlusIcon } from 'src/assets/svgs/plus.svg' +import PlusIcon from 'src/assets/svgs/plus.svg' const MyListings = () => { const user = useSelector((state) => state.user) From 0b4af18057bd3d18cbd52d39359f8e2c5b8c9c6c Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 19:46:22 -0400 Subject: [PATCH 07/22] refactor env var import syntax --- client/src/components/core/AppRouteWrapper.jsx | 2 +- client/src/components/displays/Map.jsx | 2 +- client/src/components/forms/ListingForm/Form.jsx | 2 +- client/src/components/inputs/AddrInput.jsx | 2 +- client/src/pages/env/index.jsx | 2 +- client/src/redux/store.js | 8 ++++---- client/src/util/helpers/signin.js | 8 ++++---- client/src/util/log.js | 2 +- client/src/util/socket.js | 6 +++--- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/client/src/components/core/AppRouteWrapper.jsx b/client/src/components/core/AppRouteWrapper.jsx index dace1d7..d5f2486 100644 --- a/client/src/components/core/AppRouteWrapper.jsx +++ b/client/src/components/core/AppRouteWrapper.jsx @@ -35,7 +35,7 @@ const AppRouter = () => { ] if ( - process.env.NODE_ENV === 'production' && + import.meta.env.NODE_ENV === 'production' && user && ((user.email && (bannedEmails.includes(user.email) || user.email.includes('chiayuho'))) || user.isBanned) diff --git a/client/src/components/displays/Map.jsx b/client/src/components/displays/Map.jsx index b7889e8..b9665a8 100644 --- a/client/src/components/displays/Map.jsx +++ b/client/src/components/displays/Map.jsx @@ -9,7 +9,7 @@ import Space from '../layouts/Space' const MapComponent = compose( withProps({ - googleMapURL: `https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=${process.env.REACT_APP_MAP_KEY}`, + googleMapURL: `https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=${import.meta.env.VITE_MAP_KEY}`, loadingElement:
, containerElement:
, mapElement:
, diff --git a/client/src/components/forms/ListingForm/Form.jsx b/client/src/components/forms/ListingForm/Form.jsx index 65d307a..7e461b7 100644 --- a/client/src/components/forms/ListingForm/Form.jsx +++ b/client/src/components/forms/ListingForm/Form.jsx @@ -79,7 +79,7 @@ const FormComponent = ({ user, initialValues }) => { const dynInitValues = initialValues || tempValues || - (process.env.NODE_ENV === 'development' && devValues) || + (import.meta.env.NODE_ENV === 'development' && devValues) || defaultValues // error modal diff --git a/client/src/components/inputs/AddrInput.jsx b/client/src/components/inputs/AddrInput.jsx index e8b0ae4..2109b78 100644 --- a/client/src/components/inputs/AddrInput.jsx +++ b/client/src/components/inputs/AddrInput.jsx @@ -13,7 +13,7 @@ import ListingLocation from '../displays/ListingLocation' const AddrInput = ({ formik, name, label }) => { const [loaded, error] = useScript( - `https://maps.googleapis.com/maps/api/js?key=${process.env.REACT_APP_MAP_KEY}&libraries=places` + `https://maps.googleapis.com/maps/api/js?key=${import.meta.env.VITE_MAP_KEY}&libraries=places` ) const handleChange = (address) => { diff --git a/client/src/pages/env/index.jsx b/client/src/pages/env/index.jsx index c0c4ced..0cb7a07 100644 --- a/client/src/pages/env/index.jsx +++ b/client/src/pages/env/index.jsx @@ -7,7 +7,7 @@ const Container = styled.div` const Env = () => ( - {JSON.stringify(process.env)} + {JSON.stringify(import.meta.env)} ); diff --git a/client/src/redux/store.js b/client/src/redux/store.js index 5ad2bf9..4b25481 100644 --- a/client/src/redux/store.js +++ b/client/src/redux/store.js @@ -5,7 +5,7 @@ import thunk from 'redux-thunk'; import { persistReducer } from 'redux-persist'; import storage from 'redux-persist/lib/storage' // defaults to localStorage for web -const blacklist = process.env.NODE_ENV === 'development' ? [] : []; +const blacklist = import.meta.env.NODE_ENV === 'development' ? [] : []; const persistConfig = { key: 'root', @@ -13,9 +13,9 @@ const persistConfig = { blacklist, } -const middleware = process.env.REACT_APP_ENV !== 'production' ? [thunk, logger] : [thunk]; - +const middleware = import.meta.env.VITE_ENV !== 'production' ? [thunk, logger] : [thunk]; + const persistedReducer = persistReducer(persistConfig, rootReducer) const store = createStore(persistedReducer, applyMiddleware(...middleware)); -export default store; \ No newline at end of file +export default store; diff --git a/client/src/util/helpers/signin.js b/client/src/util/helpers/signin.js index 88a8d4c..aeb7a7a 100644 --- a/client/src/util/helpers/signin.js +++ b/client/src/util/helpers/signin.js @@ -1,16 +1,16 @@ import store from 'src/redux/store'; const signin = (options) => { - const url = process.env.NODE_ENV === 'development' - ? 'http://localhost:8081/api/auth/google' - : `${process.env.REACT_APP_CLIENT_DOMAIN}/api/auth/google`; + const url = import.meta.env.NODE_ENV === 'development' + ? 'http://localhost:8081/api/auth/google' + : `${import.meta.env.VITE_CLIENT_DOMAIN}/api/auth/google`; window.open(url, '_self'); store.dispatch({ type: 'AUTHING_SET', payload: true, }); - + if (options && options.redirectPath) { store.dispatch({ type: 'REDIRECT_PATH_SET', diff --git a/client/src/util/log.js b/client/src/util/log.js index 33b9e4f..44a758e 100644 --- a/client/src/util/log.js +++ b/client/src/util/log.js @@ -1,5 +1,5 @@ const log = (txt, data = null) => { - if (process.env.NODE_ENV === 'development') { + if (import.meta.env.NODE_ENV === 'development') { console.log(txt, data); } }; diff --git a/client/src/util/socket.js b/client/src/util/socket.js index 61a02af..af23800 100644 --- a/client/src/util/socket.js +++ b/client/src/util/socket.js @@ -1,5 +1,5 @@ import io from "socket.io-client"; - -const socket = io.connect(process.env.REACT_APP_CLIENT_DOMAIN); -export default socket; \ No newline at end of file +const socket = io.connect(import.meta.env.VITE_CLIENT_DOMAIN); + +export default socket; From 0a625053ef15966257e5d8918d49e2108ed53dc6 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 19:55:39 -0400 Subject: [PATCH 08/22] disable forced prod --- app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.js b/app.js index e210fbd..ec50b59 100644 --- a/app.js +++ b/app.js @@ -13,7 +13,7 @@ const User = require('./models/User'); require('dotenv').config(); // MONGODB -const forceProdDB = true; +const forceProdDB = false; const isProdDb = forceProdDB || (process.env.NODE_ENV === 'production' && process.env.REACT_APP_DB_PROD); const URI = isProdDb From 78a37b1ea4c08144be7c6dccc0dc4a4b342061e7 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 19:56:03 -0400 Subject: [PATCH 09/22] fix svgr configs --- client/vite.config.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/vite.config.js b/client/vite.config.js index 172e709..080c9d6 100644 --- a/client/vite.config.js +++ b/client/vite.config.js @@ -2,10 +2,9 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react-swc' import svgr from "vite-plugin-svgr"; - // https://vitejs.dev/config/ export default defineConfig({ - plugins: [svgr(), react()], + plugins: [svgr({ include: '**/*.svg' }), react()], resolve: { alias: { src: "/src", From 7b8ba761f18726982ef1b656961b2ac9aaa48c4f Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 19:56:07 -0400 Subject: [PATCH 10/22] install firebase --- client/package-lock.json | 720 ++++++++++++++++++++++++++ client/package.json | 1 + client/src/services/firebase/index.js | 4 +- 3 files changed, 723 insertions(+), 2 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 514b7eb..82747fa 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -14,6 +14,7 @@ "axios": "^0.21.2", "body-scroll-lock": "^3.0.2", "compressorjs": "^1.0.6", + "firebase": "^7.24.0", "formik": "^2.0.3", "generate-password": "^1.4.2", "just-debounce-it": "^3.0.1", @@ -946,6 +947,503 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@firebase/analytics": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.0.tgz", + "integrity": "sha512-6qYEOPUVYrMhqvJ46Z5Uf1S4uULd6d7vGpMP5Qz+u8kIWuOQGcPdJKQap+Hla6Rq164or9gC2HRXuYXKlgWfpw==", + "dependencies": { + "@firebase/analytics-types": "0.4.0", + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.4.0.tgz", + "integrity": "sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA==" + }, + "node_modules/@firebase/analytics/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/@firebase/app": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.11.tgz", + "integrity": "sha512-FH++PaoyTzfTAVuJ0gITNYEIcjT5G+D0671La27MU8Vvr6MTko+5YUZ4xS9QItyotSeRF4rMJ1KR7G8LSyySiA==", + "dependencies": { + "@firebase/app-types": "0.6.1", + "@firebase/component": "0.1.19", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "dom-storage": "2.1.0", + "tslib": "^1.11.1", + "xmlhttprequest": "1.8.0" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.1.tgz", + "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==" + }, + "node_modules/@firebase/app/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/@firebase/auth": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.15.0.tgz", + "integrity": "sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ==", + "dependencies": { + "@firebase/auth-types": "0.10.1" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz", + "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "0.x" + } + }, + "node_modules/@firebase/auth-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz", + "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "0.x" + } + }, + "node_modules/@firebase/component": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.19.tgz", + "integrity": "sha512-L0S3g8eqaerg8y0zox3oOHSTwn/FE8RbcRHiurnbESvDViZtP5S5WnhuAPd7FnFxa8ElWK0z1Tr3ikzWDv1xdQ==", + "dependencies": { + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + } + }, + "node_modules/@firebase/component/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/@firebase/database": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.13.tgz", + "integrity": "sha512-NommVkAPzU7CKd1gyehmi3lz0K78q0KOfiex7Nfy7MBMwknLm7oNqKovXSgQV1PCLvKXvvAplDSFhDhzIf9obA==", + "dependencies": { + "@firebase/auth-interop-types": "0.1.5", + "@firebase/component": "0.1.19", + "@firebase/database-types": "0.5.2", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "faye-websocket": "0.11.3", + "tslib": "^1.11.1" + } + }, + "node_modules/@firebase/database-types": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.5.2.tgz", + "integrity": "sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g==", + "dependencies": { + "@firebase/app-types": "0.6.1" + } + }, + "node_modules/@firebase/database/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/@firebase/firestore": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.18.0.tgz", + "integrity": "sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw==", + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/firestore-types": "1.14.0", + "@firebase/logger": "0.2.6", + "@firebase/util": "0.3.2", + "@firebase/webchannel-wrapper": "0.4.0", + "@grpc/grpc-js": "^1.0.0", + "@grpc/proto-loader": "^0.5.0", + "node-fetch": "2.6.1", + "tslib": "^1.11.1" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/firestore-types": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.14.0.tgz", + "integrity": "sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/firestore/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@firebase/firestore/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/@firebase/functions": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.5.1.tgz", + "integrity": "sha512-yyjPZXXvzFPjkGRSqFVS5Hc2Y7Y48GyyMH+M3i7hLGe69r/59w6wzgXKqTiSYmyE1pxfjxU4a1YqBDHNkQkrYQ==", + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/functions-types": "0.3.17", + "@firebase/messaging-types": "0.5.0", + "node-fetch": "2.6.1", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/functions-types": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.17.tgz", + "integrity": "sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ==" + }, + "node_modules/@firebase/functions/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@firebase/functions/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/@firebase/installations": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.17.tgz", + "integrity": "sha512-AE/TyzIpwkC4UayRJD419xTqZkKzxwk0FLht3Dci8WI2OEKHSwoZG9xv4hOBZebe+fDzoV2EzfatQY8c/6Avig==", + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/installations-types": "0.3.4", + "@firebase/util": "0.3.2", + "idb": "3.0.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/installations-types": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz", + "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/installations/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/@firebase/logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", + "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==" + }, + "node_modules/@firebase/messaging": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.1.tgz", + "integrity": "sha512-iev/ST9v0xd/8YpGYrZtDcqdD9J6ZWzSuceRn8EKy5vIgQvW/rk2eTQc8axzvDpQ36ZfphMYuhW6XuNrR3Pd2Q==", + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/messaging-types": "0.5.0", + "@firebase/util": "0.3.2", + "idb": "3.0.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/messaging-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", + "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/messaging/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/@firebase/performance": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.2.tgz", + "integrity": "sha512-irHTCVWJ/sxJo0QHg+yQifBeVu8ZJPihiTqYzBUz/0AGc51YSt49FZwqSfknvCN2+OfHaazz/ARVBn87g7Ex8g==", + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/logger": "0.2.6", + "@firebase/performance-types": "0.0.13", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz", + "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==" + }, + "node_modules/@firebase/performance/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/@firebase/polyfill": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz", + "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==", + "dependencies": { + "core-js": "3.6.5", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + } + }, + "node_modules/@firebase/polyfill/node_modules/core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/@firebase/polyfill/node_modules/whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, + "node_modules/@firebase/remote-config": { + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.28.tgz", + "integrity": "sha512-4zSdyxpt94jAnFhO8toNjG8oMKBD+xTuBIcK+Nw8BdQWeJhEamgXlupdBARUk1uf3AvYICngHH32+Si/dMVTbw==", + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/installations": "0.4.17", + "@firebase/logger": "0.2.6", + "@firebase/remote-config-types": "0.1.9", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/remote-config-types": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz", + "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==" + }, + "node_modules/@firebase/remote-config/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/@firebase/storage": { + "version": "0.3.43", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.43.tgz", + "integrity": "sha512-Jp54jcuyimLxPhZHFVAhNbQmgTu3Sda7vXjXrNpPEhlvvMSq4yuZBR6RrZxe/OrNVprLHh/6lTCjwjOVSo3bWA==", + "dependencies": { + "@firebase/component": "0.1.19", + "@firebase/storage-types": "0.3.13", + "@firebase/util": "0.3.2", + "tslib": "^1.11.1" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/storage-types": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz", + "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "0.x" + } + }, + "node_modules/@firebase/storage/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/@firebase/util": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.2.tgz", + "integrity": "sha512-Dqs00++c8rwKky6KCKLLY2T1qYO4Q+X5t+lF7DInXDNF4ae1Oau35bkD+OpJ9u7l1pEv7KHowP6CUKuySCOc8g==", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@firebase/util/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/@firebase/webchannel-wrapper": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz", + "integrity": "sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ==" + }, + "node_modules/@grpc/grpc-js": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.2.tgz", + "integrity": "sha512-lSbgu8iayAod8O0YcoXK3+bMFGThY2svtN35Zlm9VepsB3jfyIcoupKknEht7Kh9Q8ITjsp0J4KpYo9l4+FhNg==", + "dependencies": { + "@grpc/proto-loader": "^0.7.10", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", + "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.4", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/grpc-js/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/grpc-js/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/@grpc/grpc-js/node_modules/protobufjs": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", + "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@grpc/grpc-js/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/grpc-js/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.6.tgz", + "integrity": "sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ==", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "protobufjs": "^6.8.6" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -1043,6 +1541,15 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/@material-ui/core": { "version": "4.12.4", "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", @@ -1263,6 +1770,60 @@ "node": ">= 8" } }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, "node_modules/@rollup/pluginutils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", @@ -1926,6 +2487,11 @@ "hoist-non-react-statics": "^3.3.0" } }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, "node_modules/@types/markerclustererplus": { "version": "2.1.33", "resolved": "https://registry.npmjs.org/@types/markerclustererplus/-/markerclustererplus-2.1.33.tgz", @@ -1935,6 +2501,14 @@ "@types/google-maps": "*" } }, + "node_modules/@types/node": { + "version": "20.11.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.26.tgz", + "integrity": "sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", @@ -2708,6 +3282,14 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "node_modules/dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==", + "engines": { + "node": "*" + } + }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", @@ -3262,6 +3844,17 @@ "reusify": "^1.0.4" } }, + "node_modules/faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/fbjs": { "version": "0.8.18", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", @@ -3337,6 +3930,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/firebase": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.24.0.tgz", + "integrity": "sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA==", + "dependencies": { + "@firebase/analytics": "0.6.0", + "@firebase/app": "0.6.11", + "@firebase/app-types": "0.6.1", + "@firebase/auth": "0.15.0", + "@firebase/database": "0.6.13", + "@firebase/firestore": "1.18.0", + "@firebase/functions": "0.5.1", + "@firebase/installations": "0.4.17", + "@firebase/messaging": "0.7.1", + "@firebase/performance": "0.4.2", + "@firebase/polyfill": "0.3.36", + "@firebase/remote-config": "0.1.28", + "@firebase/storage": "0.3.43", + "@firebase/util": "0.3.2" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -3746,6 +4363,11 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, "node_modules/hyphenate-style-name": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", @@ -3762,6 +4384,11 @@ "node": ">=0.10.0" } }, + "node_modules/idb": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", + "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" + }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -4522,6 +5149,11 @@ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -4533,6 +5165,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -5035,6 +5672,11 @@ "asap": "~2.0.3" } }, + "node_modules/promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", + "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -5055,6 +5697,31 @@ "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" }, + "node_modules/protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -5597,6 +6264,25 @@ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, + "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.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", @@ -6255,6 +6941,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -6373,6 +7064,27 @@ "loose-envify": "^1.0.0" } }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/whatwg-fetch": { "version": "3.6.20", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", @@ -6519,6 +7231,14 @@ } } }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/xmlhttprequest-ssl": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", diff --git a/client/package.json b/client/package.json index 112a1c1..f3e886d 100644 --- a/client/package.json +++ b/client/package.json @@ -16,6 +16,7 @@ "axios": "^0.21.2", "body-scroll-lock": "^3.0.2", "compressorjs": "^1.0.6", + "firebase": "^7.24.0", "formik": "^2.0.3", "generate-password": "^1.4.2", "just-debounce-it": "^3.0.1", diff --git a/client/src/services/firebase/index.js b/client/src/services/firebase/index.js index 7d050e8..3ddd70d 100644 --- a/client/src/services/firebase/index.js +++ b/client/src/services/firebase/index.js @@ -1,4 +1,4 @@ -import * as firebase from "firebase/app"; +import firebase from "firebase"; import 'firebase/storage'; import uploadFile from './uploadFile'; @@ -18,4 +18,4 @@ firebase.initializeApp(firebaseConfig); export default firebase; export { uploadFile, -} \ No newline at end of file +} From 5277634c93dc5eed98c949a020d7cdf818ab6525 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 19:59:57 -0400 Subject: [PATCH 11/22] remove legacy cra stack --- client-cra-legacy/.eslintrc.json | 33 - client-cra-legacy/.gitignore | 24 - client-cra-legacy/.prettierrc | 12 - client-cra-legacy/README.md | 68 - client-cra-legacy/index.html | 57 - client-cra-legacy/index.jsx | 16 - client-cra-legacy/jsconfig.json | 8 - client-cra-legacy/package-lock.json | 11959 ---------------- client-cra-legacy/package.json | 79 - client-cra-legacy/public/manifest.json | 15 - client-cra-legacy/public/robots.txt | 2 - .../src/assets/illustrations/no-bookmarks.svg | 1 - .../src/assets/illustrations/no-chatrooms.svg | 1 - .../src/assets/illustrations/no-listings.svg | 1 - client-cra-legacy/src/assets/svgs/aircon.svg | 29 - client-cra-legacy/src/assets/svgs/avatar.svg | 1 - .../src/assets/svgs/bathroom.svg | 48 - .../src/assets/svgs/bed-outlined.svg | 3 - client-cra-legacy/src/assets/svgs/bed.svg | 43 - client-cra-legacy/src/assets/svgs/bedroom.svg | 3 - client-cra-legacy/src/assets/svgs/bin.svg | 63 - .../src/assets/svgs/bookmark-filled.svg | 1 - .../src/assets/svgs/bookmark.svg | 1 - client-cra-legacy/src/assets/svgs/burger.svg | 3 - client-cra-legacy/src/assets/svgs/bus.svg | 62 - .../src/assets/svgs/calendar.svg | 3 - client-cra-legacy/src/assets/svgs/car.svg | 3 - .../src/assets/svgs/chat-square.svg | 41 - client-cra-legacy/src/assets/svgs/chat.svg | 39 - .../src/assets/svgs/close-material.svg | 1 - client-cra-legacy/src/assets/svgs/close.svg | 46 - client-cra-legacy/src/assets/svgs/down.svg | 43 - client-cra-legacy/src/assets/svgs/eye.svg | 46 - client-cra-legacy/src/assets/svgs/face.svg | 1 - client-cra-legacy/src/assets/svgs/filter.svg | 1 - client-cra-legacy/src/assets/svgs/google.svg | 47 - client-cra-legacy/src/assets/svgs/gym.svg | 3 - client-cra-legacy/src/assets/svgs/heater.svg | 3 - client-cra-legacy/src/assets/svgs/house.svg | 1 - .../src/assets/svgs/left-arrow.svg | 1 - client-cra-legacy/src/assets/svgs/left.svg | 43 - client-cra-legacy/src/assets/svgs/lock.svg | 1 - client-cra-legacy/src/assets/svgs/logo.svg | 4 - client-cra-legacy/src/assets/svgs/mail.svg | 3 - client-cra-legacy/src/assets/svgs/money.svg | 1 - client-cra-legacy/src/assets/svgs/pencil.svg | 3 - client-cra-legacy/src/assets/svgs/person.svg | 3 - client-cra-legacy/src/assets/svgs/place.svg | 1 - client-cra-legacy/src/assets/svgs/plus.svg | 3 - client-cra-legacy/src/assets/svgs/profile.svg | 3 - client-cra-legacy/src/assets/svgs/search.svg | 1 - .../src/assets/svgs/shower-outlined.svg | 3 - .../src/assets/svgs/snowflake.svg | 55 - client-cra-legacy/src/assets/svgs/sofa.svg | 56 - client-cra-legacy/src/assets/svgs/up.svg | 43 - .../src/assets/svgs/utilities.svg | 48 - client-cra-legacy/src/assets/svgs/walk.svg | 1 - client-cra-legacy/src/assets/svgs/warning.svg | 1 - client-cra-legacy/src/assets/svgs/wifi.svg | 3 - .../src/components/buttons/Auth.jsx | 36 - .../src/components/buttons/BmBtn.jsx | 118 - .../src/components/buttons/Btn.jsx | 39 - .../src/components/buttons/CircleCross.jsx | 39 - .../src/components/buttons/InvertedBtn.jsx | 15 - .../src/components/buttons/LinedBtn.jsx | 18 - .../src/components/buttons/PaginationBtns.jsx | 31 - .../components/buttons/PopupButton/Btn.jsx | 31 - .../components/buttons/PopupButton/Popup.jsx | 36 - .../components/buttons/PopupButton/index.jsx | 29 - .../src/components/buttons/TextBtn.jsx | 28 - .../components/cards/ListingCard/index.jsx | 227 - .../src/components/cards/ListingCardV2.jsx | 212 - .../src/components/cards/ListingHostCard.jsx | 201 - .../src/components/core/AppReduxWrapper.jsx | 18 - .../src/components/core/AppRouteWrapper.jsx | 74 - .../src/components/core/AppThemeWrapper.jsx | 38 - .../src/components/core/PrivateRoute.jsx | 25 - .../src/components/core/ResetUserStore.jsx | 30 - .../src/components/core/ScrollToTop.jsx | 70 - .../src/components/core/SocketIO.jsx | 35 - .../src/components/displays/AmenityGrp.jsx | 57 - .../src/components/displays/Avatar.jsx | 49 - .../src/components/displays/Badge.jsx | 38 - .../src/components/displays/BadgeV2.jsx | 30 - .../src/components/displays/ClickableIcon.jsx | 32 - .../src/components/displays/CornerRedDot.jsx | 20 - .../components/displays/DetailedAvatar.jsx | 33 - .../src/components/displays/IconContainer.jsx | 31 - .../src/components/displays/ImgCarousel.css | 15 - .../src/components/displays/ImgCarousel.jsx | 87 - .../src/components/displays/InfoBox.jsx | 29 - .../components/displays/ListingLocation.jsx | 46 - .../src/components/displays/Loading.jsx | 41 - .../src/components/displays/LoadingDots.jsx | 78 - .../src/components/displays/Logo.jsx | 16 - .../src/components/displays/Map.jsx | 56 - .../src/components/displays/Metadata.jsx | 42 - .../src/components/displays/NotifCounter.jsx | 31 - .../src/components/displays/Notification.jsx | 26 - .../components/displays/PolicyDisclaimer.jsx | 35 - .../src/components/displays/PriceBadge.jsx | 37 - .../src/components/displays/Searchers.jsx | 61 - .../src/components/displays/Snackbar.jsx | 36 - .../src/components/displays/StateBadges.jsx | 24 - .../src/components/filters/DateFilter.jsx | 78 - .../src/components/filters/SliderFilter.jsx | 71 - .../src/components/filters/Sort.jsx | 64 - .../src/components/fonts/Body.jsx | 67 - .../src/components/fonts/ErrMsg.jsx | 23 - .../src/components/fonts/Heading.jsx | 17 - .../src/components/fonts/Label.jsx | 14 - .../src/components/fonts/ListingInfo.jsx | 90 - .../src/components/fonts/Subheading.jsx | 27 - .../src/components/fonts/Text.jsx | 112 - .../src/components/footers/MainFooter.jsx | 101 - .../forms/ListingForm/Amenities.jsx | 42 - .../forms/ListingForm/CustomFileUpload.jsx | 148 - .../src/components/forms/ListingForm/Form.jsx | 223 - .../forms/ListingForm/FormContents.jsx | 123 - .../components/forms/ListingForm/StartEnd.jsx | 77 - .../components/forms/ListingForm/index.jsx | 10 - .../components/headers/BackHeader/index.jsx | 54 - .../headers/FeedbackBanner/index.jsx | 38 - .../MainHeader/Bookmarks/BmDropdown.jsx | 56 - .../MainHeader/Bookmarks/BmListing.jsx | 71 - .../headers/MainHeader/Bookmarks/index.jsx | 70 - .../headers/MainHeader/Chat/index.jsx | 45 - .../MainHeader/MobileNav/FullscreenNav.jsx | 119 - .../headers/MainHeader/MobileNav/index.jsx | 50 - .../components/headers/MainHeader/index.jsx | 72 - .../src/components/headers/Navbar/NavElt.jsx | 40 - .../src/components/headers/Navbar/index.jsx | 58 - .../src/components/inputs/AddrInput.jsx | 119 - .../src/components/inputs/Checkbox.jsx | 80 - .../src/components/inputs/FileUpload.jsx | 44 - .../src/components/inputs/Incrementor.jsx | 63 - .../src/components/inputs/Input.jsx | 89 - .../src/components/inputs/Searchbar.jsx | 71 - .../src/components/inputs/Select.jsx | 54 - .../src/components/inputs/search.svg | 1 - .../src/components/layouts/Flex.jsx | 42 - .../src/components/layouts/Space.jsx | 8 - .../src/components/views/Dropdown/index.jsx | 81 - .../src/components/views/Modal/index.jsx | 86 - .../views/deprec/DynContainer/index.jsx | 26 - client-cra-legacy/src/config.js | 11 - client-cra-legacy/src/constants/amenities.jsx | 54 - .../src/containers/AmenitiesList.jsx | 17 - .../src/containers/DynCardList/index.jsx | 46 - .../src/containers/HoriCenter.jsx | 9 - client-cra-legacy/src/containers/RenderOn.jsx | 20 - .../src/containers/VertCardList.jsx | 37 - client-cra-legacy/src/index.jsx | 11 - .../src/pages/auth-callback/index.jsx | 74 - .../src/pages/cookie-policy/index.jsx | 73 - .../src/pages/edit/Edit/index.jsx | 25 - client-cra-legacy/src/pages/edit/index.jsx | 34 - client-cra-legacy/src/pages/env/index.jsx | 14 - client-cra-legacy/src/pages/home/Listings.jsx | 62 - .../SearchOptions/Filters/FilterContents.jsx | 91 - .../SearchOptions/Filters/FilterStatus.jsx | 65 - .../home/SearchOptions/Filters/index.jsx | 91 - .../home/SearchOptions/ListingSortSelect.jsx | 45 - .../src/pages/home/SearchOptions/index.jsx | 39 - client-cra-legacy/src/pages/home/index.jsx | 19 - .../pages/listing/Listing/DesktopListing.jsx | 217 - .../pages/listing/Listing/IconsSection.jsx | 112 - .../src/pages/listing/Listing/ImgModal.jsx | 62 - .../src/pages/listing/Listing/ImgPanels.jsx | 121 - .../pages/listing/Listing/MobileFooter.jsx | 63 - .../pages/listing/Listing/RightSidePanel.jsx | 133 - .../src/pages/listing/Listing/index.jsx | 537 - client-cra-legacy/src/pages/listing/index.jsx | 39 - client-cra-legacy/src/pages/new/New/index.jsx | 24 - client-cra-legacy/src/pages/new/index.jsx | 15 - .../src/pages/privacy-policy/index.jsx | 72 - .../src/pages/profile/MyBookmarks/index.jsx | 82 - .../src/pages/profile/MyChats/Chat/index.jsx | 83 - .../pages/profile/MyChats/Chatroom/index.jsx | 49 - .../profile/MyChats/ChatroomList/ListElt.jsx | 95 - .../profile/MyChats/ChatroomList/index.jsx | 78 - .../ChatroomPanel/ChatContents/MsgGroup.jsx | 64 - .../ChatroomPanel/ChatContents/index.jsx | 59 - .../profile/MyChats/ChatroomPanel/Header.jsx | 102 - .../MyChats/ChatroomPanel/InputSection.jsx | 174 - .../profile/MyChats/ChatroomPanel/index.jsx | 45 - .../profile/MyListings/MyListingsList.jsx | 77 - .../src/pages/profile/MyListings/index.jsx | 70 - .../src/pages/profile/Settings/index.jsx | 58 - client-cra-legacy/src/pages/profile/index.jsx | 15 - client-cra-legacy/src/pages/stats/index.jsx | 28 - .../src/pages/terms-conditions/index.jsx | 73 - .../src/redux/reducers/authing.js | 10 - client-cra-legacy/src/redux/reducers/bm.js | 52 - .../src/redux/reducers/chatrooms.js | 70 - client-cra-legacy/src/redux/reducers/index.js | 18 - .../src/redux/reducers/redirectPath.js | 10 - .../src/redux/reducers/tempValues.js | 14 - client-cra-legacy/src/redux/reducers/user.js | 69 - client-cra-legacy/src/redux/store.js | 21 - client-cra-legacy/src/serviceWorker.js | 135 - .../src/services/firebase/index.js | 21 - .../src/services/firebase/uploadFile.js | 39 - client-cra-legacy/src/theme/Normalise.css | 70 - client-cra-legacy/src/theme/colors.js | 74 - client-cra-legacy/src/theme/dimensions.js | 6 - client-cra-legacy/src/theme/index.js | 8 - client-cra-legacy/src/util/api.js | 5 - .../src/util/auth/fetchSelfAndStore.js | 22 - client-cra-legacy/src/util/auth/logout.js | 19 - .../src/util/helpers/calcDistance.js | 21 - .../src/util/helpers/formatDate.js | 12 - .../src/util/helpers/formatListingDesc.js | 7 - .../src/util/helpers/getDateDiff.js | 7 - .../src/util/helpers/getDateString.js | 22 - .../src/util/helpers/getFromNowDate.js | 10 - .../src/util/helpers/getNumericDate.js | 10 - .../src/util/helpers/getRegion.js | 48 - .../src/util/helpers/getShortAddr.js | 5 - .../src/util/helpers/getShortDateString.js | 8 - .../src/util/helpers/kmToMins.js | 3 - .../src/util/helpers/listingDatestring.js | 8 - client-cra-legacy/src/util/helpers/signin.js | 22 - .../src/util/hooks/useChatOtherUser.js | 16 - .../src/util/hooks/useChatroom.js | 11 - .../src/util/hooks/useFilters.js | 58 - .../src/util/hooks/useIsDesktop.js | 16 - .../src/util/hooks/useIsMobile.js | 16 - .../src/util/hooks/useLocalStorage.js | 71 - .../src/util/hooks/useOnOutsideClick.js | 22 - client-cra-legacy/src/util/hooks/useRouter.js | 41 - client-cra-legacy/src/util/hooks/useScript.js | 129 - .../src/util/hooks/useUnreadChatrooms.js | 11 - .../src/util/hooks/useWindowSize.js | 16 - client-cra-legacy/src/util/log.js | 7 - client-cra-legacy/src/util/path/getQuery.js | 7 - .../src/util/path/updateQuery.js | 11 - client-cra-legacy/src/util/socket.js | 5 - client-cra-legacy/vite.config.js | 12 - 239 files changed, 22791 deletions(-) delete mode 100644 client-cra-legacy/.eslintrc.json delete mode 100644 client-cra-legacy/.gitignore delete mode 100644 client-cra-legacy/.prettierrc delete mode 100644 client-cra-legacy/README.md delete mode 100644 client-cra-legacy/index.html delete mode 100644 client-cra-legacy/index.jsx delete mode 100644 client-cra-legacy/jsconfig.json delete mode 100644 client-cra-legacy/package-lock.json delete mode 100644 client-cra-legacy/package.json delete mode 100644 client-cra-legacy/public/manifest.json delete mode 100644 client-cra-legacy/public/robots.txt delete mode 100644 client-cra-legacy/src/assets/illustrations/no-bookmarks.svg delete mode 100644 client-cra-legacy/src/assets/illustrations/no-chatrooms.svg delete mode 100644 client-cra-legacy/src/assets/illustrations/no-listings.svg delete mode 100644 client-cra-legacy/src/assets/svgs/aircon.svg delete mode 100644 client-cra-legacy/src/assets/svgs/avatar.svg delete mode 100644 client-cra-legacy/src/assets/svgs/bathroom.svg delete mode 100644 client-cra-legacy/src/assets/svgs/bed-outlined.svg delete mode 100644 client-cra-legacy/src/assets/svgs/bed.svg delete mode 100644 client-cra-legacy/src/assets/svgs/bedroom.svg delete mode 100644 client-cra-legacy/src/assets/svgs/bin.svg delete mode 100644 client-cra-legacy/src/assets/svgs/bookmark-filled.svg delete mode 100644 client-cra-legacy/src/assets/svgs/bookmark.svg delete mode 100644 client-cra-legacy/src/assets/svgs/burger.svg delete mode 100644 client-cra-legacy/src/assets/svgs/bus.svg delete mode 100644 client-cra-legacy/src/assets/svgs/calendar.svg delete mode 100644 client-cra-legacy/src/assets/svgs/car.svg delete mode 100644 client-cra-legacy/src/assets/svgs/chat-square.svg delete mode 100644 client-cra-legacy/src/assets/svgs/chat.svg delete mode 100644 client-cra-legacy/src/assets/svgs/close-material.svg delete mode 100644 client-cra-legacy/src/assets/svgs/close.svg delete mode 100644 client-cra-legacy/src/assets/svgs/down.svg delete mode 100644 client-cra-legacy/src/assets/svgs/eye.svg delete mode 100644 client-cra-legacy/src/assets/svgs/face.svg delete mode 100644 client-cra-legacy/src/assets/svgs/filter.svg delete mode 100644 client-cra-legacy/src/assets/svgs/google.svg delete mode 100644 client-cra-legacy/src/assets/svgs/gym.svg delete mode 100644 client-cra-legacy/src/assets/svgs/heater.svg delete mode 100644 client-cra-legacy/src/assets/svgs/house.svg delete mode 100644 client-cra-legacy/src/assets/svgs/left-arrow.svg delete mode 100644 client-cra-legacy/src/assets/svgs/left.svg delete mode 100644 client-cra-legacy/src/assets/svgs/lock.svg delete mode 100644 client-cra-legacy/src/assets/svgs/logo.svg delete mode 100644 client-cra-legacy/src/assets/svgs/mail.svg delete mode 100644 client-cra-legacy/src/assets/svgs/money.svg delete mode 100644 client-cra-legacy/src/assets/svgs/pencil.svg delete mode 100644 client-cra-legacy/src/assets/svgs/person.svg delete mode 100644 client-cra-legacy/src/assets/svgs/place.svg delete mode 100644 client-cra-legacy/src/assets/svgs/plus.svg delete mode 100644 client-cra-legacy/src/assets/svgs/profile.svg delete mode 100644 client-cra-legacy/src/assets/svgs/search.svg delete mode 100644 client-cra-legacy/src/assets/svgs/shower-outlined.svg delete mode 100644 client-cra-legacy/src/assets/svgs/snowflake.svg delete mode 100644 client-cra-legacy/src/assets/svgs/sofa.svg delete mode 100644 client-cra-legacy/src/assets/svgs/up.svg delete mode 100644 client-cra-legacy/src/assets/svgs/utilities.svg delete mode 100644 client-cra-legacy/src/assets/svgs/walk.svg delete mode 100644 client-cra-legacy/src/assets/svgs/warning.svg delete mode 100644 client-cra-legacy/src/assets/svgs/wifi.svg delete mode 100644 client-cra-legacy/src/components/buttons/Auth.jsx delete mode 100644 client-cra-legacy/src/components/buttons/BmBtn.jsx delete mode 100644 client-cra-legacy/src/components/buttons/Btn.jsx delete mode 100644 client-cra-legacy/src/components/buttons/CircleCross.jsx delete mode 100644 client-cra-legacy/src/components/buttons/InvertedBtn.jsx delete mode 100644 client-cra-legacy/src/components/buttons/LinedBtn.jsx delete mode 100644 client-cra-legacy/src/components/buttons/PaginationBtns.jsx delete mode 100644 client-cra-legacy/src/components/buttons/PopupButton/Btn.jsx delete mode 100644 client-cra-legacy/src/components/buttons/PopupButton/Popup.jsx delete mode 100644 client-cra-legacy/src/components/buttons/PopupButton/index.jsx delete mode 100644 client-cra-legacy/src/components/buttons/TextBtn.jsx delete mode 100644 client-cra-legacy/src/components/cards/ListingCard/index.jsx delete mode 100644 client-cra-legacy/src/components/cards/ListingCardV2.jsx delete mode 100644 client-cra-legacy/src/components/cards/ListingHostCard.jsx delete mode 100644 client-cra-legacy/src/components/core/AppReduxWrapper.jsx delete mode 100644 client-cra-legacy/src/components/core/AppRouteWrapper.jsx delete mode 100644 client-cra-legacy/src/components/core/AppThemeWrapper.jsx delete mode 100644 client-cra-legacy/src/components/core/PrivateRoute.jsx delete mode 100644 client-cra-legacy/src/components/core/ResetUserStore.jsx delete mode 100644 client-cra-legacy/src/components/core/ScrollToTop.jsx delete mode 100644 client-cra-legacy/src/components/core/SocketIO.jsx delete mode 100644 client-cra-legacy/src/components/displays/AmenityGrp.jsx delete mode 100644 client-cra-legacy/src/components/displays/Avatar.jsx delete mode 100644 client-cra-legacy/src/components/displays/Badge.jsx delete mode 100644 client-cra-legacy/src/components/displays/BadgeV2.jsx delete mode 100644 client-cra-legacy/src/components/displays/ClickableIcon.jsx delete mode 100644 client-cra-legacy/src/components/displays/CornerRedDot.jsx delete mode 100644 client-cra-legacy/src/components/displays/DetailedAvatar.jsx delete mode 100644 client-cra-legacy/src/components/displays/IconContainer.jsx delete mode 100644 client-cra-legacy/src/components/displays/ImgCarousel.css delete mode 100644 client-cra-legacy/src/components/displays/ImgCarousel.jsx delete mode 100644 client-cra-legacy/src/components/displays/InfoBox.jsx delete mode 100644 client-cra-legacy/src/components/displays/ListingLocation.jsx delete mode 100644 client-cra-legacy/src/components/displays/Loading.jsx delete mode 100644 client-cra-legacy/src/components/displays/LoadingDots.jsx delete mode 100644 client-cra-legacy/src/components/displays/Logo.jsx delete mode 100644 client-cra-legacy/src/components/displays/Map.jsx delete mode 100644 client-cra-legacy/src/components/displays/Metadata.jsx delete mode 100644 client-cra-legacy/src/components/displays/NotifCounter.jsx delete mode 100644 client-cra-legacy/src/components/displays/Notification.jsx delete mode 100644 client-cra-legacy/src/components/displays/PolicyDisclaimer.jsx delete mode 100644 client-cra-legacy/src/components/displays/PriceBadge.jsx delete mode 100644 client-cra-legacy/src/components/displays/Searchers.jsx delete mode 100644 client-cra-legacy/src/components/displays/Snackbar.jsx delete mode 100644 client-cra-legacy/src/components/displays/StateBadges.jsx delete mode 100644 client-cra-legacy/src/components/filters/DateFilter.jsx delete mode 100644 client-cra-legacy/src/components/filters/SliderFilter.jsx delete mode 100644 client-cra-legacy/src/components/filters/Sort.jsx delete mode 100644 client-cra-legacy/src/components/fonts/Body.jsx delete mode 100644 client-cra-legacy/src/components/fonts/ErrMsg.jsx delete mode 100644 client-cra-legacy/src/components/fonts/Heading.jsx delete mode 100644 client-cra-legacy/src/components/fonts/Label.jsx delete mode 100644 client-cra-legacy/src/components/fonts/ListingInfo.jsx delete mode 100644 client-cra-legacy/src/components/fonts/Subheading.jsx delete mode 100644 client-cra-legacy/src/components/fonts/Text.jsx delete mode 100644 client-cra-legacy/src/components/footers/MainFooter.jsx delete mode 100644 client-cra-legacy/src/components/forms/ListingForm/Amenities.jsx delete mode 100644 client-cra-legacy/src/components/forms/ListingForm/CustomFileUpload.jsx delete mode 100644 client-cra-legacy/src/components/forms/ListingForm/Form.jsx delete mode 100644 client-cra-legacy/src/components/forms/ListingForm/FormContents.jsx delete mode 100644 client-cra-legacy/src/components/forms/ListingForm/StartEnd.jsx delete mode 100644 client-cra-legacy/src/components/forms/ListingForm/index.jsx delete mode 100644 client-cra-legacy/src/components/headers/BackHeader/index.jsx delete mode 100644 client-cra-legacy/src/components/headers/FeedbackBanner/index.jsx delete mode 100644 client-cra-legacy/src/components/headers/MainHeader/Bookmarks/BmDropdown.jsx delete mode 100644 client-cra-legacy/src/components/headers/MainHeader/Bookmarks/BmListing.jsx delete mode 100644 client-cra-legacy/src/components/headers/MainHeader/Bookmarks/index.jsx delete mode 100644 client-cra-legacy/src/components/headers/MainHeader/Chat/index.jsx delete mode 100644 client-cra-legacy/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx delete mode 100644 client-cra-legacy/src/components/headers/MainHeader/MobileNav/index.jsx delete mode 100644 client-cra-legacy/src/components/headers/MainHeader/index.jsx delete mode 100644 client-cra-legacy/src/components/headers/Navbar/NavElt.jsx delete mode 100644 client-cra-legacy/src/components/headers/Navbar/index.jsx delete mode 100644 client-cra-legacy/src/components/inputs/AddrInput.jsx delete mode 100644 client-cra-legacy/src/components/inputs/Checkbox.jsx delete mode 100644 client-cra-legacy/src/components/inputs/FileUpload.jsx delete mode 100644 client-cra-legacy/src/components/inputs/Incrementor.jsx delete mode 100644 client-cra-legacy/src/components/inputs/Input.jsx delete mode 100644 client-cra-legacy/src/components/inputs/Searchbar.jsx delete mode 100644 client-cra-legacy/src/components/inputs/Select.jsx delete mode 100644 client-cra-legacy/src/components/inputs/search.svg delete mode 100644 client-cra-legacy/src/components/layouts/Flex.jsx delete mode 100644 client-cra-legacy/src/components/layouts/Space.jsx delete mode 100644 client-cra-legacy/src/components/views/Dropdown/index.jsx delete mode 100644 client-cra-legacy/src/components/views/Modal/index.jsx delete mode 100644 client-cra-legacy/src/components/views/deprec/DynContainer/index.jsx delete mode 100644 client-cra-legacy/src/config.js delete mode 100644 client-cra-legacy/src/constants/amenities.jsx delete mode 100644 client-cra-legacy/src/containers/AmenitiesList.jsx delete mode 100644 client-cra-legacy/src/containers/DynCardList/index.jsx delete mode 100644 client-cra-legacy/src/containers/HoriCenter.jsx delete mode 100644 client-cra-legacy/src/containers/RenderOn.jsx delete mode 100644 client-cra-legacy/src/containers/VertCardList.jsx delete mode 100644 client-cra-legacy/src/index.jsx delete mode 100644 client-cra-legacy/src/pages/auth-callback/index.jsx delete mode 100644 client-cra-legacy/src/pages/cookie-policy/index.jsx delete mode 100644 client-cra-legacy/src/pages/edit/Edit/index.jsx delete mode 100644 client-cra-legacy/src/pages/edit/index.jsx delete mode 100644 client-cra-legacy/src/pages/env/index.jsx delete mode 100644 client-cra-legacy/src/pages/home/Listings.jsx delete mode 100644 client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterContents.jsx delete mode 100644 client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterStatus.jsx delete mode 100644 client-cra-legacy/src/pages/home/SearchOptions/Filters/index.jsx delete mode 100644 client-cra-legacy/src/pages/home/SearchOptions/ListingSortSelect.jsx delete mode 100644 client-cra-legacy/src/pages/home/SearchOptions/index.jsx delete mode 100644 client-cra-legacy/src/pages/home/index.jsx delete mode 100644 client-cra-legacy/src/pages/listing/Listing/DesktopListing.jsx delete mode 100644 client-cra-legacy/src/pages/listing/Listing/IconsSection.jsx delete mode 100644 client-cra-legacy/src/pages/listing/Listing/ImgModal.jsx delete mode 100644 client-cra-legacy/src/pages/listing/Listing/ImgPanels.jsx delete mode 100644 client-cra-legacy/src/pages/listing/Listing/MobileFooter.jsx delete mode 100644 client-cra-legacy/src/pages/listing/Listing/RightSidePanel.jsx delete mode 100644 client-cra-legacy/src/pages/listing/Listing/index.jsx delete mode 100644 client-cra-legacy/src/pages/listing/index.jsx delete mode 100644 client-cra-legacy/src/pages/new/New/index.jsx delete mode 100644 client-cra-legacy/src/pages/new/index.jsx delete mode 100644 client-cra-legacy/src/pages/privacy-policy/index.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyBookmarks/index.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyChats/Chat/index.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyChats/Chatroom/index.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyChats/ChatroomList/ListElt.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyChats/ChatroomList/index.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/ChatContents/MsgGroup.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/ChatContents/index.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/Header.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/InputSection.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/index.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyListings/MyListingsList.jsx delete mode 100644 client-cra-legacy/src/pages/profile/MyListings/index.jsx delete mode 100644 client-cra-legacy/src/pages/profile/Settings/index.jsx delete mode 100644 client-cra-legacy/src/pages/profile/index.jsx delete mode 100644 client-cra-legacy/src/pages/stats/index.jsx delete mode 100644 client-cra-legacy/src/pages/terms-conditions/index.jsx delete mode 100644 client-cra-legacy/src/redux/reducers/authing.js delete mode 100644 client-cra-legacy/src/redux/reducers/bm.js delete mode 100644 client-cra-legacy/src/redux/reducers/chatrooms.js delete mode 100644 client-cra-legacy/src/redux/reducers/index.js delete mode 100644 client-cra-legacy/src/redux/reducers/redirectPath.js delete mode 100644 client-cra-legacy/src/redux/reducers/tempValues.js delete mode 100644 client-cra-legacy/src/redux/reducers/user.js delete mode 100644 client-cra-legacy/src/redux/store.js delete mode 100644 client-cra-legacy/src/serviceWorker.js delete mode 100644 client-cra-legacy/src/services/firebase/index.js delete mode 100644 client-cra-legacy/src/services/firebase/uploadFile.js delete mode 100644 client-cra-legacy/src/theme/Normalise.css delete mode 100644 client-cra-legacy/src/theme/colors.js delete mode 100644 client-cra-legacy/src/theme/dimensions.js delete mode 100644 client-cra-legacy/src/theme/index.js delete mode 100644 client-cra-legacy/src/util/api.js delete mode 100644 client-cra-legacy/src/util/auth/fetchSelfAndStore.js delete mode 100644 client-cra-legacy/src/util/auth/logout.js delete mode 100644 client-cra-legacy/src/util/helpers/calcDistance.js delete mode 100644 client-cra-legacy/src/util/helpers/formatDate.js delete mode 100644 client-cra-legacy/src/util/helpers/formatListingDesc.js delete mode 100644 client-cra-legacy/src/util/helpers/getDateDiff.js delete mode 100644 client-cra-legacy/src/util/helpers/getDateString.js delete mode 100644 client-cra-legacy/src/util/helpers/getFromNowDate.js delete mode 100644 client-cra-legacy/src/util/helpers/getNumericDate.js delete mode 100644 client-cra-legacy/src/util/helpers/getRegion.js delete mode 100644 client-cra-legacy/src/util/helpers/getShortAddr.js delete mode 100644 client-cra-legacy/src/util/helpers/getShortDateString.js delete mode 100644 client-cra-legacy/src/util/helpers/kmToMins.js delete mode 100644 client-cra-legacy/src/util/helpers/listingDatestring.js delete mode 100644 client-cra-legacy/src/util/helpers/signin.js delete mode 100644 client-cra-legacy/src/util/hooks/useChatOtherUser.js delete mode 100644 client-cra-legacy/src/util/hooks/useChatroom.js delete mode 100644 client-cra-legacy/src/util/hooks/useFilters.js delete mode 100644 client-cra-legacy/src/util/hooks/useIsDesktop.js delete mode 100644 client-cra-legacy/src/util/hooks/useIsMobile.js delete mode 100644 client-cra-legacy/src/util/hooks/useLocalStorage.js delete mode 100644 client-cra-legacy/src/util/hooks/useOnOutsideClick.js delete mode 100644 client-cra-legacy/src/util/hooks/useRouter.js delete mode 100644 client-cra-legacy/src/util/hooks/useScript.js delete mode 100644 client-cra-legacy/src/util/hooks/useUnreadChatrooms.js delete mode 100644 client-cra-legacy/src/util/hooks/useWindowSize.js delete mode 100644 client-cra-legacy/src/util/log.js delete mode 100644 client-cra-legacy/src/util/path/getQuery.js delete mode 100644 client-cra-legacy/src/util/path/updateQuery.js delete mode 100644 client-cra-legacy/src/util/socket.js delete mode 100644 client-cra-legacy/vite.config.js diff --git a/client-cra-legacy/.eslintrc.json b/client-cra-legacy/.eslintrc.json deleted file mode 100644 index 705a3ae..0000000 --- a/client-cra-legacy/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "env": { - "browser": true, - "es6": true - }, - "extends": [ - "plugin:react/recommended", - "airbnb" - ], - "globals": { - "Atomics": "readonly", - "SharedArrayBuffer": "readonly" - }, - "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": 2018, - "sourceType": "module" - }, - "plugins": [ - "react" - ], - "rules": { - "import/no-unresolved": "off", - "react/prop-types": "off", - "react/jsx-props-no-spreading": "off", - "react/destructuring-assignment": "off", - "no-underscore-dangle": "off", - "no-nested-ternary": "off", - "brace-style": ["error", "stroustrup"] - } -} \ No newline at end of file diff --git a/client-cra-legacy/.gitignore b/client-cra-legacy/.gitignore deleted file mode 100644 index d8d3a81..0000000 --- a/client-cra-legacy/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -#production -/build - -# misc -.DS_Store -.env -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/client-cra-legacy/.prettierrc b/client-cra-legacy/.prettierrc deleted file mode 100644 index 722b189..0000000 --- a/client-cra-legacy/.prettierrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "printWidth": 100, - "semi": false, - "singleQuote": true, - "jsxSingleQuote": true, - "jsxBracketSameLine": true, - "eslintIntegration": true, - "parser": "typescript", - "useTabs": false, - "tabWidth": 2, - "endOfLine": "auto" -} diff --git a/client-cra-legacy/README.md b/client-cra-legacy/README.md deleted file mode 100644 index 859d27a..0000000 --- a/client-cra-legacy/README.md +++ /dev/null @@ -1,68 +0,0 @@ -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
-You will also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.
-It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting - -### Analyzing the Bundle Size - -This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size - -### Making a Progressive Web App - -This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app - -### Advanced Configuration - -This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration - -### Deployment - -This section has moved here: https://facebook.github.io/create-react-app/docs/deployment - -### `npm run build` fails to minify - -This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify diff --git a/client-cra-legacy/index.html b/client-cra-legacy/index.html deleted file mode 100644 index 3cf0e17..0000000 --- a/client-cra-legacy/index.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - Cornlet - Sublets at Cornell - - - - - - -
- - - - - diff --git a/client-cra-legacy/index.jsx b/client-cra-legacy/index.jsx deleted file mode 100644 index e2b1bfe..0000000 --- a/client-cra-legacy/index.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - -`; - -const DefaultComponent = () => { - return ( - - DefaultComponent - - ) -}; - -export default DefaultComponent; diff --git a/client-cra-legacy/jsconfig.json b/client-cra-legacy/jsconfig.json deleted file mode 100644 index a47aa79..0000000 --- a/client-cra-legacy/jsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "paths": { - "src/*": ["src/*"] - } - } -} \ No newline at end of file diff --git a/client-cra-legacy/package-lock.json b/client-cra-legacy/package-lock.json deleted file mode 100644 index eb8fa8a..0000000 --- a/client-cra-legacy/package-lock.json +++ /dev/null @@ -1,11959 +0,0 @@ -{ - "name": "cornlet", - "version": "0.1.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "cornlet", - "version": "0.1.0", - "dependencies": { - "@material-ui/core": "^4.11.0", - "@material-ui/icons": "^4.11.2", - "@material-ui/lab": "^4.0.0-alpha.56", - "axios": "^0.21.2", - "body-scroll-lock": "^3.0.2", - "compressorjs": "^1.0.6", - "formik": "^2.0.3", - "generate-password": "^1.4.2", - "just-debounce-it": "^3.0.1", - "npm-run-all": "^4.1.5", - "react": "^16.10.2", - "react-datepicker": "^2.14.0", - "react-dom": "^16.10.2", - "react-google-maps": "^9.4.5", - "react-perfect-scrollbar": "^1.5.8", - "react-places-autocomplete": "^7.2.1", - "react-redux": "^7.1.1", - "react-router-dom": "^5.1.2", - "react-slick": "^0.25.2", - "recompose": "^0.30.0", - "redux": "^4.0.4", - "redux-logger": "^3.0.6", - "redux-persist": "^6.0.0", - "redux-thunk": "^2.3.0", - "slick-carousel": "^1.8.1", - "socket.io-client": "^2.3.0", - "source-map-explorer": "^2.4.2", - "styled-components": "^4.4.1", - "typescript": "^3.6.4", - "yup": "^0.27.0" - }, - "devDependencies": { - "@vitejs/plugin-react": "^4.2.1", - "eslint": "^6.7.2", - "eslint-config-airbnb": "^18.0.1", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-react": "^7.17.0", - "eslint-plugin-react-hooks": "^1.7.0", - "prettier": "2.4.1", - "vite": "^5.1.6" - }, - "engines": { - "node": "17.0.1", - "npm": "8.1.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", - "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", - "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, - "node_modules/@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "dependencies": { - "@emotion/memoize": "0.7.4" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@material-ui/core": { - "version": "4.12.4", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", - "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", - "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.5", - "@material-ui/system": "^4.12.2", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" - }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@material-ui/core/node_modules/@material-ui/styles": { - "version": "4.11.5", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", - "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", - "dependencies": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" - }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@material-ui/core/node_modules/@material-ui/system": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", - "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", - "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" - }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@material-ui/core/node_modules/@material-ui/utils": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", - "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", - "dependencies": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@material-ui/core/node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" - }, - "node_modules/@material-ui/core/node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/@material-ui/icons": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz", - "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==", - "dependencies": { - "@babel/runtime": "^7.4.4" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "@material-ui/core": "^4.0.0", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@material-ui/lab": { - "version": "4.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz", - "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", - "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "@material-ui/core": "^4.12.1", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@material-ui/lab/node_modules/@material-ui/utils": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", - "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", - "dependencies": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", - "peerDependencies": { - "@types/react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz", - "integrity": "sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.1.tgz", - "integrity": "sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.1.tgz", - "integrity": "sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.1.tgz", - "integrity": "sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.1.tgz", - "integrity": "sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.1.tgz", - "integrity": "sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.1.tgz", - "integrity": "sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.1.tgz", - "integrity": "sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.1.tgz", - "integrity": "sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.1.tgz", - "integrity": "sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.1.tgz", - "integrity": "sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.1.tgz", - "integrity": "sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.1.tgz", - "integrity": "sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", - "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/google-maps": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@types/google-maps/-/google-maps-3.2.6.tgz", - "integrity": "sha512-ySOadZErcnCnNG+Zkmv5n+QG9DyTt7Mkx5Yk1dTjjNPtD8ByFaf+klZ/CxzgYcweduWEijTP0ASkANl57D0PRQ==", - "peer": true, - "dependencies": { - "@types/google.maps": "*" - } - }, - "node_modules/@types/google.maps": { - "version": "3.55.4", - "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.4.tgz", - "integrity": "sha512-Ip3IfRs3RZjeC88V8FGnWQTQXeS5gkJedPSosN6DMi9Xs8buGTpsPq6UhREoZsGH+62VoQ6jiRBUR8R77If69w==", - "peer": true - }, - "node_modules/@types/googlemaps": { - "version": "3.43.3", - "resolved": "https://registry.npmjs.org/@types/googlemaps/-/googlemaps-3.43.3.tgz", - "integrity": "sha512-ZWNoz/O8MPEpiajvj7QiqCY8tTLFNqNZ/a+s+zTV58wFVNAvvqV4bdGfnsjTb5Cs4V6wEsLrX8XRhmnyYJ2Tdg==", - "deprecated": "Types for the Google Maps browser API have moved to @types/google.maps. Note: these types are not for the googlemaps npm package, which is a Node API.", - "peer": true - }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", - "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/markerclustererplus": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/@types/markerclustererplus/-/markerclustererplus-2.1.33.tgz", - "integrity": "sha512-ZDxsLUp8BmK9MVZZeQVDDzVrEXgRL0021AQcfXqfreFhdfZ9+PS0P6o4nZBvoIVYTmGSBemdCdI6mL6hf9yWvg==", - "peer": true, - "dependencies": { - "@types/google-maps": "*" - } - }, - "node_modules/@types/node": { - "version": "20.11.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.26.tgz", - "integrity": "sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" - }, - "node_modules/@types/react": { - "version": "16.14.57", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.57.tgz", - "integrity": "sha512-fuNq/GV1a6GgqSuVuC457vYeTbm4E1CUBQVZwSPxqYnRhIzSXCJ1gGqyv+PKhqLyfbKCga9dXHJDzv+4XE41fw==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-redux": { - "version": "7.1.33", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", - "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" - } - }, - "node_modules/@types/react-transition-group": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" - }, - "node_modules/ajv": { - "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", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.filter": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", - "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.4.tgz", - "integrity": "sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz", - "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", - "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true - }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dev": true, - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - }, - "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==" - }, - "node_modules/base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, - "node_modules/blueimp-canvas-to-blob": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz", - "integrity": "sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==" - }, - "node_modules/body-scroll-lock": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz", - "integrity": "sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", - "bin": { - "btoa": "bin/btoa.js" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", - "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/can-use-dom": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz", - "integrity": "sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==" - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001597", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz", - "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "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/change-emitter": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", - "integrity": "sha512-YXzt1cQ4a2jqazhcuSWEOc1K2q8g9H6eWNsyZgi640LDzRWVQ2eDe+Y/kVdftH+vYdPF2rgDb3dLdpxE1jvAxw==" - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/classnames": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" - } - }, - "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/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/component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" - }, - "node_modules/compressorjs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/compressorjs/-/compressorjs-1.2.1.tgz", - "integrity": "sha512-+geIjeRnPhQ+LLvvA7wxBQE5ddeLU7pJ3FsKFWirDw6veY3s9iLxAQEw7lXGHnhCJvBujEQWuNnGzZcvCvdkLQ==", - "dependencies": { - "blueimp-canvas-to-blob": "^3.29.0", - "is-blob": "^2.1.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/css-to-react-native": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.3.2.tgz", - "integrity": "sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==", - "dependencies": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^3.3.0" - } - }, - "node_modules/css-to-react-native/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - }, - "node_modules/css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "dependencies": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-diff": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", - "integrity": "sha512-yVn6RZmHiGnxRKR9sJb3iVV2XTF1Ghh2DiWRZ3dMnGc43yUdWWF/kX6lQyk3+P84iprfWKU/8zFTrlkvtFm1ug==" - }, - "node_modules/deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.700", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.700.tgz", - "integrity": "sha512-40dqKQ3F7C8fbBEmjSeJ+qEHCKzPyrP9SkeIBZ3wSCUH9nhWStrDz030XlDzlhNhlul1Z0fz7TpDFnsIzo4Jtg==" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/engine.io-client": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz", - "integrity": "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==", - "dependencies": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.6.2", - "yeast": "0.1.2" - } - }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/engine.io-client/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "dependencies": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "node_modules/enquire.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz", - "integrity": "sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.22.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", - "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.1", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.5", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", - "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", - "dev": true, - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.4", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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/eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz", - "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==", - "dev": true, - "dependencies": { - "eslint-config-airbnb-base": "^14.2.1", - "object.assign": "^4.1.2", - "object.entries": "^1.1.2" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-react": "^7.21.5", - "eslint-plugin-react-hooks": "^4 || ^3 || ^2.3.0 || ^1.7.0" - } - }, - "node_modules/eslint-config-airbnb/node_modules/eslint-config-airbnb-base": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", - "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.2" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", - "eslint-plugin-import": "^2.22.1" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.34.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.0.tgz", - "integrity": "sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlast": "^1.2.4", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.17", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7", - "object.hasown": "^1.1.3", - "object.values": "^1.1.7", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.10" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", - "dev": true, - "engines": { - "node": ">=7" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/esprima": { - "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" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "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 - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fbjs": { - "version": "0.8.18", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", - "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==", - "dependencies": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.30" - } - }, - "node_modules/fbjs/node_modules/core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js." - }, - "node_modules/fbjs/node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "dependencies": { - "flat-cache": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "node_modules/fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/formik": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz", - "integrity": "sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==", - "funding": [ - { - "type": "individual", - "url": "https://opencollective.com/formik" - } - ], - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.1", - "deepmerge": "^2.1.1", - "hoist-non-react-statics": "^3.3.0", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "react-fast-compare": "^2.0.1", - "tiny-warning": "^1.0.2", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "react": ">=16.8.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==" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generate-password": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/generate-password/-/generate-password-1.7.1.tgz", - "integrity": "sha512-9bVYY+16m7W7GczRBDqXE+VVuCX+bWNrfYKC/2p2JkZukFb2sKxT6E3zZ3mJGz7GMe5iRK0A/WawSL3jQfJuNQ==" - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/google-maps-infobox": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/google-maps-infobox/-/google-maps-infobox-2.0.0.tgz", - "integrity": "sha512-hTuWmWZZSOxf5D/z7l3/hTF1grgRvLG53BEKMdjiKOG+FcK/kH7vqseUeyIU9Zj2ZIqKTOaro0nknxpAuRq4Vw==" - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/gud": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dependencies": { - "isarray": "2.0.1" - } - }, - "node_modules/has-binary2/node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "node_modules/has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" - }, - "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/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "dependencies": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - }, - "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==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "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==", - "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.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "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==" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-blob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", - "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "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-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "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-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", - "dependencies": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "peer": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "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==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "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 - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json2mq": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", - "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", - "dependencies": { - "string-convert": "^0.2.0" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jss": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", - "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "csstype": "^3.0.2", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/jss" - } - }, - "node_modules/jss-plugin-camel-case": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", - "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "10.10.0" - } - }, - "node_modules/jss-plugin-default-unit": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", - "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0" - } - }, - "node_modules/jss-plugin-global": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", - "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0" - } - }, - "node_modules/jss-plugin-nested": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", - "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0", - "tiny-warning": "^1.0.2" - } - }, - "node_modules/jss-plugin-props-sort": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", - "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0" - } - }, - "node_modules/jss-plugin-rule-value-function": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", - "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0", - "tiny-warning": "^1.0.2" - } - }, - "node_modules/jss-plugin-vendor-prefixer": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", - "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "10.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/just-debounce-it": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", - "integrity": "sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ==" - }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/marker-clusterer-plus": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/marker-clusterer-plus/-/marker-clusterer-plus-2.1.4.tgz", - "integrity": "sha512-4WLZnYCkgsUfSC0pftldd0YrLNupSqVIEdxL979f3sXVMBHTUOF3gDa6cEuOk2z8UGyVGcANiNZgvVc333mrHA==" - }, - "node_modules/markerwithlabel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/markerwithlabel/-/markerwithlabel-2.0.2.tgz", - "integrity": "sha512-C/cbm1A0h/u54gwHk5ZJNdUU3V3+1BbCpRPMsMyFA7vF4yL+aB4rWpxACz29TpQ+cTg6/iQroExh0PMSRGtQFg==" - }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merge-anything": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-2.4.4.tgz", - "integrity": "sha512-l5XlriUDJKQT12bH+rVhAHjwIuXWdAIecGwsYjv2LJo+dA1AeRTmeQS+3QBpO6lEthBMDi2IUMpLC1yyRvGlwQ==", - "dependencies": { - "is-what": "^3.3.1" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "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/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dependencies": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", - "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", - "dev": true, - "dependencies": { - "array.prototype.filter": "^1.0.3", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0" - } - }, - "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "node_modules/parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/perfect-scrollbar": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz", - "integrity": "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/property-expr": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", - "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-datepicker": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-2.16.0.tgz", - "integrity": "sha512-TvcmSY27rn0JKvuJuIXNNS+niGQNdgtuG/CsBttVYhPOA9KmSw7c2PvQBPVEvzkyV+QPNJ8jN/KVJNj9uvopqA==", - "dependencies": { - "classnames": "^2.2.6", - "date-fns": "^2.0.1", - "prop-types": "^15.7.2", - "react-onclickoutside": "^6.9.0", - "react-popper": "^1.3.4" - }, - "peerDependencies": { - "react": "^16.9.0", - "react-dom": "^16.9.0" - } - }, - "node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" - } - }, - "node_modules/react-fast-compare": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", - "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" - }, - "node_modules/react-google-maps": { - "version": "9.4.5", - "resolved": "https://registry.npmjs.org/react-google-maps/-/react-google-maps-9.4.5.tgz", - "integrity": "sha512-8z5nX9DxIcBCXuEiurmRT1VXVwnzx0C6+3Es6lxB2/OyY2SLax2/LcDu6Aldxnl3HegefTL7NJzGeaKAJ61pOA==", - "dependencies": { - "babel-runtime": "^6.11.6", - "can-use-dom": "^0.1.0", - "google-maps-infobox": "^2.0.0", - "invariant": "^2.2.1", - "lodash": "^4.16.2", - "marker-clusterer-plus": "^2.1.4", - "markerwithlabel": "^2.0.1", - "prop-types": "^15.5.8", - "recompose": "^0.26.0", - "scriptjs": "^2.5.8", - "warning": "^3.0.0" - }, - "peerDependencies": { - "@types/googlemaps": "^3.0.0", - "@types/markerclustererplus": "^2.1.29", - "@types/react": "^15.0.0 || ^16.0.0", - "react": "^15.0.0 || ^16.0.0", - "react-dom": "^15.0.0 || ^16.0.0" - } - }, - "node_modules/react-google-maps/node_modules/hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" - }, - "node_modules/react-google-maps/node_modules/recompose": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz", - "integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==", - "dependencies": { - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^2.3.1", - "symbol-observable": "^1.0.4" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "node_modules/react-onclickoutside": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", - "integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==", - "funding": { - "type": "individual", - "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" - }, - "peerDependencies": { - "react": "^15.5.x || ^16.x || ^17.x || ^18.x", - "react-dom": "^15.5.x || ^16.x || ^17.x || ^18.x" - } - }, - "node_modules/react-perfect-scrollbar": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz", - "integrity": "sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==", - "dependencies": { - "perfect-scrollbar": "^1.5.0", - "prop-types": "^15.6.1" - }, - "peerDependencies": { - "react": ">=16.3.3", - "react-dom": ">=16.3.3" - } - }, - "node_modules/react-places-autocomplete": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/react-places-autocomplete/-/react-places-autocomplete-7.3.0.tgz", - "integrity": "sha512-86wcHC69JATvWBnIS/yCsBHLtwzOGcnx3Ye94u74yTrz1jLRC/txkVDkf6rvC+Jq3zNe/tAg/W53x0EaH1ZPPw==", - "dependencies": { - "lodash.debounce": "^4.0.8", - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": ">=0.14.7" - } - }, - "node_modules/react-popper": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", - "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", - "dependencies": { - "@babel/runtime": "^7.1.2", - "@hypnosphi/create-react-context": "^0.3.1", - "deep-equal": "^1.1.1", - "popper.js": "^1.14.4", - "prop-types": "^15.6.1", - "typed-styles": "^0.0.7", - "warning": "^4.0.2" - }, - "peerDependencies": { - "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/react-popper/node_modules/@hypnosphi/create-react-context": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", - "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", - "dependencies": { - "gud": "^1.0.0", - "warning": "^4.0.3" - }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": ">=0.14.0" - } - }, - "node_modules/react-popper/node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/react-popper/node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/react-redux": { - "version": "7.2.9", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", - "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", - "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" - }, - "peerDependencies": { - "react": "^16.8.3 || ^17 || ^18" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-router-dom": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", - "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.3.4", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/react-router-dom/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/react-router-dom/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/react-router-dom/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-router-dom/node_modules/react-router": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", - "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/react-slick": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.25.2.tgz", - "integrity": "sha512-8MNH/NFX/R7zF6W/w+FS5VXNyDusF+XDW1OU0SzODEU7wqYB+ZTGAiNJ++zVNAVqCAHdyCybScaUB+FCZOmBBw==", - "dependencies": { - "classnames": "^2.2.5", - "enquire.js": "^2.1.6", - "json2mq": "^0.2.0", - "lodash.debounce": "^4.0.8", - "resize-observer-polyfill": "^1.5.0" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.1 || ^16.0.0", - "react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0" - } - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/recompose": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz", - "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^2.3.1", - "react-lifecycles-compat": "^3.0.2", - "symbol-observable": "^1.0.4" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/recompose/node_modules/hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" - }, - "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-logger": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-3.0.6.tgz", - "integrity": "sha512-JoCIok7bg/XpqA1JqCqXFypuqBbQzGQySrhFzewB7ThcnysTO30l4VCst86AuB9T9tuT03MAA56Jw2PNhRSNCg==", - "dependencies": { - "deep-diff": "^0.3.5" - } - }, - "node_modules/redux-persist": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", - "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", - "peerDependencies": { - "redux": ">4.0.0" - } - }, - "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/reflect.getprototypeof": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", - "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0", - "get-intrinsic": "^1.2.3", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true, - "engines": { - "node": ">=6.5.0" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rollup": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.1.tgz", - "integrity": "sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.1", - "@rollup/rollup-android-arm64": "4.12.1", - "@rollup/rollup-darwin-arm64": "4.12.1", - "@rollup/rollup-darwin-x64": "4.12.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.1", - "@rollup/rollup-linux-arm64-gnu": "4.12.1", - "@rollup/rollup-linux-arm64-musl": "4.12.1", - "@rollup/rollup-linux-riscv64-gnu": "4.12.1", - "@rollup/rollup-linux-x64-gnu": "4.12.1", - "@rollup/rollup-linux-x64-musl": "4.12.1", - "@rollup/rollup-win32-arm64-msvc": "4.12.1", - "@rollup/rollup-win32-ia32-msvc": "4.12.1", - "@rollup/rollup-win32-x64-msvc": "4.12.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/scriptjs": { - "version": "2.5.9", - "resolved": "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz", - "integrity": "sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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 - }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/slice-ansi/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/slick-carousel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz", - "integrity": "sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==", - "peerDependencies": { - "jquery": ">=1.8.0" - } - }, - "node_modules/socket.io-client": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz", - "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==", - "dependencies": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "engine.io-client": "~3.5.0", - "has-binary2": "~1.0.2", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - } - }, - "node_modules/socket.io-client/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/socket.io-client/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/socket.io-parser": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz", - "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==", - "dependencies": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" - } - }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/socket.io-parser/node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "node_modules/socket.io-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-explorer": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.5.3.tgz", - "integrity": "sha512-qfUGs7UHsOBE5p/lGfQdaAj/5U/GWYBw2imEpD6UQNkqElYonkow8t+HBL1qqIl3CuGZx7n8/CQo4x1HwSHhsg==", - "dependencies": { - "btoa": "^1.2.1", - "chalk": "^4.1.0", - "convert-source-map": "^1.7.0", - "ejs": "^3.1.5", - "escape-html": "^1.0.3", - "glob": "^7.1.6", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "open": "^7.3.1", - "source-map": "^0.7.4", - "temp": "^0.9.4", - "yargs": "^16.2.0" - }, - "bin": { - "sme": "bin/cli.js", - "source-map-explorer": "bin/cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/source-map-explorer/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map-explorer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/source-map-explorer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/source-map-explorer/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/source-map-explorer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/source-map-explorer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/source-map-explorer/node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/source-map-explorer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map-explorer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-explorer/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map-explorer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map-explorer/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/source-map-explorer/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/source-map-explorer/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/source-map-explorer/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" - }, - "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 - }, - "node_modules/string-convert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", - "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==" - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", - "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/styled-components": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-4.4.1.tgz", - "integrity": "sha512-RNqj14kYzw++6Sr38n7197xG33ipEOktGElty4I70IKzQF1jzaD1U4xQ+Ny/i03UUhHlC5NWEO+d8olRCDji6g==", - "hasInstallScript": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@emotion/is-prop-valid": "^0.8.1", - "@emotion/unitless": "^0.7.0", - "babel-plugin-styled-components": ">= 1", - "css-to-react-native": "^2.2.2", - "memoize-one": "^5.0.0", - "merge-anything": "^2.2.4", - "prop-types": "^15.5.4", - "react-is": "^16.6.0", - "stylis": "^3.5.0", - "stylis-rule-sheet": "^0.0.10", - "supports-color": "^5.5.0" - }, - "peerDependencies": { - "react": ">= 16.3.0", - "react-dom": ">= 16.3.0" - } - }, - "node_modules/styled-components/node_modules/babel-plugin-styled-components": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", - "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "lodash": "^4.17.21", - "picomatch": "^2.3.1" - }, - "peerDependencies": { - "styled-components": ">= 2" - } - }, - "node_modules/styled-components/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/stylis": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", - "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" - }, - "node_modules/stylis-rule-sheet": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", - "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==", - "peerDependencies": { - "stylis": "^3.5.0" - } - }, - "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/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/synchronous-promise": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", - "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==" - }, - "node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/table/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==", - "dev": true - }, - "node_modules/table/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/table/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==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "dependencies": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser": { - "version": "5.29.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", - "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/terser/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==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "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 - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" - }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", - "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-styles": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", - "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" - }, - "node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ua-parser-js": { - "version": "0.7.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", - "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-browserslist-db/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/uri-js": { - "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" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "node_modules/vite": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", - "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/vite/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/vite/node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==" - }, - "node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" - }, - "node_modules/yup": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/yup/-/yup-0.27.0.tgz", - "integrity": "sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "fn-name": "~2.0.1", - "lodash": "^4.17.11", - "property-expr": "^1.5.0", - "synchronous-promise": "^2.0.6", - "toposort": "^2.0.2" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - } - }, - "@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==" - }, - "@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "dependencies": { - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - } - } - }, - "@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "requires": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "requires": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "requires": { - "@babel/types": "^7.22.15" - } - }, - "@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==" - }, - "@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" - }, - "@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==" - }, - "@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", - "requires": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0" - } - }, - "@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==" - }, - "@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", - "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", - "requires": { - "regenerator-runtime": "^0.14.0" - } - }, - "@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", - "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" - } - }, - "@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", - "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - } - } - }, - "@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", - "requires": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } - }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, - "@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "requires": { - "@emotion/memoize": "0.7.4" - } - }, - "@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "dev": true, - "optional": true - }, - "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" - }, - "@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@material-ui/core": { - "version": "4.12.4", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", - "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.5", - "@material-ui/system": "^4.12.2", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" - }, - "dependencies": { - "@material-ui/styles": { - "version": "4.11.5", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", - "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", - "requires": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" - } - }, - "@material-ui/system": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", - "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" - } - }, - "@material-ui/utils": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", - "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", - "requires": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - } - }, - "csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" - }, - "react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - } - } - }, - "@material-ui/icons": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz", - "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==", - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@material-ui/lab": { - "version": "4.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz", - "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==", - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - }, - "dependencies": { - "@material-ui/utils": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", - "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", - "requires": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - } - } - } - }, - "@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", - "requires": {} - }, - "@rollup/rollup-android-arm-eabi": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz", - "integrity": "sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-android-arm64": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.1.tgz", - "integrity": "sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==", - "dev": true, - "optional": true - }, - "@rollup/rollup-darwin-arm64": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.1.tgz", - "integrity": "sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==", - "dev": true, - "optional": true - }, - "@rollup/rollup-darwin-x64": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.1.tgz", - "integrity": "sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.1.tgz", - "integrity": "sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.1.tgz", - "integrity": "sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm64-musl": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.1.tgz", - "integrity": "sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.1.tgz", - "integrity": "sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-x64-gnu": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.1.tgz", - "integrity": "sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-x64-musl": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.1.tgz", - "integrity": "sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.1.tgz", - "integrity": "sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.1.tgz", - "integrity": "sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-x64-msvc": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.1.tgz", - "integrity": "sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==", - "dev": true, - "optional": true - }, - "@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", - "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", - "dev": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "@types/google-maps": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@types/google-maps/-/google-maps-3.2.6.tgz", - "integrity": "sha512-ySOadZErcnCnNG+Zkmv5n+QG9DyTt7Mkx5Yk1dTjjNPtD8ByFaf+klZ/CxzgYcweduWEijTP0ASkANl57D0PRQ==", - "peer": true, - "requires": { - "@types/google.maps": "*" - } - }, - "@types/google.maps": { - "version": "3.55.4", - "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.4.tgz", - "integrity": "sha512-Ip3IfRs3RZjeC88V8FGnWQTQXeS5gkJedPSosN6DMi9Xs8buGTpsPq6UhREoZsGH+62VoQ6jiRBUR8R77If69w==", - "peer": true - }, - "@types/googlemaps": { - "version": "3.43.3", - "resolved": "https://registry.npmjs.org/@types/googlemaps/-/googlemaps-3.43.3.tgz", - "integrity": "sha512-ZWNoz/O8MPEpiajvj7QiqCY8tTLFNqNZ/a+s+zTV58wFVNAvvqV4bdGfnsjTb5Cs4V6wEsLrX8XRhmnyYJ2Tdg==", - "peer": true - }, - "@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/markerclustererplus": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/@types/markerclustererplus/-/markerclustererplus-2.1.33.tgz", - "integrity": "sha512-ZDxsLUp8BmK9MVZZeQVDDzVrEXgRL0021AQcfXqfreFhdfZ9+PS0P6o4nZBvoIVYTmGSBemdCdI6mL6hf9yWvg==", - "peer": true, - "requires": { - "@types/google-maps": "*" - } - }, - "@types/node": { - "version": "20.11.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.26.tgz", - "integrity": "sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "undici-types": "~5.26.4" - } - }, - "@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" - }, - "@types/react": { - "version": "16.14.57", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.57.tgz", - "integrity": "sha512-fuNq/GV1a6GgqSuVuC457vYeTbm4E1CUBQVZwSPxqYnRhIzSXCJ1gGqyv+PKhqLyfbKCga9dXHJDzv+4XE41fw==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-redux": { - "version": "7.1.33", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", - "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", - "requires": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" - } - }, - "@types/react-transition-group": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", - "requires": { - "@types/react": "*" - } - }, - "@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" - }, - "@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", - "dev": true, - "requires": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "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==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "requires": { - "dequal": "^2.0.3" - } - }, - "array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "requires": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - } - }, - "array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - } - }, - "array.prototype.filter": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", - "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, - "array.prototype.findlast": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.4.tgz", - "integrity": "sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "array.prototype.findlastindex": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz", - "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.tosorted": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", - "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "requires": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - } - }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, - "ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" - }, - "asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.3" - } - }, - "available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "requires": { - "possible-typed-array-names": "^1.0.0" - } - }, - "axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", - "dev": true - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dev": true, - "requires": { - "dequal": "^2.0.3" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" - }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, - "blueimp-canvas-to-blob": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz", - "integrity": "sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==" - }, - "body-scroll-lock": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz", - "integrity": "sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "requires": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - } - }, - "btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "optional": true, - "peer": true - }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", - "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==" - }, - "can-use-dom": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz", - "integrity": "sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==" - }, - "caniuse-lite": { - "version": "1.0.30001597", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz", - "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "change-emitter": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", - "integrity": "sha512-YXzt1cQ4a2jqazhcuSWEOc1K2q8g9H6eWNsyZgi640LDzRWVQ2eDe+Y/kVdftH+vYdPF2rgDb3dLdpxE1jvAxw==" - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "classnames": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" - }, - "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==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" - }, - "component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==" - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" - }, - "compressorjs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/compressorjs/-/compressorjs-1.2.1.tgz", - "integrity": "sha512-+geIjeRnPhQ+LLvvA7wxBQE5ddeLU7pJ3FsKFWirDw6veY3s9iLxAQEw7lXGHnhCJvBujEQWuNnGzZcvCvdkLQ==", - "requires": { - "blueimp-canvas-to-blob": "^3.29.0", - "is-blob": "^2.1.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } - }, - "css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==" - }, - "css-to-react-native": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.3.2.tgz", - "integrity": "sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==", - "requires": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^3.3.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "requires": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" - } - }, - "csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, - "date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "requires": { - "@babel/runtime": "^7.21.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "deep-diff": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", - "integrity": "sha512-yVn6RZmHiGnxRKR9sJb3iVV2XTF1Ghh2DiWRZ3dMnGc43yUdWWF/kX6lQyk3+P84iprfWKU/8zFTrlkvtFm1ug==" - }, - "deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "requires": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" - }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", - "requires": { - "jake": "^10.8.5" - } - }, - "electron-to-chromium": { - "version": "1.4.700", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.700.tgz", - "integrity": "sha512-40dqKQ3F7C8fbBEmjSeJ+qEHCKzPyrP9SkeIBZ3wSCUH9nhWStrDz030XlDzlhNhlul1Z0fz7TpDFnsIzo4Jtg==" - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "engine.io-client": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz", - "integrity": "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==", - "requires": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.6.2", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} - } - } - }, - "engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "enquire.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz", - "integrity": "sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.22.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", - "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", - "requires": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.1", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.5", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" - }, - "es-iterator-helpers": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", - "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", - "dev": true, - "requires": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.4", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.0" - } - }, - "es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "requires": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - } - }, - "es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "dev": true, - "requires": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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==" - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-config-airbnb": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz", - "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==", - "dev": true, - "requires": { - "eslint-config-airbnb-base": "^14.2.1", - "object.assign": "^4.1.2", - "object.entries": "^1.1.2" - }, - "dependencies": { - "eslint-config-airbnb-base": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", - "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.2" - } - } - } - }, - "eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "dev": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" - } - }, - "eslint-plugin-react": { - "version": "7.34.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.0.tgz", - "integrity": "sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==", - "dev": true, - "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlast": "^1.2.4", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.17", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7", - "object.hasown": "^1.1.3", - "object.values": "^1.1.7", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.10" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "esprima": { - "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 - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "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 - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fbjs": { - "version": "0.8.18", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", - "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.30" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==" - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - } - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA==" - }, - "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, - "formik": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz", - "integrity": "sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==", - "requires": { - "@types/hoist-non-react-statics": "^3.3.1", - "deepmerge": "^2.1.1", - "hoist-non-react-statics": "^3.3.0", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "react-fast-compare": "^2.0.1", - "tiny-warning": "^1.0.2", - "tslib": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - }, - "generate-password": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/generate-password/-/generate-password-1.7.1.tgz", - "integrity": "sha512-9bVYY+16m7W7GczRBDqXE+VVuCX+bWNrfYKC/2p2JkZukFb2sKxT6E3zZ3mJGz7GMe5iRK0A/WawSL3jQfJuNQ==" - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "requires": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "requires": { - "define-properties": "^1.1.3" - } - }, - "google-maps-infobox": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/google-maps-infobox/-/google-maps-infobox-2.0.0.tgz", - "integrity": "sha512-hTuWmWZZSOxf5D/z7l3/hTF1grgRvLG53BEKMdjiKOG+FcK/kH7vqseUeyIU9Zj2ZIqKTOaro0nknxpAuRq4Vw==" - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "gud": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" - }, - "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==" - }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "requires": { - "has-symbols": "^1.0.3" - } - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "requires": { - "function-bind": "^1.1.2" - } - }, - "history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "requires": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "requires": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "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==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-blob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", - "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==" - }, - "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==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - }, - "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "requires": { - "hasown": "^2.0.0" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" - }, - "is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "requires": { - "call-bind": "^1.0.7" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "requires": { - "which-typed-array": "^1.1.14" - } - }, - "is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" - } - }, - "is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, - "iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "requires": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "peer": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "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==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "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 - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json2mq": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", - "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", - "requires": { - "string-convert": "^0.2.0" - } - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jss": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", - "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", - "requires": { - "@babel/runtime": "^7.3.1", - "csstype": "^3.0.2", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-camel-case": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", - "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", - "requires": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "10.10.0" - } - }, - "jss-plugin-default-unit": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", - "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0" - } - }, - "jss-plugin-global": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", - "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0" - } - }, - "jss-plugin-nested": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", - "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-props-sort": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", - "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0" - } - }, - "jss-plugin-rule-value-function": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", - "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.10.0", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-vendor-prefixer": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", - "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", - "requires": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "10.10.0" - } - }, - "jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - } - }, - "just-debounce-it": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", - "integrity": "sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ==" - }, - "language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "requires": { - "language-subtag-registry": "^0.3.20" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - } - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - } - }, - "marker-clusterer-plus": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/marker-clusterer-plus/-/marker-clusterer-plus-2.1.4.tgz", - "integrity": "sha512-4WLZnYCkgsUfSC0pftldd0YrLNupSqVIEdxL979f3sXVMBHTUOF3gDa6cEuOk2z8UGyVGcANiNZgvVc333mrHA==" - }, - "markerwithlabel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/markerwithlabel/-/markerwithlabel-2.0.2.tgz", - "integrity": "sha512-C/cbm1A0h/u54gwHk5ZJNdUU3V3+1BbCpRPMsMyFA7vF4yL+aB4rWpxACz29TpQ+cTg6/iQroExh0PMSRGtQFg==" - }, - "memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==" - }, - "merge-anything": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-2.4.4.tgz", - "integrity": "sha512-l5XlriUDJKQT12bH+rVhAHjwIuXWdAIecGwsYjv2LJo+dA1AeRTmeQS+3QBpO6lEthBMDi2IUMpLC1yyRvGlwQ==", - "requires": { - "is-what": "^3.3.1" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } - }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" - }, - "object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "object.groupby": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", - "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", - "dev": true, - "requires": { - "array.prototype.filter": "^1.0.3", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0" - } - }, - "object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dev": true, - "requires": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "dependencies": { - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - } - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - } - } - }, - "perfect-scrollbar": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz", - "integrity": "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==" - }, - "popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" - }, - "possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "property-expr": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", - "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-datepicker": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-2.16.0.tgz", - "integrity": "sha512-TvcmSY27rn0JKvuJuIXNNS+niGQNdgtuG/CsBttVYhPOA9KmSw7c2PvQBPVEvzkyV+QPNJ8jN/KVJNj9uvopqA==", - "requires": { - "classnames": "^2.2.6", - "date-fns": "^2.0.1", - "prop-types": "^15.7.2", - "react-onclickoutside": "^6.9.0", - "react-popper": "^1.3.4" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "react-fast-compare": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", - "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" - }, - "react-google-maps": { - "version": "9.4.5", - "resolved": "https://registry.npmjs.org/react-google-maps/-/react-google-maps-9.4.5.tgz", - "integrity": "sha512-8z5nX9DxIcBCXuEiurmRT1VXVwnzx0C6+3Es6lxB2/OyY2SLax2/LcDu6Aldxnl3HegefTL7NJzGeaKAJ61pOA==", - "requires": { - "babel-runtime": "^6.11.6", - "can-use-dom": "^0.1.0", - "google-maps-infobox": "^2.0.0", - "invariant": "^2.2.1", - "lodash": "^4.16.2", - "marker-clusterer-plus": "^2.1.4", - "markerwithlabel": "^2.0.1", - "prop-types": "^15.5.8", - "recompose": "^0.26.0", - "scriptjs": "^2.5.8", - "warning": "^3.0.0" - }, - "dependencies": { - "hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" - }, - "recompose": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz", - "integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==", - "requires": { - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^2.3.1", - "symbol-observable": "^1.0.4" - } - } - } - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "react-onclickoutside": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", - "integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==", - "requires": {} - }, - "react-perfect-scrollbar": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz", - "integrity": "sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==", - "requires": { - "perfect-scrollbar": "^1.5.0", - "prop-types": "^15.6.1" - } - }, - "react-places-autocomplete": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/react-places-autocomplete/-/react-places-autocomplete-7.3.0.tgz", - "integrity": "sha512-86wcHC69JATvWBnIS/yCsBHLtwzOGcnx3Ye94u74yTrz1jLRC/txkVDkf6rvC+Jq3zNe/tAg/W53x0EaH1ZPPw==", - "requires": { - "lodash.debounce": "^4.0.8", - "prop-types": "^15.5.8" - } - }, - "react-popper": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", - "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", - "requires": { - "@babel/runtime": "^7.1.2", - "@hypnosphi/create-react-context": "^0.3.1", - "deep-equal": "^1.1.1", - "popper.js": "^1.14.4", - "prop-types": "^15.6.1", - "typed-styles": "^0.0.7", - "warning": "^4.0.2" - }, - "dependencies": { - "@hypnosphi/create-react-context": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", - "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", - "requires": { - "gud": "^1.0.0", - "warning": "^4.0.3" - } - }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" - }, - "warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "requires": { - "loose-envify": "^1.0.0" - } - } - } - }, - "react-redux": { - "version": "7.2.9", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", - "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", - "requires": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", - "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" - } - }, - "react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true - }, - "react-router-dom": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", - "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", - "requires": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.3.4", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "requires": { - "isarray": "0.0.1" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "react-router": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", - "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", - "requires": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - } - } - }, - "react-slick": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.25.2.tgz", - "integrity": "sha512-8MNH/NFX/R7zF6W/w+FS5VXNyDusF+XDW1OU0SzODEU7wqYB+ZTGAiNJ++zVNAVqCAHdyCybScaUB+FCZOmBBw==", - "requires": { - "classnames": "^2.2.5", - "enquire.js": "^2.1.6", - "json2mq": "^0.2.0", - "lodash.debounce": "^4.0.8", - "resize-observer-polyfill": "^1.5.0" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "recompose": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz", - "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==", - "requires": { - "@babel/runtime": "^7.0.0", - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^2.3.1", - "react-lifecycles-compat": "^3.0.2", - "symbol-observable": "^1.0.4" - }, - "dependencies": { - "hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" - } - } - }, - "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==", - "requires": { - "@babel/runtime": "^7.9.2" - } - }, - "redux-logger": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-3.0.6.tgz", - "integrity": "sha512-JoCIok7bg/XpqA1JqCqXFypuqBbQzGQySrhFzewB7ThcnysTO30l4VCst86AuB9T9tuT03MAA56Jw2PNhRSNCg==", - "requires": { - "deep-diff": "^0.3.5" - } - }, - "redux-persist": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", - "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", - "requires": {} - }, - "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==", - "requires": {} - }, - "reflect.getprototypeof": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", - "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0", - "get-intrinsic": "^1.2.3", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - } - }, - "regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, - "regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "requires": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "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==" - }, - "resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - }, - "resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.1.tgz", - "integrity": "sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==", - "dev": true, - "requires": { - "@rollup/rollup-android-arm-eabi": "4.12.1", - "@rollup/rollup-android-arm64": "4.12.1", - "@rollup/rollup-darwin-arm64": "4.12.1", - "@rollup/rollup-darwin-x64": "4.12.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.1", - "@rollup/rollup-linux-arm64-gnu": "4.12.1", - "@rollup/rollup-linux-arm64-musl": "4.12.1", - "@rollup/rollup-linux-riscv64-gnu": "4.12.1", - "@rollup/rollup-linux-x64-gnu": "4.12.1", - "@rollup/rollup-linux-x64-musl": "4.12.1", - "@rollup/rollup-win32-arm64-msvc": "4.12.1", - "@rollup/rollup-win32-ia32-msvc": "4.12.1", - "@rollup/rollup-win32-x64-msvc": "4.12.1", - "@types/estree": "1.0.5", - "fsevents": "~2.3.2" - }, - "dependencies": { - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true - } - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "requires": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - } - }, - "safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "scriptjs": { - "version": "2.5.9", - "resolved": "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz", - "integrity": "sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - }, - "shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" - }, - "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } - }, - "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 - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "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==", - "dev": true - } - } - }, - "slick-carousel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz", - "integrity": "sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==", - "requires": {} - }, - "socket.io-client": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz", - "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==", - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "engine.io-client": "~3.5.0", - "has-binary2": "~1.0.2", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "socket.io-parser": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz", - "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==", - "requires": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "peer": true - }, - "source-map-explorer": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.5.3.tgz", - "integrity": "sha512-qfUGs7UHsOBE5p/lGfQdaAj/5U/GWYBw2imEpD6UQNkqElYonkow8t+HBL1qqIl3CuGZx7n8/CQo4x1HwSHhsg==", - "requires": { - "btoa": "^1.2.1", - "chalk": "^4.1.0", - "convert-source-map": "^1.7.0", - "ejs": "^3.1.5", - "escape-html": "^1.0.3", - "glob": "^7.1.6", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "open": "^7.3.1", - "source-map": "^0.7.4", - "temp": "^0.9.4", - "yargs": "^16.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "requires": { - "duplexer": "^0.1.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - } - } - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "string-convert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", - "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - } - }, - "string.prototype.padend": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", - "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "styled-components": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-4.4.1.tgz", - "integrity": "sha512-RNqj14kYzw++6Sr38n7197xG33ipEOktGElty4I70IKzQF1jzaD1U4xQ+Ny/i03UUhHlC5NWEO+d8olRCDji6g==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@emotion/is-prop-valid": "^0.8.1", - "@emotion/unitless": "^0.7.0", - "babel-plugin-styled-components": ">= 1", - "css-to-react-native": "^2.2.2", - "memoize-one": "^5.0.0", - "merge-anything": "^2.2.4", - "prop-types": "^15.5.4", - "react-is": "^16.6.0", - "stylis": "^3.5.0", - "stylis-rule-sheet": "^0.0.10", - "supports-color": "^5.5.0" - }, - "dependencies": { - "babel-plugin-styled-components": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", - "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "lodash": "^4.17.21", - "picomatch": "^2.3.1" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "stylis": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", - "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" - }, - "stylis-rule-sheet": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", - "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==", - "requires": {} - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, - "synchronous-promise": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", - "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==" - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "requires": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - } - }, - "terser": { - "version": "5.29.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", - "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "optional": true, - "peer": true - }, - "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==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==" - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - }, - "toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" - }, - "tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", - "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - } - }, - "typed-styles": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", - "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" - }, - "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" - }, - "ua-parser-js": { - "version": "0.7.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", - "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==" - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, - "optional": true, - "peer": true - }, - "update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "dependencies": { - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - } - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "vite": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", - "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==", - "dev": true, - "requires": { - "esbuild": "^0.19.3", - "fsevents": "~2.3.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" - }, - "dependencies": { - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "requires": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - } - } - }, - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "requires": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - } - }, - "which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "requires": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - } - }, - "which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - } - }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" - }, - "yup": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/yup/-/yup-0.27.0.tgz", - "integrity": "sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==", - "requires": { - "@babel/runtime": "^7.0.0", - "fn-name": "~2.0.1", - "lodash": "^4.17.11", - "property-expr": "^1.5.0", - "synchronous-promise": "^2.0.6", - "toposort": "^2.0.2" - } - } - } -} diff --git a/client-cra-legacy/package.json b/client-cra-legacy/package.json deleted file mode 100644 index 6fe264d..0000000 --- a/client-cra-legacy/package.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": "cornlet", - "version": "0.1.0", - "private": true, - "type": "module", - "dependencies": { - "@material-ui/core": "^4.11.0", - "@material-ui/icons": "^4.11.2", - "@material-ui/lab": "^4.0.0-alpha.56", - "axios": "^0.21.2", - "body-scroll-lock": "^3.0.2", - "compressorjs": "^1.0.6", - "formik": "^2.0.3", - "generate-password": "^1.4.2", - "just-debounce-it": "^3.0.1", - "npm-run-all": "^4.1.5", - "react": "^16.10.2", - "react-datepicker": "^2.14.0", - "react-dom": "^16.10.2", - "react-google-maps": "^9.4.5", - "react-perfect-scrollbar": "^1.5.8", - "react-places-autocomplete": "^7.2.1", - "react-redux": "^7.1.1", - "react-router-dom": "^5.1.2", - "react-slick": "^0.25.2", - "recompose": "^0.30.0", - "redux": "^4.0.4", - "redux-logger": "^3.0.6", - "redux-persist": "^6.0.0", - "redux-thunk": "^2.3.0", - "slick-carousel": "^1.8.1", - "socket.io-client": "^2.3.0", - "source-map-explorer": "^2.4.2", - "styled-components": "^4.4.1", - "typescript": "^3.6.4", - "yup": "^0.27.0" - }, - "scripts": { - "start": "NODE_ENV=production && HTTPS=true && vite", - "dev": "vite preview", - "dev-alone": "react-scripts start", - "build": "vite build", - "test": "react-scripts test", - "eject": "react-scripts eject", - "lint": "eslint ./src --fix --ext .jsx", - "analyze": "source-map-explorer 'build/static/js/*.js'" - }, - "engines": { - "npm": "8.1.0", - "node": "17.0.1" - }, - "proxy": "http://localhost:8081", - "eslintConfig": { - "extends": "react-app" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "@vitejs/plugin-react": "^4.2.1", - "eslint": "^6.7.2", - "eslint-config-airbnb": "^18.0.1", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-react": "^7.17.0", - "eslint-plugin-react-hooks": "^1.7.0", - "prettier": "2.4.1", - "vite": "^5.1.6" - } -} diff --git a/client-cra-legacy/public/manifest.json b/client-cra-legacy/public/manifest.json deleted file mode 100644 index 83102a7..0000000 --- a/client-cra-legacy/public/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "short_name": "Cornlet", - "name": "Cornlet - Sublets for Cornell", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/client-cra-legacy/public/robots.txt b/client-cra-legacy/public/robots.txt deleted file mode 100644 index 01b0f9a..0000000 --- a/client-cra-legacy/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * diff --git a/client-cra-legacy/src/assets/illustrations/no-bookmarks.svg b/client-cra-legacy/src/assets/illustrations/no-bookmarks.svg deleted file mode 100644 index 4149f43..0000000 --- a/client-cra-legacy/src/assets/illustrations/no-bookmarks.svg +++ /dev/null @@ -1 +0,0 @@ -collecting \ No newline at end of file diff --git a/client-cra-legacy/src/assets/illustrations/no-chatrooms.svg b/client-cra-legacy/src/assets/illustrations/no-chatrooms.svg deleted file mode 100644 index 5865076..0000000 --- a/client-cra-legacy/src/assets/illustrations/no-chatrooms.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/illustrations/no-listings.svg b/client-cra-legacy/src/assets/illustrations/no-listings.svg deleted file mode 100644 index 9bbb808..0000000 --- a/client-cra-legacy/src/assets/illustrations/no-listings.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/aircon.svg b/client-cra-legacy/src/assets/svgs/aircon.svg deleted file mode 100644 index a49038f..0000000 --- a/client-cra-legacy/src/assets/svgs/aircon.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/avatar.svg b/client-cra-legacy/src/assets/svgs/avatar.svg deleted file mode 100644 index 5d2e824..0000000 --- a/client-cra-legacy/src/assets/svgs/avatar.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/bathroom.svg b/client-cra-legacy/src/assets/svgs/bathroom.svg deleted file mode 100644 index 8306c04..0000000 --- a/client-cra-legacy/src/assets/svgs/bathroom.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/bed-outlined.svg b/client-cra-legacy/src/assets/svgs/bed-outlined.svg deleted file mode 100644 index 60f3feb..0000000 --- a/client-cra-legacy/src/assets/svgs/bed-outlined.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/bed.svg b/client-cra-legacy/src/assets/svgs/bed.svg deleted file mode 100644 index d5f1665..0000000 --- a/client-cra-legacy/src/assets/svgs/bed.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/bedroom.svg b/client-cra-legacy/src/assets/svgs/bedroom.svg deleted file mode 100644 index 025cdaa..0000000 --- a/client-cra-legacy/src/assets/svgs/bedroom.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/bin.svg b/client-cra-legacy/src/assets/svgs/bin.svg deleted file mode 100644 index eb198c0..0000000 --- a/client-cra-legacy/src/assets/svgs/bin.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/bookmark-filled.svg b/client-cra-legacy/src/assets/svgs/bookmark-filled.svg deleted file mode 100644 index 64808bc..0000000 --- a/client-cra-legacy/src/assets/svgs/bookmark-filled.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/bookmark.svg b/client-cra-legacy/src/assets/svgs/bookmark.svg deleted file mode 100644 index f854d09..0000000 --- a/client-cra-legacy/src/assets/svgs/bookmark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/burger.svg b/client-cra-legacy/src/assets/svgs/burger.svg deleted file mode 100644 index bba19aa..0000000 --- a/client-cra-legacy/src/assets/svgs/burger.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/bus.svg b/client-cra-legacy/src/assets/svgs/bus.svg deleted file mode 100644 index 768ba4a..0000000 --- a/client-cra-legacy/src/assets/svgs/bus.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/calendar.svg b/client-cra-legacy/src/assets/svgs/calendar.svg deleted file mode 100644 index 06b2c0c..0000000 --- a/client-cra-legacy/src/assets/svgs/calendar.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/car.svg b/client-cra-legacy/src/assets/svgs/car.svg deleted file mode 100644 index 77d7f9a..0000000 --- a/client-cra-legacy/src/assets/svgs/car.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/chat-square.svg b/client-cra-legacy/src/assets/svgs/chat-square.svg deleted file mode 100644 index 1027e73..0000000 --- a/client-cra-legacy/src/assets/svgs/chat-square.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/chat.svg b/client-cra-legacy/src/assets/svgs/chat.svg deleted file mode 100644 index 7a52b67..0000000 --- a/client-cra-legacy/src/assets/svgs/chat.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/close-material.svg b/client-cra-legacy/src/assets/svgs/close-material.svg deleted file mode 100644 index b06273c..0000000 --- a/client-cra-legacy/src/assets/svgs/close-material.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/close.svg b/client-cra-legacy/src/assets/svgs/close.svg deleted file mode 100644 index c5e795d..0000000 --- a/client-cra-legacy/src/assets/svgs/close.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/down.svg b/client-cra-legacy/src/assets/svgs/down.svg deleted file mode 100644 index bcccf7a..0000000 --- a/client-cra-legacy/src/assets/svgs/down.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/eye.svg b/client-cra-legacy/src/assets/svgs/eye.svg deleted file mode 100644 index cf22164..0000000 --- a/client-cra-legacy/src/assets/svgs/eye.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/face.svg b/client-cra-legacy/src/assets/svgs/face.svg deleted file mode 100644 index 4c33970..0000000 --- a/client-cra-legacy/src/assets/svgs/face.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/filter.svg b/client-cra-legacy/src/assets/svgs/filter.svg deleted file mode 100644 index 7fb071d..0000000 --- a/client-cra-legacy/src/assets/svgs/filter.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/google.svg b/client-cra-legacy/src/assets/svgs/google.svg deleted file mode 100644 index ee96cf2..0000000 --- a/client-cra-legacy/src/assets/svgs/google.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/gym.svg b/client-cra-legacy/src/assets/svgs/gym.svg deleted file mode 100644 index 641c434..0000000 --- a/client-cra-legacy/src/assets/svgs/gym.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/heater.svg b/client-cra-legacy/src/assets/svgs/heater.svg deleted file mode 100644 index 49f4d2b..0000000 --- a/client-cra-legacy/src/assets/svgs/heater.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/house.svg b/client-cra-legacy/src/assets/svgs/house.svg deleted file mode 100644 index 1aeda7c..0000000 --- a/client-cra-legacy/src/assets/svgs/house.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/left-arrow.svg b/client-cra-legacy/src/assets/svgs/left-arrow.svg deleted file mode 100644 index a7fb6cc..0000000 --- a/client-cra-legacy/src/assets/svgs/left-arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/left.svg b/client-cra-legacy/src/assets/svgs/left.svg deleted file mode 100644 index ba563de..0000000 --- a/client-cra-legacy/src/assets/svgs/left.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/lock.svg b/client-cra-legacy/src/assets/svgs/lock.svg deleted file mode 100644 index 4aa5cb0..0000000 --- a/client-cra-legacy/src/assets/svgs/lock.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/logo.svg b/client-cra-legacy/src/assets/svgs/logo.svg deleted file mode 100644 index 9c8ff6f..0000000 --- a/client-cra-legacy/src/assets/svgs/logo.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/client-cra-legacy/src/assets/svgs/mail.svg b/client-cra-legacy/src/assets/svgs/mail.svg deleted file mode 100644 index f58af0b..0000000 --- a/client-cra-legacy/src/assets/svgs/mail.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/money.svg b/client-cra-legacy/src/assets/svgs/money.svg deleted file mode 100644 index 4935a81..0000000 --- a/client-cra-legacy/src/assets/svgs/money.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/pencil.svg b/client-cra-legacy/src/assets/svgs/pencil.svg deleted file mode 100644 index 02ee5e5..0000000 --- a/client-cra-legacy/src/assets/svgs/pencil.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/person.svg b/client-cra-legacy/src/assets/svgs/person.svg deleted file mode 100644 index 4c5d69a..0000000 --- a/client-cra-legacy/src/assets/svgs/person.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/place.svg b/client-cra-legacy/src/assets/svgs/place.svg deleted file mode 100644 index 79b61d6..0000000 --- a/client-cra-legacy/src/assets/svgs/place.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/plus.svg b/client-cra-legacy/src/assets/svgs/plus.svg deleted file mode 100644 index a95d191..0000000 --- a/client-cra-legacy/src/assets/svgs/plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/profile.svg b/client-cra-legacy/src/assets/svgs/profile.svg deleted file mode 100644 index 320c96a..0000000 --- a/client-cra-legacy/src/assets/svgs/profile.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/search.svg b/client-cra-legacy/src/assets/svgs/search.svg deleted file mode 100644 index 97e6385..0000000 --- a/client-cra-legacy/src/assets/svgs/search.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/shower-outlined.svg b/client-cra-legacy/src/assets/svgs/shower-outlined.svg deleted file mode 100644 index c5313fd..0000000 --- a/client-cra-legacy/src/assets/svgs/shower-outlined.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/assets/svgs/snowflake.svg b/client-cra-legacy/src/assets/svgs/snowflake.svg deleted file mode 100644 index 95482dd..0000000 --- a/client-cra-legacy/src/assets/svgs/snowflake.svg +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/sofa.svg b/client-cra-legacy/src/assets/svgs/sofa.svg deleted file mode 100644 index 7eff149..0000000 --- a/client-cra-legacy/src/assets/svgs/sofa.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/up.svg b/client-cra-legacy/src/assets/svgs/up.svg deleted file mode 100644 index b7a274f..0000000 --- a/client-cra-legacy/src/assets/svgs/up.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/utilities.svg b/client-cra-legacy/src/assets/svgs/utilities.svg deleted file mode 100644 index 2fa6542..0000000 --- a/client-cra-legacy/src/assets/svgs/utilities.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client-cra-legacy/src/assets/svgs/walk.svg b/client-cra-legacy/src/assets/svgs/walk.svg deleted file mode 100644 index fdc7075..0000000 --- a/client-cra-legacy/src/assets/svgs/walk.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/warning.svg b/client-cra-legacy/src/assets/svgs/warning.svg deleted file mode 100644 index f164a1f..0000000 --- a/client-cra-legacy/src/assets/svgs/warning.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/assets/svgs/wifi.svg b/client-cra-legacy/src/assets/svgs/wifi.svg deleted file mode 100644 index e30b447..0000000 --- a/client-cra-legacy/src/assets/svgs/wifi.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client-cra-legacy/src/components/buttons/Auth.jsx b/client-cra-legacy/src/components/buttons/Auth.jsx deleted file mode 100644 index f213d02..0000000 --- a/client-cra-legacy/src/components/buttons/Auth.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import Google from 'src/assets/svgs/google.svg' -import Avatar from 'src/components/displays/Avatar' -import { useDispatch, useSelector } from 'react-redux' -import Loading from 'src/components/displays/Loading' -import signin from 'src/util/helpers/signin' -import Body from '../fonts/Body' - -const SignIn = styled(Google)` - height: 30px; - width: 30px - box-shadow: 0 2px 4px rgba(0, 0, 0, .2); - background: white; - padding: .5rem; - border-radius: 5px; - cursor: pointer; -` - -const Container = styled.div`` - -const Auth = ({ border }) => { - const user = useSelector((state) => state.user) - - if (user) { - return - } - - return ( - - Sign in - - ) -} - -export default Auth diff --git a/client-cra-legacy/src/components/buttons/BmBtn.jsx b/client-cra-legacy/src/components/buttons/BmBtn.jsx deleted file mode 100644 index 5090f18..0000000 --- a/client-cra-legacy/src/components/buttons/BmBtn.jsx +++ /dev/null @@ -1,118 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import { useSelector, useDispatch } from 'react-redux' -import api from 'src/util/api' -import log from 'src/util/log' -import BmUnfilledRaw from 'src/assets/svgs/bookmark.svg' -import BmFilledRaw from 'src/assets/svgs/bookmark-filled.svg' -import UnfilledBmIcon from 'src/assets/svgs/bookmark.svg' -import FilledBmIcon from 'src/assets/svgs/bookmark-filled.svg' -import ClickableIcon from '../displays/ClickableIcon' -import useIsDesktop from 'src/util/hooks/useIsDesktop' - -const BmBtn = ({ listing, forceDesktopSize }) => { - const bm = useSelector((state) => state.bm) - const user = useSelector((state) => state.user) - const isDesktop = useIsDesktop() - - let isBmed = false - if (user) { - isBmed = - user.bm && - user.bm.listings && - user.bm.listings.filter((bmedListing) => bmedListing._id === listing._id).length !== 0 - } else { - isBmed = - bm && - bm.listings && - bm.listings.filter((bmedListing) => bmedListing._id === listing._id).length !== 0 - } - - const dispatch = useDispatch() - const toggleBm = async () => { - try { - const addListingToBm = !isBmed - const type = addListingToBm ? 'BM_ADD' : 'BM_REMOVE' - - if (!user) { - // redux: bm - dispatch({ - type, - payload: listing, - }) - } else { - // redux: user.bm - dispatch({ - type: `USER_${type}`, - payload: listing, - }) - - // DB - if (addListingToBm) { - await api - .put(`/user/${user._id}/bm/add/${listing._id}`) - .catch(({ response }) => log('BmBtn', response)) - } else { - await api - .put(`/user/${user._id}/bm/remove/${listing._id}`) - .catch(({ response }) => log('BmBtn', response)) - } - } - } catch (e) { - log('BmBtn', e) - } - } - - return ( - - {isBmed ? ( - - - - ) : ( - - - - )} - - ) -} - -const Container = styled.div` - border-radius: 50%; - cursor: pointer; - z-index: 49; -` - -const StyledUnfilledBmIcon = styled(UnfilledBmIcon)` - height: 1rem; - width: 1rem; - cursor: pointer; - - /* forceDesktopSize */ - height: ${(props) => props.forceDesktopSize && '1.5rem'}; - width: ${(props) => props.forceDesktopSize && '1.5rem'}; - - @media (min-width: ${(props) => props.theme.md}px) { - height: 1.5rem; - width: 1.5rem; - } -` - -const StyledFilledBmIcon = styled(FilledBmIcon)` - height: 1rem; - width: 1rem; - cursor: pointer; - fill: ${(props) => props.theme.brand500}; - - /* forceDesktopSize */ - height: ${(props) => props.forceDesktopSize && '1.5rem'}; - width: ${(props) => props.forceDesktopSize && '1.5rem'}; - - @media (min-width: ${(props) => props.theme.md}px) { - height: 1.5rem; - width: 1.5rem; - } -` - -export default BmBtn diff --git a/client-cra-legacy/src/components/buttons/Btn.jsx b/client-cra-legacy/src/components/buttons/Btn.jsx deleted file mode 100644 index 1738383..0000000 --- a/client-cra-legacy/src/components/buttons/Btn.jsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react' -import styled from 'styled-components' - -const Btn = ({ children, color, inverted, type, ...rest }) => ( - -) - -const Button = styled.button` - display: flex; - align-items: center; - justify-content: center; - padding: 0.6rem 0.9rem; - - font-size: 0.9rem; - font-weight: 500; - - border-radius: 8px; - box-shadow: ${(props) => props.theme.shadow}; - background: ${(props) => props.theme.brand[500]}; - color: white; - letter-spacing: 0.6px; - - @media (min-width: ${(props) => props.theme.md}px) { - padding: 0.5rem 0.8rem; - } - - // fullWidth - width: ${(props) => props.fullWidth && '100%'}; - - // background - background: ${(props) => props.background && props.background}; - - // disabled - background: ${(props) => props.disabled && props.theme.grey[400]}; -` - -export default Btn diff --git a/client-cra-legacy/src/components/buttons/CircleCross.jsx b/client-cra-legacy/src/components/buttons/CircleCross.jsx deleted file mode 100644 index 4a026f7..0000000 --- a/client-cra-legacy/src/components/buttons/CircleCross.jsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import CrossRaw from 'src/assets/svgs/close.svg' - -const Container = styled.div` - background: white; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 50%; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - cursor: pointer; - - width: 24px; - height: 24px; - - display: flex; - justify-content: center; - align-items: center; - - flex-grow: 0; - flex-shrink: 0; -` - -const Cross = styled(CrossRaw)` - height: 10px; - width: 10px; - opacity: 0.6; - - &:hover { - opacity: 0.9; - } -` - -const CircleCross = (props) => ( - - - -) - -export default CircleCross diff --git a/client-cra-legacy/src/components/buttons/InvertedBtn.jsx b/client-cra-legacy/src/components/buttons/InvertedBtn.jsx deleted file mode 100644 index 1092cda..0000000 --- a/client-cra-legacy/src/components/buttons/InvertedBtn.jsx +++ /dev/null @@ -1,15 +0,0 @@ -import Btn from './Btn'; -import styled from 'styled-components'; - -const InvertedBtn = styled(Btn)` - color: ${props => props.theme.text}; - border-color: ${props => props.theme.text}; - background: white; - border: 1px solid ${props => props.theme.border.default}; - - // color - color: ${props => props.color && props.color}; - border-color: ${props => props.color && props.color}; -`; - -export default InvertedBtn diff --git a/client-cra-legacy/src/components/buttons/LinedBtn.jsx b/client-cra-legacy/src/components/buttons/LinedBtn.jsx deleted file mode 100644 index 906aec7..0000000 --- a/client-cra-legacy/src/components/buttons/LinedBtn.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Button = styled.button` - border-radius: 8px; - border: solid 1px #a8a29b; - background: none; - color: #808d87; - padding: .8rem 1rem; -`; - -const OutlinedButton = (props) => ( - -); - -export default OutlinedButton; diff --git a/client-cra-legacy/src/components/buttons/PaginationBtns.jsx b/client-cra-legacy/src/components/buttons/PaginationBtns.jsx deleted file mode 100644 index 7fbfa85..0000000 --- a/client-cra-legacy/src/components/buttons/PaginationBtns.jsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import useRouter from 'src/util/hooks/useRouter'; -import Pagination from '@material-ui/lab/Pagination'; - -const Container = styled.div` - width: 100%; - display: flex; - justify-content: center; - margin: 2rem 0; -`; - -const PaginationBtns = ({ totalPages, page }) => { - const pages = []; - for (let i = 1; i <= totalPages; i++) { - pages.push(i); - } - - const router = useRouter(); - const handleChange = (e, v) => { - router.updateQuery({ page: v }); - }; - - return ( - - - - ) -}; - -export default PaginationBtns; diff --git a/client-cra-legacy/src/components/buttons/PopupButton/Btn.jsx b/client-cra-legacy/src/components/buttons/PopupButton/Btn.jsx deleted file mode 100644 index 8ed553c..0000000 --- a/client-cra-legacy/src/components/buttons/PopupButton/Btn.jsx +++ /dev/null @@ -1,31 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import styled from 'styled-components'; -import theme from 'src/theme'; - -const Container = styled.div` - cursor: pointer; - text-align: center; - border: 1px solid ${(props) => (props.active ? theme.green : 'rgb(176, 176, 176)')}; - outline: currentcolor none medium; - margin: 0 .2rem; - background-color: rgb(255, 255, 255); - border-radius: 30px; - color: ${(props) => (props.active ? theme.green : 'black')}; - position: relative; - padding: .5rem 1rem; - font-size: .6rem; -`; - -const Btn = ({ children, active, ...rest }) => { - const [highlight, setHighlight] = useState(false); - useEffect(() => { - if (active) setHighlight(true); - }, [active]); - return ( - - {children} - - ); -}; - -export default Btn; diff --git a/client-cra-legacy/src/components/buttons/PopupButton/Popup.jsx b/client-cra-legacy/src/components/buttons/PopupButton/Popup.jsx deleted file mode 100644 index c00eba4..0000000 --- a/client-cra-legacy/src/components/buttons/PopupButton/Popup.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - position: absolute; - display: inline-block; - left: 0px; - top: 2rem; - z-index: 10; - background: - rgb(255, 255, 255) none repeat scroll 0% 0%; - border: 0.5px solid - rgba(118, 118, 118, 0.28); - border-radius: 12px; - box-shadow: - rgba(0, 0, 0, 0.15) 0px 10px 37px; - max-width: 80vw; - overflow: auto; - max-height: calc(-152px + 100vh); - visibility: visible; - padding: 1rem 2rem; -`; - -const Label = styled.div` - font-weight: bold; - color: ${(props) => props.theme.green}; -`; - -const Popup = ({ content, label, ...rest }) => ( - - - {content} - -); - -export default Popup; diff --git a/client-cra-legacy/src/components/buttons/PopupButton/index.jsx b/client-cra-legacy/src/components/buttons/PopupButton/index.jsx deleted file mode 100644 index 0837f10..0000000 --- a/client-cra-legacy/src/components/buttons/PopupButton/index.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Btn from './Btn'; -import Popup from './Popup'; - -const Container = styled.div` - display: inline-block; - position: relative; -`; - -const PopupButton = ({ - popupContent, btnText, label, active, setActive, -}) => { - const handleClick = () => setActive(!active); - - return ( - - - {btnText} - - {active && } - - ); -}; - -export default PopupButton; diff --git a/client-cra-legacy/src/components/buttons/TextBtn.jsx b/client-cra-legacy/src/components/buttons/TextBtn.jsx deleted file mode 100644 index 1bf7b13..0000000 --- a/client-cra-legacy/src/components/buttons/TextBtn.jsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react' -import styled from 'styled-components' - -const TextBtn = ({ children, ...rest }) => { - return {children} -} - -const StyledTextBtn = styled.button` - font-weight: 500; - font-size: 0.9rem; - - color: ${(props) => props.theme.brand[500]}; - background: ${(props) => props.theme.brand[25]}; - - padding: 0.6rem 0.9rem; - border-radius: 8px; - - // colorHex - color: ${(props) => props.colorHex && props.colorHex}; - - @media (min-width: ${(props) => props.theme.md}px) { - &:hover { - background: ${(props) => props.theme.brand[50]}; - } - } -` - -export default TextBtn diff --git a/client-cra-legacy/src/components/cards/ListingCard/index.jsx b/client-cra-legacy/src/components/cards/ListingCard/index.jsx deleted file mode 100644 index a313afd..0000000 --- a/client-cra-legacy/src/components/cards/ListingCard/index.jsx +++ /dev/null @@ -1,227 +0,0 @@ -import FormControlLabel from '@material-ui/core/FormControlLabel' -import Switch from '@material-ui/core/Switch' -import React, { useEffect, useState } from 'react' -import { Link } from 'react-router-dom' -import BinRaw from 'src/assets/svgs/bin.svg' -import PencilRaw from 'src/assets/svgs/pencil.svg' -import BmBtn from 'src/components/buttons/BmBtn' -import Btn from 'src/components/buttons/Btn' -import TextBtn from 'src/components/buttons/TextBtn' -import Body from 'src/components/fonts/Body' -import ListingInfo from 'src/components/fonts/ListingInfo' -import Text from 'src/components/fonts/Text' -import { FlexRow } from 'src/components/layouts/Flex' -import Space from 'src/components/layouts/Space' -import Modal from 'src/components/views/Modal' -import theme from 'src/theme' -import api from 'src/util/api' -import getShortAddr from 'src/util/helpers/getShortAddr' -import log from 'src/util/log' -import styled from 'styled-components' - -const ListingCard = ({ listing, edit, reload }) => { - const { _id, addr, imgs, sold, active, thumbnailIdx, availRooms } = listing - const editPath = edit ? `/listing/${_id}/edit` : `/listing/${_id}` - const listingPath = `/listing/${_id}` - - // active toggling - const [activeLocal, setActiveLocal] = useState(true) - - useEffect(() => { - setActiveLocal(active) - }, [active]) - - const handleChange = () => { - setActiveLocal(!activeLocal) - api - .put(`/listing/${_id}/update`, { active: !activeLocal }) - .catch((e) => log('ERROR ListingCard', e)) - } - - // handle delete - const [deleteModal, setDeleteModal] = useState(false) - const handleClose = () => { - setDeleteModal(false) - } - const handleDelete = () => { - api - .put(`/listing/${_id}/update`, { active: false, deleted: true }) - .then(() => { - handleClose() - reload() - }) - .catch((e) => log('ERROR ListingCard', e)) - } - const handleDeactivate = () => { - setActiveLocal(false) - handleClose() - api.put(`/listing/${_id}/update`, { active: false }).catch((e) => log('ERROR ListingCard', e)) - } - - return ( - - {!edit && ( - - - - )} - - - cornlet listing property photos for cornell - - - {edit ? ( - - {getShortAddr(addr)} - - ) : ( - - )} - - - {/* edit tools for listing owner */} - {edit && ( - - - } - label={activeLocal ? 'Active' : 'Inactive'} - /> - - - - - setDeleteModal(true)} /> - - - )} - - {/* delete modal */} - - - Are you sure you wish to delete your listing? - Deleted data cannot be recovered. - You can temporarily deactivate the listing - if you wish to use it again in the future. - - - - Delete - - - - Deactivate - - - - - - ) -} - -const Container = styled.div` - width: 90vw; - padding: 1rem 0.5rem; - position: relative; - overflow: hidden; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 25%; - } -` - -const CornerBtn = styled.div` - position: absolute; - top: 1.5rem; - right: 1rem; - z-index: 2; - cursor: pointer; -` - -const ImgContainer = styled.div` - width: 100%; - position: relative; - padding-bottom: 70%; - border-radius: 10px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - overflow: hidden; - - @media (min-width: ${(props) => props.theme.md}px) { - transition: box-shadow 0.2s ease-in-out; - &:hover { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.8); - } - } -` - -const Img = styled.img` - object-fit: cover; - width: 100%; - height: 100%; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - - // hide alt text - color: rgba(0, 0, 0, 0) !important; - - // faded - opacity: ${(props) => (props.faded ? '.5' : '')}; -` - -const EditTools = styled.div` - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 0.5rem; - padding: 0 0.2rem; -` - -const RightSection = styled.div` - display: flex; - - & > * { - margin-left: 0.5rem; - } -` - -const Pencil = styled(PencilRaw)` - height: 1rem; - width: 1rem; - cursor: pointer; - opacity: 0.7; - - &:hover { - opacity: 1; - } -` - -const Bin = styled(BinRaw)` - height: 1rem; - width: 1rem; - cursor: pointer; - opacity: 0.7; - - &:hover { - opacity: 1; - } -` - -export const ModalContainer = styled.div` - display: flex; - flex-direction: column; - align-items: flex-start; - - & p:nth-child(2n-1) { - margin-top: 1rem; - } -` - -export default ListingCard diff --git a/client-cra-legacy/src/components/cards/ListingCardV2.jsx b/client-cra-legacy/src/components/cards/ListingCardV2.jsx deleted file mode 100644 index 186d5d4..0000000 --- a/client-cra-legacy/src/components/cards/ListingCardV2.jsx +++ /dev/null @@ -1,212 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { Link } from 'react-router-dom' -import BmBtn from 'src/components/buttons/BmBtn' -import Space from 'src/components/layouts/Space' -import theme from 'src/theme' -import api from 'src/util/api' -import formatListingDesc from 'src/util/helpers/formatListingDesc' -import getDateString from 'src/util/helpers/getDateString' -import getFromNowDate from 'src/util/helpers/getFromNowDate' -import useFilters from 'src/util/hooks/useFilters' -import useIsMobile from 'src/util/hooks/useIsMobile' -import styled from 'styled-components' -import BadgeV2 from '../displays/BadgeV2' -import ListingLocation from '../displays/ListingLocation' -import Searchers from '../displays/Searchers' -import Body from '../fonts/Body' -import Text from '../fonts/Text' -import { FlexRow } from '../layouts/Flex' - -const ListingCardV2 = ({ listing }) => { - const [searchers, setSearchers] = useState([]) - const isMobile = useIsMobile() - - useEffect(() => { - if (listing._id) { - api.get(`/chatroom/listing/searchers/${listing._id}`).then((res) => { - setSearchers(res.data) - }) - } - }, [listing._id]) - - return ( - - - - - - - - - - - -
- - {formatListingDesc(listing)} - -
- {listing.sold ? ( - - ) : ( - - )} -
- - - -
- - - - Updated {getFromNowDate(listing.updatedAt)} - - - - ${listing.price}{' '} - / month - - -
-
- -
- ) -} - -const Wrapper = styled.div` - position: relative; -` - -const Container = styled.div` - width: 90vw; - padding: 1rem 0; - position: relative; - overflow: hidden; - display: flex; - align-items: flex-start; - border-radius: 20px; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 100%; - transition: background-color 0.2s ease-in-out; - padding: 1rem; - - &:hover { - background-color: ${(props) => props.theme.grey[50]}; - } - } -` - -const CornerBtnContainer = styled.div` - position: absolute; - top: 0.8rem; - right: 0rem; - z-index: 2; - cursor: pointer; - - @media (min-width: ${(props) => props.theme.md}px) { - right: 1.5rem; - } -` - -const ImgContainer = styled.div` - position: relative; - width: 120px; - height: 120px; - border-radius: 10px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - overflow: hidden; - flex-grow: 0; - flex-shrink: 0; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 280px; - height: 180px; - } -` - -const Img = styled.img` - object-fit: cover; - width: 100%; - height: 100%; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - - // hide alt text - color: rgba(0, 0, 0, 0) !important; - - // faded - opacity: ${(props) => (props.faded ? '.5' : '')}; -` - -const Title = styled.h3` - white-space: nowrap; - flex-grow: 0; - text-overflow: ellipsis; - overflow: hidden; - margin-right: 0.5rem; - font-size: 1.1rem; - font-weight: 500; - - @media (min-width: ${(props) => props.theme.md}px) { - font-size: 1.5rem; - } -` - -const OverlineContainer = styled.div` - margin-bottom: 0.4rem; - display: flex; - align-items: center; -` - -const Overline = styled.span` - margin-left: 0.5rem; - color: ${(props) => props.theme.textMuted}; - font-weight: 500; - font-size: 0.9rem; -` - -const SearchersContainer = styled.div` - padding: 0.5rem 0 1rem 0; -` - -const Price = styled(Body)` - @media (min-width: ${(props) => props.theme.md}px) { - font-size: 1.1rem; - margin-bottom: 0.5rem; - } -` - -const TextContainer = styled.div` - display: flex; - flex-direction: column; - - @media (min-width: ${(props) => props.theme.md}px) { - justify-content: space-between; - flex-grow: 2; - height: 180px; - } -` - -const StatsContainer = styled.div` - display: none; - - @media (min-width: ${(props) => props.theme.md}px) { - display: block; - } -` - -export default ListingCardV2 diff --git a/client-cra-legacy/src/components/cards/ListingHostCard.jsx b/client-cra-legacy/src/components/cards/ListingHostCard.jsx deleted file mode 100644 index 439b8db..0000000 --- a/client-cra-legacy/src/components/cards/ListingHostCard.jsx +++ /dev/null @@ -1,201 +0,0 @@ -import FormControlLabel from '@material-ui/core/FormControlLabel' -import Switch from '@material-ui/core/Switch' -import React, { useEffect, useState } from 'react' -import { Link } from 'react-router-dom' -import Space from 'src/components/layouts/Space' -import theme from 'src/theme' -import api from 'src/util/api' -import getDateString from 'src/util/helpers/getDateString' -import useIsMobile from 'src/util/hooks/useIsMobile' -import useRouter from 'src/util/hooks/useRouter' -import log from 'src/util/log' -import styled from 'styled-components' -import Btn from '../buttons/Btn' -import TextBtn from '../buttons/TextBtn' -import BadgeV2 from '../displays/BadgeV2' -import Text from '../fonts/Text' -import { FlexRow } from '../layouts/Flex' - -const ListingHostCard = ({ listing }) => { - const router = useRouter() - - const handleViewButtonClick = (event) => { - event.preventDefault() - event.stopPropagation() - router.push(`/listing/${listing._id}`) - } - - // bmCount - const [setBmCount, setSetBmCount] = useState(0) - - useEffect(() => { - if (listing._id) { - api.get(`/listing/${listing._id}/stats`).then((res) => { - if (res && res.data) { - setSetBmCount(res.data.bmCount) - } - }) - } - }, [listing._id]) - - // sold toggle - const [isSold, setIsSold] = useState(false) - - useEffect(() => { - setIsSold(listing.sold) - }, [listing.sold]) - - const toggleSold = (event) => { - event.preventDefault() - event.stopPropagation() - - setIsSold(!isSold) - api - .put(`/listing/${listing._id}/update`, { sold: !isSold }) - .catch((e) => log('ERROR ListingHostCard', e)) - } - - return ( - - - - - - - - {listing.addr} - - {listing.views} views • {setBmCount} bookmarks - - - - - - } - label={isSold ? 'Sold' : 'Available'} - /> - - - {!isSold && View} - Mark {isSold ? 'as available' : 'sold'} - - - - - ) -} - -const Container = styled.div` - cursor: pointer; - width: 90vw; - padding: 1rem 0; - position: relative; - overflow: hidden; - display: flex; - align-items: flex-start; - border-radius: 20px; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 100%; - transition: background-color 0.2s ease-in-out; - padding: 1rem; - - &:hover { - background-color: ${(props) => props.theme.grey[50]}; - } - } -` - -const DateContainer = styled.div` - margin-left: -0.1rem; -` - -const SwitchContainer = styled.div` - padding-left: 0.4rem; - width: min-content; - min-width: 125px; - - & .MuiFormControlLabel-label { - margin-left: 0.2rem; - font-weight: 500; - } -` - -const ImgContainer = styled.div` - position: relative; - width: 120px; - height: 120px; - border-radius: 10px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - overflow: hidden; - flex-grow: 0; - flex-shrink: 0; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 280px; - height: 180px; - } -` - -const Img = styled.img` - object-fit: cover; - width: 100%; - height: 100%; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - - // hide alt text - color: rgba(0, 0, 0, 0) !important; - - // faded - opacity: ${(props) => (props.faded ? '.5' : '')}; -` - -const Title = styled.h3` - flex-grow: 0; - margin-right: 0.5rem; - font-size: 1.1rem; - font-weight: 500; - line-height: 1.2; - - @media (min-width: ${(props) => props.theme.md}px) { - font-size: 1.5rem; - } -` - -const TextContainer = styled.div` - display: flex; - flex-direction: column; - - & > * { - margin-bottom: 0.5rem; - } - - @media (min-width: ${(props) => props.theme.md}px) { - justify-content: space-between; - flex-grow: 2; - height: 180px; - - & > * { - margin-bottom: unset; - } - } -` - -const ButtonsContainer = styled(FlexRow)` - margin-top: 0.5rem; - - & > * { - margin-right: 0.5rem; - } -` - -export default ListingHostCard diff --git a/client-cra-legacy/src/components/core/AppReduxWrapper.jsx b/client-cra-legacy/src/components/core/AppReduxWrapper.jsx deleted file mode 100644 index 61cfbf0..0000000 --- a/client-cra-legacy/src/components/core/AppReduxWrapper.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { Provider } from 'react-redux'; -import { persistStore } from 'redux-persist'; -import store from 'src/redux/store'; -import { PersistGate } from 'redux-persist/integration/react'; -import AppRouter from './AppRouteWrapper'; - -const persistor = persistStore(store); - -const AppContainer = () => ( - - - - - -); - -export default AppContainer; diff --git a/client-cra-legacy/src/components/core/AppRouteWrapper.jsx b/client-cra-legacy/src/components/core/AppRouteWrapper.jsx deleted file mode 100644 index dace1d7..0000000 --- a/client-cra-legacy/src/components/core/AppRouteWrapper.jsx +++ /dev/null @@ -1,74 +0,0 @@ -import React from 'react' -import { useSelector } from 'react-redux' -import { BrowserRouter, Route, Switch } from 'react-router-dom' -import AuthCallback from 'src/pages/auth-callback' -import CookiePolicy from 'src/pages/cookie-policy' -import Edit from 'src/pages/edit' -import Env from 'src/pages/env' -import Home from 'src/pages/home' -import Listing from 'src/pages/listing' -import New from 'src/pages/new' -import PrivacyPolicy from 'src/pages/privacy-policy' -import Profile from 'src/pages/profile' -import MyBookmarks from 'src/pages/profile/MyBookmarks' -import Chat from 'src/pages/profile/MyChats/Chat' -import Chatroom from 'src/pages/profile/MyChats/Chatroom' -import MyListings from 'src/pages/profile/MyListings' -import Settings from 'src/pages/profile/Settings' -import Stats from 'src/pages/stats' -import TermsConditions from 'src/pages/terms-conditions' -import MainFooter from '../footers/MainFooter' -import PrivateRoute from './PrivateRoute' -import ResetUserStore from './ResetUserStore' -import ScrollToTop from './ScrollToTop' -import SocketIO from './SocketIO' - -const AppRouter = () => { - const user = useSelector((state) => state.user) - const bannedEmails = [ - 'lily.d.pieramici042402@gmail.com', - 'chiayuho2001@gmail.com', - 'rolpz289974@gmail.com', - 'chiayuho162001@gmail.com', - 'kmjeong130309574@gmail.com', - 'prgmayorga1470@gmail.com', - ] - - if ( - process.env.NODE_ENV === 'production' && - user && - ((user.email && (bannedEmails.includes(user.email) || user.email.includes('chiayuho'))) || - user.isBanned) - ) { - return null - } - - return ( - - - - - - - - - - - - - - - - - - - - - - - - - ) -} - -export default AppRouter diff --git a/client-cra-legacy/src/components/core/AppThemeWrapper.jsx b/client-cra-legacy/src/components/core/AppThemeWrapper.jsx deleted file mode 100644 index 55e2884..0000000 --- a/client-cra-legacy/src/components/core/AppThemeWrapper.jsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react'; -import styled, { ThemeProvider } from 'styled-components'; -import theme from 'src/theme'; -import AppReduxWrapper from './AppReduxWrapper'; - -import 'src/theme/Normalise.css'; -import 'react-perfect-scrollbar/dist/css/styles.css'; - -const Wrapper = styled.div` - width: 100%; - min-height: 100.5vh; - background-color: white; - display: flex; - justify-content: center; -`; - -const Container = styled.div` - width: 90%; - display: flex; - flex-direction: column; - justify-content: space-between; - - @media (min-width: ${(props) => props.theme.md}px) { - max-width: 1565px; - } -`; - -const AppThemeWrapper = () => ( - - - - - - - -); - -export default AppThemeWrapper; diff --git a/client-cra-legacy/src/components/core/PrivateRoute.jsx b/client-cra-legacy/src/components/core/PrivateRoute.jsx deleted file mode 100644 index 387bd51..0000000 --- a/client-cra-legacy/src/components/core/PrivateRoute.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { useSelector } from 'react-redux'; -import { Route } from 'react-router-dom'; -import signin from 'src/util/helpers/signin'; -import MainHeader from '../headers/MainHeader'; - -const PrivateRoute = ({ component: Component, ...rest }) => { - const user = useSelector((state) => state.user); - - if (!user || !user.name) { - signin(); - return ; - } - - return ( - ( - - )} - /> - ); -}; - -export default PrivateRoute; diff --git a/client-cra-legacy/src/components/core/ResetUserStore.jsx b/client-cra-legacy/src/components/core/ResetUserStore.jsx deleted file mode 100644 index 65a31e0..0000000 --- a/client-cra-legacy/src/components/core/ResetUserStore.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import React, { useEffect } from 'react' -import styled from 'styled-components' -import { useSelector, useDispatch } from 'react-redux' - -const ResetUserStore = () => { - const user = useSelector((state) => state.user) - const dispatch = useDispatch() - - if (user && (user.displayName || !user.name)) { - dispatch({ - type: 'USER_SET', - payload: null, - }) - } - - // create test scenario: flawed user schema saved to redux store - // useEffect(() => { - // dispatch({ - // type: 'USER_SET', - // payload: { - // displayName: 'test displayName', - // name: undefined, - // } - // }) - // }, []) - - return
-} - -export default ResetUserStore diff --git a/client-cra-legacy/src/components/core/ScrollToTop.jsx b/client-cra-legacy/src/components/core/ScrollToTop.jsx deleted file mode 100644 index 07798ab..0000000 --- a/client-cra-legacy/src/components/core/ScrollToTop.jsx +++ /dev/null @@ -1,70 +0,0 @@ -import { useEffect, useState } from 'react' -import UpRaw from 'src/assets/svgs/up.svg' -import useIsDesktop from 'src/util/hooks/useIsDesktop' -import useRouter from 'src/util/hooks/useRouter' -import styled from 'styled-components' - -export const Container = styled.div` - border-radius: 50%; - background: ${(props) => props.theme.primary}; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - - position: fixed; - bottom: 2rem; - right: 2rem; - z-index: 10; - width: 3rem; - height: 3rem; - - display: flex; - justify-content: center; - align-items: center; - - cursor: pointer; -` - -const UpSVG = styled(UpRaw)` - height: 1.2rem; - width: 1.2rem; - fill: white; -` - -const ScrollToTop = () => { - // scroll to top on route change - const router = useRouter() - useEffect(() => { - window.scrollTo(0, 0) - }, [router.location]) - - // for mobile, if not currently at top - // render back to top button - const isDesktop = useIsDesktop() - const [isAtTop, setIsAtTop] = useState(true) - window.onscroll = function () { - if (window.pageYOffset === 0) { - setIsAtTop(true) - } else { - setIsAtTop(false) - } - } - - const handleClick = () => { - window.scrollTo({ - top: 0, - left: 0, - behavior: 'smooth', - }) - } - - return null - - // if (isDesktop || isAtTop) return
; - - // return ( - // - // - // - // ); -} - -export default ScrollToTop diff --git a/client-cra-legacy/src/components/core/SocketIO.jsx b/client-cra-legacy/src/components/core/SocketIO.jsx deleted file mode 100644 index 785c8b4..0000000 --- a/client-cra-legacy/src/components/core/SocketIO.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -import socket from 'src/util/socket'; -import { useDispatch, useSelector } from 'react-redux'; - -const SocketIO = () => { - const dispatch = useDispatch(); - const user = useSelector((state) => state.user); - - socket.on('msg', (data) => { - dispatch({ - type: 'CHATROOMS_MSG', - payload: data, - }); - }); - - socket.on('new chatroom', (chatroom) => { - if (user && chatroom.uids.includes(user.uid)) { - dispatch({ - type: 'CHATROOMS_ADD', - payload: chatroom, - }); - } - }); - - socket.on('chatroom seen', ({ cid, uid }) => { - dispatch({ - type: 'CHATROOMS_SEEN', - payload: { cid, uid }, - }); - }); - - return
; -}; - -export default SocketIO; diff --git a/client-cra-legacy/src/components/displays/AmenityGrp.jsx b/client-cra-legacy/src/components/displays/AmenityGrp.jsx deleted file mode 100644 index 9da001b..0000000 --- a/client-cra-legacy/src/components/displays/AmenityGrp.jsx +++ /dev/null @@ -1,57 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Body from '../fonts/Body'; - -const AmenityGrpContainer = styled.div` - display: flex; - flex-direction: column; - align-items: center; - width: 6rem; - margin: 1rem 1rem 0 0; - cursor: pointer; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 5rem; - } - - // active - opacity: ${(props) => (props.active ? '.9' : '.3')}; -`; - -const Row = styled.div` - display: flex; - align-items: center; - margin-bottom: .5rem; - - & > svg { - height: 1.7rem; - width: 1.7rem; - } -`; - -export const LineTwo = styled(Body)` - // lineTwo - opacity: ${(props) => (props.lineTwo ? '' : '0')}; -`; - -const AmenityGrp = ({ - icon, label, active, onClick, -}) => { - const lineOne = label.split(' ')[0]; - const lineTwo = label.split(' ')[1]; - - return ( - - - {icon} - - {lineTwo ? lineOne : label} - {lineTwo || lineOne} - - ); -}; - -export default AmenityGrp; diff --git a/client-cra-legacy/src/components/displays/Avatar.jsx b/client-cra-legacy/src/components/displays/Avatar.jsx deleted file mode 100644 index 238f533..0000000 --- a/client-cra-legacy/src/components/displays/Avatar.jsx +++ /dev/null @@ -1,49 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import { Link } from 'react-router-dom' -import { default as MaterialAvatar } from '@material-ui/core/Avatar' -import AvatarIconRaw from 'src/assets/svgs/avatar.svg' - -const Avatar = ({ src, path, lg, sm, border, isLinked = true, ...rest }) => ( -
- {src ? ( - isLinked ? ( - - - - ) : ( - - ) - ) : ( - - )} -
-) - -const StyledAvatar = styled(MaterialAvatar)` - width: 35px !important; - height: 35px !important; - - // border - box-shadow: ${(props) => props.border && `inset 0px 0px 0px 1px ${props.theme.primary}`}; - border: ${(props) => props.border && `2px solid ${props.theme.primary}`}; - - // sm - width: ${(props) => (props.sm ? '22px !important' : '')}; - height: ${(props) => (props.sm ? '22px !important' : '')}; - - // lg - width: ${(props) => (props.lg ? '45px !important' : '')}; - height: ${(props) => (props.lg ? '45px !important' : '')}; -` - -const AvatarIcon = styled(AvatarIconRaw)` - width: 40px; - height: 40px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - border-radius: 50%; - padding: 5px; - opacity: 0.8; -` - -export default Avatar diff --git a/client-cra-legacy/src/components/displays/Badge.jsx b/client-cra-legacy/src/components/displays/Badge.jsx deleted file mode 100644 index 6d3fc4b..0000000 --- a/client-cra-legacy/src/components/displays/Badge.jsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - padding: .4rem .6rem; - background-color: white; - display: inline-block; - border-radius: 15px; - box-shadow: 0 2px 4px rgba(0, 0, 0, .2); - font-size: .8rem; - - // color - background-color: ${(props) => (props.inverted ? props.theme[props.color] : '')}; - color: ${(props) => props.theme[props.color]}; - - // size: sm - font-size: ${(props) => (props.size === 'sm' ? '.7rem' : '')}; - padding: ${(props) => (props.size === 'sm' ? '.3rem .5rem' : '')}; - - // inverted - color: ${(props) => (props.inverted ? 'white' : '')}; - background-color: ${(props) => (props.inverted ? props.theme[props.color] : '')}; -`; - -const Badge = ({ - children, color, inverted, size, ...rest -}) => ( - - {children} - -); - -export default Badge; diff --git a/client-cra-legacy/src/components/displays/BadgeV2.jsx b/client-cra-legacy/src/components/displays/BadgeV2.jsx deleted file mode 100644 index 4903bc9..0000000 --- a/client-cra-legacy/src/components/displays/BadgeV2.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import Text from '../fonts/Text' - -const BadgeV2 = ({ label, color, background }) => { - return ( - - - {label} - - - ) -} - -const Container = styled.div` - padding: 0.1rem 0.4rem; - border-radius: 4px; - display: inline-block; - - // background - background-color: ${(props) => props.background && props.background}; -` - -const BadgeText = styled(Text)` - @media (min-width: ${(props) => props.theme.md}px) { - font-size: 14px; - } -` - -export default BadgeV2 diff --git a/client-cra-legacy/src/components/displays/ClickableIcon.jsx b/client-cra-legacy/src/components/displays/ClickableIcon.jsx deleted file mode 100644 index ea6898a..0000000 --- a/client-cra-legacy/src/components/displays/ClickableIcon.jsx +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react' -import styled from 'styled-components' - -const ClickableIcon = ({ size, children }) => { - return {children} -} - -const Container = styled.div` - border-radius: 50%; - background: ${(props) => props.theme.grey[100]}; - height: 42px; - width: 42px; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - - & > * { - flex-grow: 0; - flex-shrink: 0; - } - - &:hover { - background: ${(props) => props.theme.grey[300]}; - } - - /* size */ - height: ${(props) => props.size && props.size}; - width: ${(props) => props.size && props.size}; -` - -export default ClickableIcon diff --git a/client-cra-legacy/src/components/displays/CornerRedDot.jsx b/client-cra-legacy/src/components/displays/CornerRedDot.jsx deleted file mode 100644 index 2dcdcde..0000000 --- a/client-cra-legacy/src/components/displays/CornerRedDot.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - position: absolute; - top: -2px; - right: -1px; - background: ${(props) => props.theme.danger}; - border-radius: 50%; - padding: 4px; - border: 2px solid white; - z-index: 10; - - // lg - padding: ${(props) => (props.lg ? '6px' : '')}; -`; - -const CornerRedDot = (props) => ; - -export default CornerRedDot; diff --git a/client-cra-legacy/src/components/displays/DetailedAvatar.jsx b/client-cra-legacy/src/components/displays/DetailedAvatar.jsx deleted file mode 100644 index 23064f6..0000000 --- a/client-cra-legacy/src/components/displays/DetailedAvatar.jsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Avatar from 'src/components/displays/Avatar'; -import Body from 'src/components/fonts/Body'; - -const Container = styled.div` - display: flex; -`; - -const Data = styled.div` - display: flex; - flex-direction: column; - justify-content: center; - margin-left: 1rem; -`; - -const Name = styled(Body)` - margin-bottom: .1rem; -`; - -const UserData = ({ name, email, src }) => ( - - - - {name} - {email} - - -); - -export default UserData; diff --git a/client-cra-legacy/src/components/displays/IconContainer.jsx b/client-cra-legacy/src/components/displays/IconContainer.jsx deleted file mode 100644 index 050f1f8..0000000 --- a/client-cra-legacy/src/components/displays/IconContainer.jsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react' -import styled from 'styled-components'; - -const Container = styled.div` - border-radius: 50%; - cursor: pointer; - padding: .2rem; - - display: flex; - justify-content: center; - align-items: center; - - @media (min-width: ${(props) => props.theme.md}px) { - &:hover { - background: rgba(0, 0, 0, .05); - } - } - - // padding - padding: ${props => props.padding && props.padding}; -`; - -const IconContainer = ({ children, padding }) => { - return ( - - {children} - - ) -} - -export default IconContainer diff --git a/client-cra-legacy/src/components/displays/ImgCarousel.css b/client-cra-legacy/src/components/displays/ImgCarousel.css deleted file mode 100644 index 94442ce..0000000 --- a/client-cra-legacy/src/components/displays/ImgCarousel.css +++ /dev/null @@ -1,15 +0,0 @@ -.slick-prev { - left: 3%; - z-index: 10; - display: none !important; -} -.slick-next { - right: 3%; - display: none !important; -} - -@media (min-width: 768px) { - .slick-next .slick-prev { - display: block !important; - } -} diff --git a/client-cra-legacy/src/components/displays/ImgCarousel.jsx b/client-cra-legacy/src/components/displays/ImgCarousel.jsx deleted file mode 100644 index 520dfe8..0000000 --- a/client-cra-legacy/src/components/displays/ImgCarousel.jsx +++ /dev/null @@ -1,87 +0,0 @@ -import React, { useRef, useState } from 'react' -import styled from 'styled-components' -import Slider from 'react-slick' -import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock' - -import 'slick-carousel/slick/slick.css' -import 'slick-carousel/slick/slick-theme.css' -import './ImgCarousel.css' - -const ImgCarousel = ({ imgs }) => { - const slider = useRef(null) - - const lockVertScroll = (direction) => { - if (direction !== 'vertical') { - disableBodyScroll(slider.current) - } - } - - const releaseBodyScroll = () => enableBodyScroll(slider.current) - - const config = { - dots: true, - infinite: true, - speed: 200, - accessibility: true, - ref: slider, - swipeEvent: lockVertScroll, - enableVerticalScroll: true, - } - - if (!imgs || !imgs.length) return
- - return ( - - - {imgs.map((src) => ( - - - - ))} - - - ) -} - -const Container = styled.div` - & .slick-dots { - bottom: 15px; - } - - & .slick-dots li { - margin: 0; - } - - & .slick-dots li button { - padding: 0; - } - - & .slick-dots li button:before { - opacity: 0.8; - color: white; - font-size: 10px; - } - - & .slick-dots li.slick-active button:before { - color: ${(props) => props.theme.grey[700]}; - } -` - -const ImgContainer = styled.div` - height: 250px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - - @media (min-width: ${(props) => props.theme.md}px) { - height: 300px; - border-radius: 4px; - overflow: hidden; - } -` - -const Img = styled.img` - width: 100%; - object-fit: cover; - height: inherit; -` - -export default ImgCarousel diff --git a/client-cra-legacy/src/components/displays/InfoBox.jsx b/client-cra-legacy/src/components/displays/InfoBox.jsx deleted file mode 100644 index 7842e0d..0000000 --- a/client-cra-legacy/src/components/displays/InfoBox.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react' -import WarningSVGRaw from 'src/assets/svgs/warning.svg' -import styled from 'styled-components' -import Space from '../layouts/Space' - -const Container = styled.div` - display: flex; - width: 100%; - border-radius: 8px; - background: ${(props) => props.theme.warningLight}; - color: ${(props) => props.theme.warning}; - padding: 1rem; -` - -const WarningSVG = styled(WarningSVGRaw)` - fill: ${(props) => props.theme.warning}; -` - -const InfoBox = ({ variant, children }) => { - return ( - - - - {children} - - ) -} - -export default InfoBox diff --git a/client-cra-legacy/src/components/displays/ListingLocation.jsx b/client-cra-legacy/src/components/displays/ListingLocation.jsx deleted file mode 100644 index f807ee7..0000000 --- a/client-cra-legacy/src/components/displays/ListingLocation.jsx +++ /dev/null @@ -1,46 +0,0 @@ -import React, { useEffect, useState } from 'react' -import getRegion from 'src/util/helpers/getRegion' -import kmToMins from 'src/util/helpers/kmToMins' -import useIsDesktop from 'src/util/hooks/useIsDesktop' -import styled from 'styled-components' -import BadgeV2 from '../displays/BadgeV2' - -const ListingLocation = ({ lat, lng, toCampus, isShowMins = true }) => { - const [region, setRegion] = useState({}) - const isDesktop = useIsDesktop() - - useEffect(() => { - if (lat && lng) { - setRegion( - getRegion({ - lat, - lng, - }) - ) - } - }, [lat, lng]) - - if (!lat || !lng || !toCampus) return
- - return ( - - - {isShowMins && • {kmToMins(toCampus)} mins from campus} - - ) -} - -const Container = styled.div` - margin-bottom: 0.4rem; - display: flex; - align-items: center; -` - -const Overline = styled.span` - margin-left: 0.5rem; - color: ${(props) => props.theme.textMuted}; - font-weight: 500; - font-size: 0.9rem; -` - -export default ListingLocation diff --git a/client-cra-legacy/src/components/displays/Loading.jsx b/client-cra-legacy/src/components/displays/Loading.jsx deleted file mode 100644 index 52ab69b..0000000 --- a/client-cra-legacy/src/components/displays/Loading.jsx +++ /dev/null @@ -1,41 +0,0 @@ -import React from 'react'; -import styled, { keyframes } from 'styled-components'; - -const rotation = keyframes` - 0%, 100% { - animation-timing-function: ease-in-out; - } - 0% { - transform: rotateY(0deg); - } - 50% { - transform: rotateY(1800deg); - animation-timing-function: ease-in-out; - } - 100% { - transform: rotateY(3600deg); - } -`; - -const Animation = styled.div` - display: inline-block; - transform: translateZ(1px); - - &>div { - display: inline-block; - width: 1rem; - height: 1rem; - margin: 8px; - border-radius: 50%; - background: ${(props) => props.theme.primary}; - animation: ${rotation} 5s ease-in-out infinite; - } -`; - -const Loading = () => ( - -
- -); - -export default Loading; diff --git a/client-cra-legacy/src/components/displays/LoadingDots.jsx b/client-cra-legacy/src/components/displays/LoadingDots.jsx deleted file mode 100644 index 17dfe95..0000000 --- a/client-cra-legacy/src/components/displays/LoadingDots.jsx +++ /dev/null @@ -1,78 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -export const Center = styled.div` - width: 100%; - display: flex; - justify-content: center; -`; - -export const Container = styled.div` - display: inline-block; - position: relative; - width: 80px; - height: 80px; - - & div { - position: absolute; - top: 33px; - width: 13px; - height: 13px; - border-radius: 50%; - background: rgba(0, 0, 0, .2); - animation-timing-function: cubic-bezier(0, 1, 1, 0); - } - & div:nth-child(1) { - left: 8px; - animation: lds-ellipsis1 0.6s infinite; - } - & div:nth-child(2) { - left: 8px; - animation: lds-ellipsis2 0.6s infinite; - } - & div:nth-child(3) { - left: 32px; - animation: lds-ellipsis2 0.6s infinite; - } - & div:nth-child(4) { - left: 56px; - animation: lds-ellipsis3 0.6s infinite; - } - @keyframes lds-ellipsis1 { - 0% { - transform: scale(0); - } - 100% { - transform: scale(1); - } - } - @keyframes lds-ellipsis3 { - 0% { - transform: scale(1); - } - 100% { - transform: scale(0); - } - } - @keyframes lds-ellipsis2 { - 0% { - transform: translate(0, 0); - } - 100% { - transform: translate(24px, 0); - } - } -`; - -const LoadingDots = () => ( -
- -
-
-
-
- -
-); - -export default LoadingDots; diff --git a/client-cra-legacy/src/components/displays/Logo.jsx b/client-cra-legacy/src/components/displays/Logo.jsx deleted file mode 100644 index 1a4086c..0000000 --- a/client-cra-legacy/src/components/displays/Logo.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import LogoRaw from 'src/assets/svgs/logo.svg' - -const LogoSVG = styled(LogoRaw)` - height: 3rem; - cursor: pointer; - fill: ${(props) => props.theme.brand[500]}; - - // isDark - fill: ${(props) => props.isDark && props.theme.grey[500]}; -` - -const Logo = ({ isDark }) => - -export default Logo diff --git a/client-cra-legacy/src/components/displays/Map.jsx b/client-cra-legacy/src/components/displays/Map.jsx deleted file mode 100644 index b7889e8..0000000 --- a/client-cra-legacy/src/components/displays/Map.jsx +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react' -import { Circle, GoogleMap, withGoogleMap, withScriptjs } from 'react-google-maps' -import { compose, withProps } from 'recompose' -import theme from 'src/theme' -import useIsMobile from 'src/util/hooks/useIsMobile' -import Body from '../fonts/Body' -import { FlexColumn } from '../layouts/Flex' -import Space from '../layouts/Space' - -const MapComponent = compose( - withProps({ - googleMapURL: `https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=${process.env.REACT_APP_MAP_KEY}`, - loadingElement:
, - containerElement:
, - mapElement:
, - }), - withScriptjs, - withGoogleMap -)(({ lat, lng }) => { - const isMobile = useIsMobile() - - return ( - - - - - - ) -}) - -const Map = ({ lat, lng }) => ( - - - -
- - The exact location will be provided once you message the host - -
-
-) - -export default Map diff --git a/client-cra-legacy/src/components/displays/Metadata.jsx b/client-cra-legacy/src/components/displays/Metadata.jsx deleted file mode 100644 index ec1c31d..0000000 --- a/client-cra-legacy/src/components/displays/Metadata.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import Eye from 'src/assets/svgs/eye.svg' - -const Container = styled.div` - display: flex; - opacity: 0.7; - font-size: 0.8rem; - align-items: center; -` - -const Wrapper = styled.div` - padding: 0 0.4rem 0 0; - display: flex; - align-items: center; -` - -const SEye = styled(Eye)` - width: 0.8rem; - height: 0.8rem; - margin-right: 0.1rem; - opacity: 0.6; -` - -const Metadata = ({ date, pv }) => { - const formattedDate = date ? date.split('T')[0] : '' - return ( - - -

{formattedDate}

-
- {pv && ( - - -

{pv}

-
- )} -
- ) -} - -export default Metadata diff --git a/client-cra-legacy/src/components/displays/NotifCounter.jsx b/client-cra-legacy/src/components/displays/NotifCounter.jsx deleted file mode 100644 index 4ad4f58..0000000 --- a/client-cra-legacy/src/components/displays/NotifCounter.jsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - height: 1.7rem; - width: 1.7rem; - font-size: 1rem; - - border-radius: 50%; - background: ${props => props.theme.primary}; - color: white; - - display: flex; - justify-content: center; - align-items: center; - - // sm - height: ${props => props.sm && '1.2rem'}; - width: ${props => props.sm && '1.2rem'}; - font-size: ${props => props.sm && '.7rem'}; -`; - -const NotifCounter = ({ children, ...rest }) => { - return ( - - {children} - - ) -}; - -export default NotifCounter; diff --git a/client-cra-legacy/src/components/displays/Notification.jsx b/client-cra-legacy/src/components/displays/Notification.jsx deleted file mode 100644 index b6e5728..0000000 --- a/client-cra-legacy/src/components/displays/Notification.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.span` - position: absolute; - width: 18px; - height: 18px; - border-radius: 50%; - color: #fff; - background: #dd5850; - text-align: center; - line-height: 18px; - font-size: .7rem; - right: 0px; - top: 0px; - display: block; - cursor: pointer; -`; - -const Notification = (props) => ( - - {props.text} - -); - -export default Notification; diff --git a/client-cra-legacy/src/components/displays/PolicyDisclaimer.jsx b/client-cra-legacy/src/components/displays/PolicyDisclaimer.jsx deleted file mode 100644 index eb0946e..0000000 --- a/client-cra-legacy/src/components/displays/PolicyDisclaimer.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Body from '../fonts/Body'; -import { Link } from 'react-router-dom'; - -const PolicyDisclaimer = ({ action, ...rest}) => { - return ( - -
- By {action || 'using Cornlet'}, you agree to its - Terms of Service and Privacy Policy -
-
- ) -}; - -const Container = styled.div` - width: 100%; - display: flex; - justify-content: center; - - & p { - text-align: center; - } -`; - -const StyledLink = styled(Link)` - text-decoration: underline; -`; - -const StyledBody = styled(Body)` - font-size: .8rem; -`; - -export default PolicyDisclaimer; diff --git a/client-cra-legacy/src/components/displays/PriceBadge.jsx b/client-cra-legacy/src/components/displays/PriceBadge.jsx deleted file mode 100644 index 0a6ad81..0000000 --- a/client-cra-legacy/src/components/displays/PriceBadge.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - position: absolute; - bottom: 1rem; - right: .5rem; - - background: ${(props) => props.theme.primary}; - color: white; - border-radius: 8px; - - font-weight: 400; - font-size: 1.1rem; - padding: .3rem .7rem; - - // alignTop - bottom: ${(props) => (props.alignTop ? 'initial' : '')}; - top: ${(props) => (props.alignTop ? '1rem' : '')}; - - // alignLeft - right: ${props => props.alignLeft ? 'initial': ''}; - left: ${props => props.alignLeft ? '1rem' : ''}; - - // lg - font-size: ${(props) => (props.lg ? '1.2rem' : '')}; - padding: ${(props) => (props.lg ? '.5rem 1rem' : '')}; - right: ${(props) => (props.lg ? '1rem' : '')}; -`; - -const PriceBadge = ({ children, ...rest }) => ( - - {children} - -); - -export default PriceBadge; diff --git a/client-cra-legacy/src/components/displays/Searchers.jsx b/client-cra-legacy/src/components/displays/Searchers.jsx deleted file mode 100644 index 305ea66..0000000 --- a/client-cra-legacy/src/components/displays/Searchers.jsx +++ /dev/null @@ -1,61 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import Text from '../fonts/Text' -import Avatar from './Avatar' - -const Searchers = ({ searchers, isBrief, isLarge }) => { - if (!searchers || searchers.length === 0) return null - - const text = isBrief - ? `${searchers.length} messaging host` - : `${searchers.length} ${ - searchers.length === 1 ? 'person is' : 'people are' - } messaging this host` - - const sliceCount = isBrief ? 3 : 4 - - return ( - - - {searchers.slice(0, sliceCount).map((searcher) => ( - - ))} - - - {text} - - - ) -} - -const Container = styled.div` - display: flex; - align-items: flex-start; - align-items: ${(props) => (props.isBrief ? 'center' : 'flex-start')}; - padding: 0 0.5rem; - - & > *:first-of-type { - margin-right: 0.5rem; - } -` - -const AvatarGroup = styled.div` - display: flex; - align-items: center; - - & > * { - margin-left: -0.5rem; - } -` - -const StyledAvatar = styled(Avatar)` - border: 2px solid white; -` - -const StyledText = styled(Text)` - @media (min-width: ${(props) => props.theme.md}px) { - font-size: 14px; - } -` - -export default Searchers diff --git a/client-cra-legacy/src/components/displays/Snackbar.jsx b/client-cra-legacy/src/components/displays/Snackbar.jsx deleted file mode 100644 index 17c8a46..0000000 --- a/client-cra-legacy/src/components/displays/Snackbar.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import IconButton from '@material-ui/core/IconButton' -import { default as MuiSnackbar } from '@material-ui/core/Snackbar' -import CloseIcon from '@material-ui/icons/Close' -import React from 'react' - -const Snackbar = ({ message, isOpen, setIsOpen }) => { - const handleClose = (event, reason) => { - if (reason === 'clickaway') { - return - } - - setIsOpen(false) - } - - return ( - - - - - - } - /> - ) -} - -export default Snackbar diff --git a/client-cra-legacy/src/components/displays/StateBadges.jsx b/client-cra-legacy/src/components/displays/StateBadges.jsx deleted file mode 100644 index 295c971..0000000 --- a/client-cra-legacy/src/components/displays/StateBadges.jsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Badge from 'src/components/displays/Badge'; - -const Container = styled.div` - & > * { - margin-right: .5rem; - } -`; - -const StageBadges = ({ listing }) => { - const startDate = listing.start && new Date(listing.start).toLocaleDateString(); - const endDate = listing.end && new Date(listing.end).toLocaleDateString(); - const hasDates = listing.start && listing.end; - const badgeText = hasDates ? `${startDate} ~ ${endDate}` : listing.term; - return ( - - {badgeText} - {listing.sold && Sold} - - ); -}; - -export default StageBadges; diff --git a/client-cra-legacy/src/components/filters/DateFilter.jsx b/client-cra-legacy/src/components/filters/DateFilter.jsx deleted file mode 100644 index 57363fe..0000000 --- a/client-cra-legacy/src/components/filters/DateFilter.jsx +++ /dev/null @@ -1,78 +0,0 @@ -import React, { useState, useEffect, useRef } from 'react' -import styled from 'styled-components' -import DatePicker from 'react-datepicker' -import 'react-datepicker/dist/react-datepicker.css' -import useRouter from 'src/util/hooks/useRouter' -import formatDate from 'src/util/helpers/formatDate' -import CalendarRaw from 'src/assets/svgs/calendar.svg' - -const Container = styled.div` - position: relative; -` - -const StyledPicker = styled(DatePicker)` - /* padding: .4rem 1.5rem .4rem .4rem; */ - padding: 0.5rem 0; - font-size: 0.8rem; - font-weight: 500; - background-color: white; - - display: inline; - - border-radius: 3px; - text-align: center; - cursor: pointer; - - width: 110px; - background-color: inherit; - color: ${(props) => props.theme.text}; - border: 2px solid ${(props) => props.theme.border.dark}; -` - -const CalendarSVG = styled(CalendarRaw)` - height: 1.6rem; - width: 1.6rem; - position: absolute; - right: 0.5rem; - top: 0; - bottom: 0; - margin: auto; - fill: ${(props) => props.theme.border.dark}; -` - -const DateFilter = ({ name }) => { - const router = useRouter() - const [date, setDate] = useState() - - useEffect(() => { - if (router.query[name]) { - const newDate = new Date(router.query[name].replace(/-/g, '/')) - setDate(newDate) - } else { - setDate(null) - } - }, [router.query[name]]) - - useEffect(() => { - if (!date) return - - const newQuery = {} - newQuery[name] = formatDate(date) - router.updateQuery(newQuery) - }, [date]) - - const handleDateChangeRaw = (e) => e.preventDefault() - - return ( - - setDate(newDate)} - /> - {/* */} - - ) -} - -export default DateFilter diff --git a/client-cra-legacy/src/components/filters/SliderFilter.jsx b/client-cra-legacy/src/components/filters/SliderFilter.jsx deleted file mode 100644 index 0df3587..0000000 --- a/client-cra-legacy/src/components/filters/SliderFilter.jsx +++ /dev/null @@ -1,71 +0,0 @@ -import React, { useEffect } from 'react' -import styled from 'styled-components' -import useRouter from 'src/util/hooks/useRouter' -import Slider from '@material-ui/core/Slider' -import { FlexRow } from '../layouts/Flex' -import Text from '../fonts/Text' - -const SliderFilter = ({ startName, endName, max, step, startLabel, endLabel }) => { - const router = useRouter() - const [value, setValue] = React.useState([0, max]) - - const handleChange = (event, newValue) => { - setValue(newValue) - } - - const handleChangeCommitted = (event, newValue) => { - const query = {} - // eslint-disable-next-line prefer-destructuring - query[startName] = newValue[0] - // eslint-disable-next-line prefer-destructuring - query[endName] = newValue[1] - router.updateQuery(query) - } - - function valuetext(val) { - return `$${val}` - } - - useEffect(() => { - if (router.query[startName] && router.query[endName]) { - setValue([Number(router.query[startName]), Number(router.query[endName])]) - } else { - setValue([0, max]) - } - }, [router.query[startName], router.query[endName]]) - - return ( - - - - - -
{startLabel && {startLabel}}
-
{endLabel && {endLabel}}
-
-
- ) -} - -const Container = styled.div`` - -const SliderContainer = styled.div` - padding: 0 0.5rem; - display: flex; - justify-content: center; - - & .MuiSlider-colorPrimary { - color: ${(props) => props.theme.primary}; - } -` - -export default SliderFilter diff --git a/client-cra-legacy/src/components/filters/Sort.jsx b/client-cra-legacy/src/components/filters/Sort.jsx deleted file mode 100644 index c5903b4..0000000 --- a/client-cra-legacy/src/components/filters/Sort.jsx +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import useRouter from 'src/util/hooks/useRouter'; - -const Container = styled.div` - -`; - -const SortBadge = styled.div` - padding: .4rem .8rem; - font-size: .8rem; - background-color: white; - border-radius: 15px; - text-align: center; - cursor: pointer; - - @media (min-width: ${(props) => props.theme.md}px) { - box-shadow: 0 2px 4px rgba(0, 0, 0, .2); - } - - // default - width: 3.5rem; - background-color: inherit; - color: rgba(0, 0, 0, .7); - border: 1px solid rgba(0, 0, 0, .2); - - // value set - width: ${(props) => (props.value ? 'auto' : '')}; - background-color: ${(props) => (props.value ? props.theme.primary : '')}; - color: ${(props) => (props.value ? 'white' : '')}; - border: ${(props) => (props.value ? 'none' : '')}; -`; - -const Sort = () => { - const router = useRouter(); - const sortOpts = ['recent', 'price-asc', 'price-desc']; - - const handleClick = () => { - const currentI = sortOpts.indexOf(router.query.sort); - const newI = currentI < 0 ? 1 : (currentI + 1) % sortOpts.length; - router.updateQuery({ sort: sortOpts[newI] }); - }; - - const stateToString = { - recent: 'Recent', - 'price-asc': 'Price: Ascending', - 'price-desc': 'Price: Descending', - }; - - return ( - - - {router.query.sort - ? `${stateToString[router.query.sort]}` - : 'Sort'} - - - ); -}; - -export default Sort; diff --git a/client-cra-legacy/src/components/fonts/Body.jsx b/client-cra-legacy/src/components/fonts/Body.jsx deleted file mode 100644 index 966231b..0000000 --- a/client-cra-legacy/src/components/fonts/Body.jsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const StyledBody = styled.p` - opacity: 1; - font-size: 1rem; - font-weight: 400; - - white-space: pre-line; - line-height: 1.2; - word-break: break-word; - color: ${props => props.theme.text}; - - // ellipsis - text-overflow: ${(props) => (props.ellipsis ? 'ellipsis' : '')}; - overflow: ${(props) => (props.ellipsis ? 'hidden' : '')}; - white-space: ${(props) => (props.ellipsis ? 'nowrap' : '')}; - - // nowrap - white-space: ${(props) => (props.nowrap ? 'nowrap' : '')}; - - // muted - opacity: ${(props) => (props.muted ? '.8' : '')}; - - // sm - @media (min-width: ${(props) => props.theme.md}px) { - font-size: ${(props) => (props.sm ? '.9rem' : '')}; - } - - // fontSize - font-size: ${props => props.fontSize && props.fontSize}; - - // color - color: ${(props) => (props.color ? props.theme[props.color] : '')}; - - // colorHex - color: ${props => props.colorHex && props.colorHex}; - - // lineHeight - line-height: ${(props) => (props.lineHeight ? props.lineHeight : '')}; - - // bold - font-weight: ${(props) => (props.bold ? 'bold' : '')}; - - // fontWeight - font-weight: ${props => props.fontWeight && props.fontWeight}; - - // maxWidth - max-width: ${(props) => (props.maxWidth ? `${props.maxWidth}px` : '')}; - - // margin - margin: ${props => props.margin ? props.margin : ''}; - - // pointer - cursor: ${props => props.pointer && 'pointer'}; - - // underline - text-decoration: ${props => props.underline && 'underline'}; -`; - -const Body = (props) => ( - - {props.children} - -); - -export default Body; diff --git a/client-cra-legacy/src/components/fonts/ErrMsg.jsx b/client-cra-legacy/src/components/fonts/ErrMsg.jsx deleted file mode 100644 index 23c454b..0000000 --- a/client-cra-legacy/src/components/fonts/ErrMsg.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - font-size: .8rem; - color: ${(props) => props.theme.danger}; - margin-top: .5rem; -`; - -const ErrMsg = ({ - children, formik, name, ...rest -}) => { - const hasError = formik ? formik.touched[name] && formik.errors[name] : false; - const error = hasError ? formik.errors[name] : undefined; - - return ( - - {error || children} - - ); -}; - -export default ErrMsg; diff --git a/client-cra-legacy/src/components/fonts/Heading.jsx b/client-cra-legacy/src/components/fonts/Heading.jsx deleted file mode 100644 index 4f93a28..0000000 --- a/client-cra-legacy/src/components/fonts/Heading.jsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const StyledHeading = styled.h2` - opacity: .9; - font-size: 1.5rem; - font-weight: bold; - color: '#3B454E'; -`; - -const Heading = ({ children, ...rest }) => ( - - {children} - -); - -export default Heading; diff --git a/client-cra-legacy/src/components/fonts/Label.jsx b/client-cra-legacy/src/components/fonts/Label.jsx deleted file mode 100644 index 647acc9..0000000 --- a/client-cra-legacy/src/components/fonts/Label.jsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.label` - margin-bottom: .5rem; -`; - -const Label = (props) => ( - - {props.children} - -); - -export default Label; diff --git a/client-cra-legacy/src/components/fonts/ListingInfo.jsx b/client-cra-legacy/src/components/fonts/ListingInfo.jsx deleted file mode 100644 index 8e7dc11..0000000 --- a/client-cra-legacy/src/components/fonts/ListingInfo.jsx +++ /dev/null @@ -1,90 +0,0 @@ -import React from 'react' -import CloseRaw from 'src/assets/svgs/close-material.svg' -import theme from 'src/theme' -import formatListingDesc from 'src/util/helpers/formatListingDesc' -import getDateString from 'src/util/helpers/getDateString' -import getShortDateString from 'src/util/helpers/getShortDateString' -import styled from 'styled-components' -import BadgeV2 from '../displays/BadgeV2' -import IconContainer from '../displays/IconContainer' -import { FlexRow } from '../layouts/Flex' -import Space from '../layouts/Space' -import Body from './Body' - -const TextArea = styled.div` - padding: 0 0.2rem; - width: 100%; -` - -const Title = styled.h3` - white-space: nowrap; - flex-grow: 0; - text-overflow: ellipsis; - overflow: hidden; - margin-right: 0.5rem; - font-size: 1.1rem; - font-weight: 500; -` - -const Overline = styled.p` - white-space: nowrap; - flex-grow: 0; - text-overflow: ellipsis; - overflow: hidden; - font-size: 0.8rem; - font-weight: 500; - text-transform: uppercase; - opacity: 0.7; -` - -const CloseIcon = styled(CloseRaw)` - height: 1.2rem; - opacity: 0.7; - cursor: pointer; -` - -const ListingInfo = ({ listing, isShowingClose, onCloseClick, isHideDates }) => { - const { price, sold, availRooms, toCampus } = listing || {} - - return ( -
- -
- ) -} - -export default ListingInfo diff --git a/client-cra-legacy/src/components/fonts/Subheading.jsx b/client-cra-legacy/src/components/fonts/Subheading.jsx deleted file mode 100644 index c25abf4..0000000 --- a/client-cra-legacy/src/components/fonts/Subheading.jsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const StyledBody = styled.h2` - opacity: .9; - font-size: 1.2rem; - - white-space: pre-line; - line-height: 1.2; - word-break: break-word; - overflow: hidden; - text-overflow: ellipsis; - - // bold - font-weight: ${(props) => (props.bold ? 'bold' : '')}; - - // fontWeight - font-weight: ${props => props.fontWeight && props.fontWeight}; -`; - -const Subheading = ({ children, bold, ...rest }) => ( - - {children} - -); - -export default Subheading; diff --git a/client-cra-legacy/src/components/fonts/Text.jsx b/client-cra-legacy/src/components/fonts/Text.jsx deleted file mode 100644 index 9a66788..0000000 --- a/client-cra-legacy/src/components/fonts/Text.jsx +++ /dev/null @@ -1,112 +0,0 @@ -import React from 'react' -import styled from 'styled-components' - -const Text = ({ variant = 'p', children, ...rest }) => { - switch (variant) { - case 'h1': - return

{children}

- case 'h2': - return

{children}

- case 'h3': - return

{children}

- case 'h4': - return

{children}

- case 'h5': - return
{children}
- case 'h6': - return
{children}
- case 'h7': - return {children} - case 'p': - return

{children}

- } -} - -const CoreText = styled.p` - color: ${(props) => props.theme.text}; - white-space: pre-line; - word-break: break-word; - font-weight: 400; - line-height: 1.5; - letter-spacing: 0.5px; - - // ellipsis - text-overflow: ${(props) => (props.ellipsis ? 'ellipsis' : '')}; - overflow: ${(props) => (props.ellipsis ? 'hidden' : '')}; - white-space: ${(props) => (props.ellipsis ? 'nowrap' : '')}; - - // nowrap - white-space: ${(props) => (props.nowrap ? 'nowrap' : '')}; - - // color - color: ${(props) => props.color && props.color}; - - // fontWeight - font-weight: ${(props) => props.fontWeight && props.fontWeight}; - - // maxWidth - max-width: ${(props) => (props.maxWidth ? `${props.maxWidth}px` : '')}; - - // margin - margin: ${(props) => (props.margin ? props.margin : '')}; - - // uppercase - text-transform: ${(props) => props.uppercase && 'uppercase'}; - - // maxLines - overflow: ${(props) => props.maxLines && 'hidden'}; - text-overflow: ${(props) => props.maxLines && 'ellipsis'}; - display: ${(props) => props.maxLines && '-webkit-box'}; - -webkit-line-clamp: ${(props) => props.maxLines && props.maxLines}; - -webkit-box-orient: ${(props) => props.maxLines && 'vertical'}; -` - -const H1 = styled(CoreText)` - font-size: 42px; - font-weight: 500; - - @media (min-width: ${(props) => props.theme.medium}) { - font-size: 48px; - } -` - -const H2 = styled(CoreText)` - font-size: 30px; - font-weight: 500; - - @media (min-width: ${(props) => props.theme.medium}) { - font-size: 36px; - } -` - -const H3 = styled(CoreText)` - font-size: 24px; - font-weight: 500; -` - -const H4 = styled(CoreText)` - font-size: 18px; - font-weight: 500; -` - -const P = styled(CoreText)` - font-size: 16px; -` - -const H5 = styled(CoreText)` - font-size: 14px; - - @media (min-width: ${(props) => props.theme.medium}) { - font-size: 16px; - } -` - -const H6 = styled(CoreText)` - font-size: 12px; -` - -const H7 = styled(CoreText)` - font-size: 11px; -` - -export default Text diff --git a/client-cra-legacy/src/components/footers/MainFooter.jsx b/client-cra-legacy/src/components/footers/MainFooter.jsx deleted file mode 100644 index 73d1012..0000000 --- a/client-cra-legacy/src/components/footers/MainFooter.jsx +++ /dev/null @@ -1,101 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import Logo from 'src/components/displays/Logo' -import Body from 'src/components/fonts/Body' -import useRouter from 'src/util/hooks/useRouter' -import { Link } from 'react-router-dom' -import useIsMobile from 'src/util/hooks/useIsMobile' -import { matchPath } from 'react-router' -import Space from '../layouts/Space' -import theme from 'src/theme' -import Text from '../fonts/Text' -import { FlexRow } from '../layouts/Flex' -import { FlexColumn } from '../layouts/Flex' - -const FooterContainer = styled.div` - border-top: 1px solid ${(props) => props.theme.border.default}; - padding: 1rem; -` - -const JayLink = styled.a` - text-decoration: underline; - color: ${(props) => props.theme.brand[500]}; - font-weight: 400; -` - -const MobileFooter = ({ matched }) => ( - - - - - - Terms of Service - - - Privacy Policy - - - Cookie Policy - - - - - contactcornlet@gmail.com - - {/* - - Built with ❤️ by Jay - */} - {matched && matched.isExact && } - -) - -const StyledLink = styled(Link)` - padding: 0 0.3rem; - - @media (min-width: ${(props) => props.theme.md}px) { - &:hover { - text-decoration: underline; - } - } -` - -const MainFooter = () => { - const router = useRouter() - const matched = matchPath(router.pathname, { - path: '/listing/:lid', - exact: true, - strict: false, - }) - const pathArr = router.pathname.split('/') - const isChatroomPath = pathArr.length === 4 && pathArr[1] === 'profile' && pathArr[2] === 'chat' - const isMobile = useIsMobile() - - if (isChatroomPath && isMobile) return
- - if (isMobile) return - - return ( - - - - {/* Built with ❤️ by Jay */} - {/* Built with ❤️ by Jay */} - - - - - contactcornlet@gmail.com - - - Terms of Service • - Privacy Policy • - Cookie Policy - - - - - ) -} - -export default MainFooter diff --git a/client-cra-legacy/src/components/forms/ListingForm/Amenities.jsx b/client-cra-legacy/src/components/forms/ListingForm/Amenities.jsx deleted file mode 100644 index c021e46..0000000 --- a/client-cra-legacy/src/components/forms/ListingForm/Amenities.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Body from 'src/components/fonts/Body'; -import amenities from 'src/constants/amenities'; -import AmenityGrp from 'src/components/displays/AmenityGrp'; -import AmenitiesList from 'src/containers/AmenitiesList'; - -const Container = styled.div` - -`; - -const Amenities = ({ formik }) => { - const toggle = (value) => { - if (formik.values.amenities.includes(value)) { - const newAmenities = [...formik.values.amenities]; - newAmenities.splice(formik.values.amenities.indexOf(value), 1); - formik.setFieldValue('amenities', newAmenities); - } - else { - formik.setFieldValue('amenities', [...formik.values.amenities, value]); - } - }; - - return ( - - Click on amenity icons to activate them - - {amenities.map((amenity) => ( - toggle(amenity.value)} - /> - ))} - - - ); -}; - -export default Amenities; diff --git a/client-cra-legacy/src/components/forms/ListingForm/CustomFileUpload.jsx b/client-cra-legacy/src/components/forms/ListingForm/CustomFileUpload.jsx deleted file mode 100644 index 830e857..0000000 --- a/client-cra-legacy/src/components/forms/ListingForm/CustomFileUpload.jsx +++ /dev/null @@ -1,148 +0,0 @@ -import React, { useState, useEffect } from 'react' -import styled from 'styled-components' -import FileUpload from 'src/components/inputs/FileUpload' -import ErrMsg from 'src/components/fonts/ErrMsg' -import generator from 'generate-password' -import CircleCross from 'src/components/buttons/CircleCross' - -const CustomFileUpload = ({ formik, name, user }) => { - const [newSrc, setNewSrc] = useState() - const random = generator.generate({ - length: 16, - numbers: true, - }) - - // add new image to formik - useEffect(() => { - if (newSrc) { - const newFiles = [...formik.values[name]] - if (!newFiles.includes(newSrc)) { - newFiles.push(newSrc) - } - formik.setFieldValue(name, newFiles) - } - }, [newSrc, name]) - - // delete image - const handleDelete = (targetSrc) => { - const newFiles = [...formik.values[name]] - if (newFiles.includes(targetSrc)) { - newFiles.splice(newFiles.indexOf(targetSrc), 1) - } - formik.setFieldValue(name, newFiles) - } - - // set default thumbnailIdx to 0 - useEffect(() => { - if (!formik.values.thumbnailIdx) { - formik.setFieldValue('thumbnailIdx', 0) - } - }, []) - - const setThumbnailIdx = (i) => { - formik.setFieldValue('thumbnailIdx', i) - } - - return ( - - - - - {formik.values[name].map((src, i) => { - const isThumbnail = i === formik.values.thumbnailIdx - return ( - - setThumbnailIdx(i)} - /> - - handleDelete(src)} /> - - {isThumbnail && Thumbnail} - setThumbnailIdx(i)}> - Set Thumbnail - - - ) - })} - - - ) -} - -const Container = styled.div` - margin: 1rem 0; -` - -const ImgContainer = styled.div` - margin-top: 2rem; - display: flex; - flex-wrap: wrap; -` - -const CrossContiner = styled.div` - position: absolute; - top: 0; - right: 0; - - @media (min-width: ${(props) => props.theme.md}px) { - display: none; - } -` - -const Img = styled.img` - object-fit: cover; - width: 100px; - height: 100px; - margin: 0.5rem; - border-radius: 5px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - cursor: pointer; - - // isThumbnail - box-shadow: ${(props) => props.isThumbnail && `0 0 0 3px ${props.theme.primary}`}; - - @media (min-width: ${(props) => props.theme.md}px) { - &:hover { - box-shadow: ${(props) => `0 0 0 3px ${props.theme.primary}`}; - } - } -` - -const ThumbnailText = styled.p` - color: ${(props) => props.theme.primary}; - font-weight: bold; - text-align: center; - font-size: 0.9rem; -` - -const SetThumbnailText = styled.p` - color: ${(props) => props.theme.primary}; - font-weight: bold; - text-align: center; - font-size: 0.9rem; - opacity: 0; - cursor: pointer; - - // isThumbnail - display: ${(props) => props.isThumbnail && 'none'}; -` - -const ImgWrapper = styled.div` - position: relative; - - @media (min-width: ${(props) => props.theme.md}px) { - &:hover ${SetThumbnailText} { - opacity: 0.9; - } - - &:hover ${CrossContiner} { - display: block; - } - } -` - -export default CustomFileUpload diff --git a/client-cra-legacy/src/components/forms/ListingForm/Form.jsx b/client-cra-legacy/src/components/forms/ListingForm/Form.jsx deleted file mode 100644 index 65d307a..0000000 --- a/client-cra-legacy/src/components/forms/ListingForm/Form.jsx +++ /dev/null @@ -1,223 +0,0 @@ -import React, { useEffect, useState } from 'react' -import styled from 'styled-components' -import { useFormik } from 'formik' -import * as Yup from 'yup' -import Btn from 'src/components/buttons/Btn' -import api from 'src/util/api' -import log from 'src/util/log' -import { useHistory, Prompt } from 'react-router-dom' -import { useDispatch, useSelector } from 'react-redux' -import useRouter from 'src/util/hooks/useRouter' -import Modal from 'src/components/views/Modal' -import Body from 'src/components/fonts/Body' -import FormContents from './FormContents' -import PolicyDisclaimer from 'src/components/displays/PolicyDisclaimer' -import signin from 'src/util/helpers/signin' -import debounce from 'just-debounce-it' -import Snackbar from 'src/components/displays/Snackbar' - -const Form = styled.form` - @media (min-width: ${(props) => props.theme.md}px) { - max-width: 700px; - } -` - -const Center = styled.div` - display: flex; - justify-content: center; - margin: 2rem 0; -` - -const FormComponent = ({ user, initialValues }) => { - const history = useHistory() - const dispatch = useDispatch() - const tempValues = useSelector((state) => state.tempValues) - const router = useRouter() - - // configure inital values - const defaultValues = { - addr: '', - price: 0, - start: new Date(), - end: new Date(), - type: 'apt', - totalRooms: 0, - availRooms: 0, - bathrooms: 0, - femaleRoommates: 0, - maleRoommates: 0, - amenities: [], - imgs: [], - thumbnailIdx: 0, - desc: '', - active: true, - sold: false, - cornellOnly: false, - } - const devValues = { - addr: 'test addr', - price: 100, - start: new Date(), - end: new Date(), - type: 'apt', - totalRooms: 3, - availRooms: 1, - bathrooms: 1.5, - femaleRoommates: 1, - maleRoommates: 2, - amenities: [], - imgs: [ - 'https://firebasestorage.googleapis.com/v0/b/cornlet-prod.appspot.com/o/temp%2Fforest.jpg?alt=media&token=967fa2f7-3730-4ebf-9b05-aa3c4cafeb59', - 'https://firebasestorage.googleapis.com/v0/b/cornlet-prod.appspot.com/o/user%2F111196813972660835996%2Fcollege-dorm-room-200395471-001-58a1a2a55f9b58819c128c01.jpg?alt=media&token=03a743d2-87c4-4831-a4fd-354bc8f7a2cd', - ], - thumbnailIdx: 0, - desc: 'test description', - active: true, - sold: false, - cornellOnly: false, - } - const dynInitValues = - initialValues || - tempValues || - (process.env.NODE_ENV === 'development' && devValues) || - defaultValues - - // error modal - const [modal, setModal] = useState(false) - const handleClose = () => { - setModal(false) - } - - // define form - const formik = useFormik({ - initialValues: dynInitValues, - validationSchema: Yup.object({ - addr: Yup.string().required('Required'), - toCampus: Yup.number().required('Please select an address from the address options dropdown'), - price: Yup.number().required('Required'), - start: Yup.object().nullable(), - end: Yup.object().nullable(), - type: Yup.string().required('Required'), - imgs: Yup.array().of(Yup.string()).required('Required'), - desc: Yup.string().required('Required'), - active: Yup.boolean().required('Required'), - sold: Yup.boolean().required('Required'), - cornellOnly: Yup.boolean().required('Required'), - }), - onSubmit: async (values) => { - if (initialValues) { - // update listing - await api.put(`/listing/${initialValues._id}/update`, values) - } else if (user) { - // create new listing - await api.post('/listing/create', { ...values, user }) - history.push('/profile/listings') - } else { - // save form values, redirect to login - dispatch({ - type: 'TEMP_VALUES_SET', - payload: values, - }) - signin({ - redirectPath: '/new', - }) - } - }, - }) - - // auto save - const [lastSaved, setLastSaved] = React.useState(null) - const [isSnackbarOpen, setIsSnackbarOpen] = useState(false) - - const formatSaveTime = (date) => { - if (!date) return '' - - let hours = date.getHours() - const ampm = hours >= 12 ? 'pm' : 'am' - hours = hours % 12 - hours = hours ? hours : 12 - - let minutes = date.getMinutes() - minutes = minutes < 10 ? '0' + minutes : minutes - - const strTime = hours + ':' + minutes + ' ' + ampm - return strTime - } - - const debouncedSubmit = React.useCallback( - debounce( - () => - formik.submitForm().then(() => { - setLastSaved(new Date()) - }), - 500 - ), - [formik.submitForm] - ) - - useEffect(() => { - if (initialValues && user) { - debouncedSubmit() - } - }, [debouncedSubmit, formik.values]) - - useEffect(() => { - if (lastSaved) { - setIsSnackbarOpen(true) - } - }, [lastSaved]) - - // error on submit - const hasErrors = Object.keys(formik.errors).length !== 0 - const handleSubmitAttempt = () => { - if (hasErrors) { - setModal(true) - } else if (initialValues && user) { - router.push('/profile/listings') - } - } - - if (tempValues && user) { - api - .post('/listing/create', { ...tempValues, user }) - .then(() => { - dispatch({ - type: 'TEMP_VALUES_SET', - payload: null, - }) - router.history.push('/profile/listings') - }) - .catch((e) => { - log('ERROR new listing submit form', e) - }) - return
Creating listing...
- } - - return ( - <> -
- - -
- - Save Listing - -
- - There were errors in the form. - Please fix the errors before saving the listing. - - Go back - - - - - - ) -} - -export default FormComponent diff --git a/client-cra-legacy/src/components/forms/ListingForm/FormContents.jsx b/client-cra-legacy/src/components/forms/ListingForm/FormContents.jsx deleted file mode 100644 index 17be14a..0000000 --- a/client-cra-legacy/src/components/forms/ListingForm/FormContents.jsx +++ /dev/null @@ -1,123 +0,0 @@ -import React from 'react' -import Heading from 'src/components/fonts/Heading' -import Text from 'src/components/fonts/Text' -import AddrInput from 'src/components/inputs/AddrInput' -import Checkbox from 'src/components/inputs/Checkbox' -import Incrementor from 'src/components/inputs/Incrementor' -import Input from 'src/components/inputs/Input' -import Select from 'src/components/inputs/Select' -import theme from 'src/theme' -import styled from 'styled-components' -import CustomFileUpload from './CustomFileUpload' -import StartEnd from './StartEnd' - -const FormContents = ({ formik, user }) => ( - - Property Information - - - - - - Photos - - Settings - - - - {user && user.email === 'jj534@cornell.edu' && ( -
- - -
- )} -
-) - -const Container = styled.div` - & > * { - margin: 0.5rem 0; - } -` - -const Row = styled.div` - display: flex; - justify-content: space-between; - align-items: center; -` - -const InputContainer = styled.div` - margin: 1rem 0; - - @media (min-width: ${(props) => props.theme.md}px) { - max-width: 400px !important; - } -` - -const VerticalMargin = styled.div` - margin: 2rem 0; -` - -const MarginedHeading = styled(Heading)` - margin-top: 2rem; - margin-bottom: 1rem; -` - -const InfoTextContainer = styled.div` - max-width: 400px; -` - -export default FormContents diff --git a/client-cra-legacy/src/components/forms/ListingForm/StartEnd.jsx b/client-cra-legacy/src/components/forms/ListingForm/StartEnd.jsx deleted file mode 100644 index 251e6e4..0000000 --- a/client-cra-legacy/src/components/forms/ListingForm/StartEnd.jsx +++ /dev/null @@ -1,77 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import styled from 'styled-components'; -import DatePicker from 'react-datepicker'; -import 'react-datepicker/dist/react-datepicker.css'; -import ErrMsg from 'src/components/fonts/ErrMsg'; -import Body from 'src/components/fonts/Body'; - -const Container = styled.div` - display: flex; - align-items: center; - margin: 2rem 0 !important; - - & > * { - margin-right: 1rem; - } -`; - -const StyledPicker = styled(DatePicker)` - border: 1px solid rgba(0, 0, 0, .1); - box-shadow: 0 2px 4px rgba(0, 0, 0, .2); - border-radius: 5px; - - cursor: pointer; - text-align: center; - line-height: 1.2; - - width: 130px; - padding: .5rem 1rem; -`; - -const Col = styled.div` - display: flex; - align-items: center; -`; - -const StartEnd = ({ formik }) => { - const startInit = formik.values.start ? new Date(formik.values.start) : new Date(); - const endInit = formik.values.end ? new Date(formik.values.end) : new Date(); - const [start, setStart] = useState(startInit); - const [end, setEnd] = useState(endInit); - - useEffect(() => { - formik.setFieldValue('start', new Date(start)); - }, [start]); - - useEffect(() => { - formik.setFieldValue('end', new Date(end)); - }, [end]); - - return ( - - - setStart(date)} - /> - - - to - - setEnd(date)} - /> - - - - ); -}; - -export default StartEnd; diff --git a/client-cra-legacy/src/components/forms/ListingForm/index.jsx b/client-cra-legacy/src/components/forms/ListingForm/index.jsx deleted file mode 100644 index 16ccb8f..0000000 --- a/client-cra-legacy/src/components/forms/ListingForm/index.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import Form from './Form' - -const ListingFormIndex = ({ user, initialValues }) => ( -
-
-
-) - -export default ListingFormIndex diff --git a/client-cra-legacy/src/components/headers/BackHeader/index.jsx b/client-cra-legacy/src/components/headers/BackHeader/index.jsx deleted file mode 100644 index 51daea6..0000000 --- a/client-cra-legacy/src/components/headers/BackHeader/index.jsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import LeftArrowRaw from 'src/assets/svgs/left-arrow.svg' -import { useHistory } from 'react-router-dom' -import Body from 'src/components/fonts/Body' -import Space from 'src/components/layouts/Space' -import useRouter from 'src/util/hooks/useRouter' - -const BackHeader = ({ to, fullwidth, label }) => { - const history = useHistory() - const router = useRouter() - - const handleClick = () => { - if (to) history.push(to) - else if (history.length > 1) { - history.goBack() - } else { - router.push('/') - } - } - - return ( - - - - - {label} - - - ) -} - -const Container = styled.div` - padding: 2rem ${(props) => (props.fullwidth ? '2rem' : '.5rem')}; - display: inline-block; - - @media (min-width: ${(props) => props.theme.medium}) { - padding: 0; - } -` - -const Pointer = styled.div` - cursor: pointer; - display: flex; - align-items: center; -` - -const LeftArrow = styled(LeftArrowRaw)` - width: 20px; - height: 20px; - opacity: 0.8; -` - -export default BackHeader diff --git a/client-cra-legacy/src/components/headers/FeedbackBanner/index.jsx b/client-cra-legacy/src/components/headers/FeedbackBanner/index.jsx deleted file mode 100644 index a32c0ca..0000000 --- a/client-cra-legacy/src/components/headers/FeedbackBanner/index.jsx +++ /dev/null @@ -1,38 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - position: absolute; - left: 0; - right: 0; - padding: .3rem 0; - background: ${(props) => props.theme.primary}; - color: white; - font-size: .8rem; - text-align: center; - opacity: .6; - box-shadow: 0 2px 4px rgba(0, 0, 0, .2); -`; - -const FeedbackBanner = () => { - const [dispText, setDispText] = useState(''); - const texts = [ - 'Would you be able to change this?', - 'Can this be a new part of the website?', - 'Is is possible to change this part?', - ]; - - useEffect(() => { - setDispText(texts[Math.floor(Math.random() * texts.length)]); - }, [window.location, texts]); - - return ( - - - {dispText} - - - ); -}; - -export default FeedbackBanner; diff --git a/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/BmDropdown.jsx b/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/BmDropdown.jsx deleted file mode 100644 index 7da5c02..0000000 --- a/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/BmDropdown.jsx +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Dropdown from 'src/components/views/Dropdown'; -import BmListing from './BmListing'; -import PerfectScrollbar from 'react-perfect-scrollbar' - -const Container = styled.div` - max-height: 350px; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 400px; - } - - & > div { - border-bottom: 1px solid rgba(0, 0, 0, .2); - } - - & > div:last-child { - border-bottom: none; - } -`; - -const DropdownContent = styled.div` - background: white; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, .2); -`; - -const NoBm = styled.div` - display: flex; - justify-content: center; - padding: .5rem; -`; - -const BmDropdown = ({ listings, dropdown, setDropdown }) => { - const noBmText = No bookmarks!; - - return ( - - - - - {(!listings || !listings.length) - ? noBmText - : listings.map((listing) => ( - - )) - } - - - - - ); -}; - -export default BmDropdown; diff --git a/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/BmListing.jsx b/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/BmListing.jsx deleted file mode 100644 index fc59544..0000000 --- a/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/BmListing.jsx +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Body from 'src/components/fonts/Body'; -import listingDatestring from 'src/util/helpers/listingDatestring'; -import log from 'src/util/log'; -import api from 'src/util/api'; -import { useSelector, useDispatch } from 'react-redux'; -import { Link } from 'react-router-dom'; -import ListingInfo from 'src/components/fonts/ListingInfo'; - -const Container = styled.div` - display: flex; - width: 100%; - height: 5.3rem; -`; - -const Img = styled.img` - width: 30%; - height: 100%; - object-fit: cover; -`; - -const Data = styled.div` - width: 70%; - height: 100%; - padding: .2rem .5rem; -`; - -const BmListing = ({ listing }) => { - const user = useSelector((state) => state.user); - const dispatch = useDispatch(); - const handleRemove = async (e) => { - try { - e.preventDefault(); - - if (!user) { - dispatch({ - type: 'BM_REMOVE', - payload: listing, - }); - } - else { - dispatch({ - type: 'USER_BM_REMOVE', - payload: listing, - }) - - await api.put(`/user/${user._id}/bm/remove/${listing._id}`) - .catch(({ response }) => log('BmListing', response)) - } - } - catch (error) { - log('BmListing', error); - } - }; - - return ( -
- - - - - - - - -
- ); -}; - -export default BmListing; diff --git a/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/index.jsx b/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/index.jsx deleted file mode 100644 index 82e1393..0000000 --- a/client-cra-legacy/src/components/headers/MainHeader/Bookmarks/index.jsx +++ /dev/null @@ -1,70 +0,0 @@ -import React, { useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import BMIconRaw from 'src/assets/svgs/bookmark.svg' -import ClickableIcon from 'src/components/displays/ClickableIcon' -import CornerRedDot from 'src/components/displays/CornerRedDot' -import api from 'src/util/api' -import useRouter from 'src/util/hooks/useRouter' -import log from 'src/util/log' -import styled from 'styled-components' - -const Bookmarks = () => { - const bm = useSelector((state) => state.bm) - const user = useSelector((state) => state.user) - const [dropdown, setDropdown] = useState(false) - const dispatch = useDispatch() - const router = useRouter() - const handleClick = () => { - setDropdown(true) - - if (!user) { - dispatch({ - type: 'BM_NOTIF_FALSE', - payload: null, - }) - } else { - dispatch({ - type: 'USER_BM_NOTIF_FALSE', - payload: null, - }) - - api - .put(`/user/${user._id}/bm/notif/false`) - .catch(({ response }) => log('Bookmarks', response)) - } - router.push('/profile/bookmarks') - } - - return ( - - - - {(user ? user.bm && user.bm.notif : bm && bm.notif) && } - - - - - ) -} - -const Container = styled.div` - flex-grow: 0; - - @media (min-width: ${(props) => props.theme.md}px) { - position: relative; - } -` - -const BMIconContainer = styled.div` - position: relative; - flex-grow: 0; -` - -const BMIcon = styled(BMIconRaw)` - height: 1.6rem; - width: 1.6rem; - opacity: 0.7; - cursor: pointer; -` - -export default Bookmarks diff --git a/client-cra-legacy/src/components/headers/MainHeader/Chat/index.jsx b/client-cra-legacy/src/components/headers/MainHeader/Chat/index.jsx deleted file mode 100644 index fdd6ed3..0000000 --- a/client-cra-legacy/src/components/headers/MainHeader/Chat/index.jsx +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import { useSelector } from 'react-redux' -import ChatIcon from 'src/assets/svgs/mail.svg' -import CornerRedDot from 'src/components/displays/CornerRedDot' -import { Link } from 'react-router-dom' -import Body from 'src/components/fonts/Body' -import ClickableIcon from 'src/components/displays/ClickableIcon' - -const Chat = () => { - const chatrooms = useSelector((state) => state.chatrooms) - const user = useSelector((state) => state.user) - let hasNotif = false - if (user) { - chatrooms.forEach((chatroom) => { - if (chatroom.notifUids.includes(user.uid)) { - hasNotif = true - } - }) - } - - return ( - - - - - {hasNotif && } - - - - ) -} - -const Container = styled.div` - position: relative; -` - -const StyledChatIcon = styled(ChatIcon)` - height: 1.6rem; - width: 1.6rem; - opacity: 0.7; - cursor: pointer; -` - -export default Chat diff --git a/client-cra-legacy/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx b/client-cra-legacy/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx deleted file mode 100644 index 11871c0..0000000 --- a/client-cra-legacy/src/components/headers/MainHeader/MobileNav/FullscreenNav.jsx +++ /dev/null @@ -1,119 +0,0 @@ -import React, { useEffect, useState } from 'react' -import styled from 'styled-components' -import useRouter from 'src/util/hooks/useRouter' -import { useSelector } from 'react-redux' -import signin from 'src/util/helpers/signin' -import { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock' -import useUnreadChatrooms from 'src/util/hooks/useUnreadChatrooms' -import NotifCounter from 'src/components/displays/NotifCounter' -import CloseRaw from 'src/assets/svgs/close.svg' - -const Container = styled.div` - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 99; - background: white; - height: 100vh; - padding: 1.5rem 0; -` - -export const Header = styled.div` - width: 100%; - display: flex; - justify-content: flex-end; - padding: 0 1.8rem 1rem 0; -` - -export const NavContent = styled.div` - padding: 0 2rem; -` - -export const HoriLine = styled.div` - width: 100%; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - margin: 2rem 0; -` - -export const NavContainer = styled.div` - margin: 2rem 0; - display: flex; -` - -export const NavElt = styled.nav` - font-size: 1.8rem; - cursor: pointer; - margin-right: 1rem; -` - -const CloseSVG = styled(CloseRaw)` - height: 1.5rem; - width: 1.5rem; - opacity: 0.8; - cursor: pointer; - padding: 0.1rem; -` - -const FullscreenNav = ({ setIsMenuOpen }) => { - const router = useRouter() - const handleRedirect = (path) => { - router.history.push(path) - setIsMenuOpen(false) - } - - const user = useSelector((state) => state.user) - const unreadChatroomsCount = useUnreadChatrooms().length - - // prevent scroll - const targetRef = React.createRef() - useEffect(() => { - window.scrollTo(0, 1) - disableBodyScroll(targetRef.current) - - return () => { - clearAllBodyScrollLocks() - } - }, []) - - return ( - -
- setIsMenuOpen(false)} /> -
- - - handleRedirect('/')}>Home - - - handleRedirect('/new')}>Create listing - - {user ? ( -
- - - handleRedirect('/profile')}>My listings - - - handleRedirect('/profile/bookmarks')}>Bookmarks - - - handleRedirect('/profile/chat')}>Messages - {unreadChatroomsCount > 0 && {unreadChatroomsCount}} - - - handleRedirect('/profile/settings')}>Settings - -
- ) : ( - - Sign in - - )} -
-
- ) -} - -export default FullscreenNav diff --git a/client-cra-legacy/src/components/headers/MainHeader/MobileNav/index.jsx b/client-cra-legacy/src/components/headers/MainHeader/MobileNav/index.jsx deleted file mode 100644 index a49e77e..0000000 --- a/client-cra-legacy/src/components/headers/MainHeader/MobileNav/index.jsx +++ /dev/null @@ -1,50 +0,0 @@ -import React, { useState } from 'react' -import { FlexRow } from 'src/components/layouts/Flex' -import Space from 'src/components/layouts/Space' -import styled from 'styled-components' -import Bookmarks from '../Bookmarks' -import FullscreenNav from './FullscreenNav' -import BurgerIcon from 'src/assets/svgs/burger.svg' - -export const Wrapper = styled.div` - display: flex; - flex-direction: column; -` - -const Container = styled.div` - padding-right: 0.5rem; -` - -export const Burger = styled.div` - cursor: pointer; -` - -export const Line = styled.div` - width: 1.5rem; - border-bottom: 2px solid rgba(0, 0, 0, 0.8); - margin-bottom: 0.3rem; -` - -const MobileNav = () => { - const [isMenuOpen, setIsMenuOpen] = useState(false) - - return ( - - - - - - setIsMenuOpen(true)} /> - - - {isMenuOpen && } - - ) -} - -const StyledBurgerIcon = styled(BurgerIcon)` - height: 30px; - width: 30px; -` - -export default MobileNav diff --git a/client-cra-legacy/src/components/headers/MainHeader/index.jsx b/client-cra-legacy/src/components/headers/MainHeader/index.jsx deleted file mode 100644 index ad16afb..0000000 --- a/client-cra-legacy/src/components/headers/MainHeader/index.jsx +++ /dev/null @@ -1,72 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import Btn from 'src/components/buttons/Btn' -import { Link } from 'react-router-dom' -import Auth from 'src/components/buttons/Auth' -import Logo from 'src/components/displays/Logo' -import useIsDesktop from 'src/util/hooks/useIsDesktop' -import Bookmarks from './Bookmarks' -import Chat from './Chat' -import MobileNav from './MobileNav' -import PlusIcon from 'src/assets/svgs/plus.svg' -import ClickableIcon from 'src/components/displays/ClickableIcon' - -const MainHeader = () => { - const isDesktop = useIsDesktop() - - return ( - - - - - {isDesktop ? ( - - - - - Create listing - - - - - - - ) : ( - - )} - - ) -} - -const Container = styled.div` - display: flex; - justify-content: space-between; - align-items: center; - padding: 0.5rem 0; - position: relative; - - @media (min-width: ${(props) => props.theme.md}px) { - padding-left: 0; - padding-right: 0; - } -` - -const Right = styled.div` - display: flex; - align-items: center; - - & > * { - margin-left: 1rem; - } -` - -const StyledPlusIcon = styled(PlusIcon)` - fill: #fff; -` - -const ButtonText = styled.p` - margin-left: 0.2rem; - line-height: 1.5; -` - -export default MainHeader diff --git a/client-cra-legacy/src/components/headers/Navbar/NavElt.jsx b/client-cra-legacy/src/components/headers/Navbar/NavElt.jsx deleted file mode 100644 index 9bf21a5..0000000 --- a/client-cra-legacy/src/components/headers/Navbar/NavElt.jsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import { Link, useLocation } from 'react-router-dom'; -import NotifCounter from 'src/components/displays/NotifCounter'; - -const Container = styled.div` - padding: 1rem; - display: flex; - align-items: center; - - // selected - border-bottom: ${(props) => (props.selected ? `3px solid ${props.theme.primary}` : '')}; -`; - -const Label = styled.p` - opacity: .8; - - // notifCount - margin-right: ${props => props.notifCount && '.5rem'}; - - // selected; - opacity: ${(props) => (props.selected ? '1' : '')}; - color: ${(props) => (props.selected ? props.theme.primary : '')}; -`; - -const NavElt = ({ label, to, notifCount }) => { - const { pathname } = useLocation(); - const selected = pathname.includes(to); - - return ( - - - - {notifCount > 0 && {notifCount}} - - - ); -}; - -export default NavElt; diff --git a/client-cra-legacy/src/components/headers/Navbar/index.jsx b/client-cra-legacy/src/components/headers/Navbar/index.jsx deleted file mode 100644 index bc22ae5..0000000 --- a/client-cra-legacy/src/components/headers/Navbar/index.jsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import NavElt from './NavElt'; -import useUnreadChatrooms from 'src/util/hooks/useUnreadChatrooms'; - -const Container = styled.div` - overflow: hidden; -`; - -const NavRow = styled.div` - display: flex; - overflow-y: auto; - - -ms-overflow-style: none; /* IE and Edge */ - scrollbar-width: none; /* Firefox */ - - &::-webkit-scrollbar { - display: none; - } -`; - -const HrLine = styled.div` - position: absolute; - border-bottom: 1px solid rgba(0, 0, 0, .2); - left: 0; - right: 0; -`; - -const Navbar = () => { - const unreadChatroomsCount = useUnreadChatrooms().length; - - return ( - - - - - - - - - - ) -}; - -export default Navbar; diff --git a/client-cra-legacy/src/components/inputs/AddrInput.jsx b/client-cra-legacy/src/components/inputs/AddrInput.jsx deleted file mode 100644 index e8b0ae4..0000000 --- a/client-cra-legacy/src/components/inputs/AddrInput.jsx +++ /dev/null @@ -1,119 +0,0 @@ -import React from 'react' -import PlacesAutocomplete, { geocodeByAddress, getLatLng } from 'react-places-autocomplete' -import useScript from 'src/util/hooks/useScript' -import Input from 'src/components/inputs/Input' -import styled from 'styled-components' -import calcDistance from 'src/util/helpers/calcDistance' -import log from 'src/util/log' -import LoadingDots from '../displays/LoadingDots' -import Dropdown from '../views/Dropdown' -import Body from '../fonts/Body' -import ErrMsg from '../fonts/ErrMsg' -import ListingLocation from '../displays/ListingLocation' - -const AddrInput = ({ formik, name, label }) => { - const [loaded, error] = useScript( - `https://maps.googleapis.com/maps/api/js?key=${process.env.REACT_APP_MAP_KEY}&libraries=places` - ) - - const handleChange = (address) => { - formik.setFieldValue(name, address) - formik.setFieldTouched('toCampus', true) - - // reset values on addr change - const { lat, lng, toCampus } = formik.values - if (lat !== '') formik.setFieldValue('lat', '') - if (lng !== '') formik.setFieldValue('lng', '') - if (toCampus !== '') formik.setFieldValue('toCampus', '') - } - - const handleSelect = (address) => { - handleChange(address) - geocodeByAddress(address) - .then((results) => getLatLng(results[0])) - .then((latLng) => { - const minDistance = Math.min( - calcDistance(42.443147, -76.485249, latLng.lat, latLng.lng), // collegetown - calcDistance(42.447549, -76.487739, latLng.lat, latLng.lng), // west - calcDistance(42.451288, -76.482072, latLng.lat, latLng.lng) // north - ) - formik.setFieldValue('toCampus', Math.round(minDistance * 10) / 10) - formik.setFieldValue('lat', latLng.lat) - formik.setFieldValue('lng', latLng.lng) - }) - .catch((e) => log('AddrInput', e)) - } - - if (!loaded || error) return
- - return ( - - {({ getInputProps, suggestions, getSuggestionItemProps, loading }) => ( - - - - - - { - if (!bool) suggestions = [] - }} - alignLeft - alignTop> - - {loading ? ( - - ) : ( - suggestions.map((suggestion) => ( - - {suggestion.description} - - )) - )} - - - - - )} - - ) -} - -const Container = styled.div` - width: 100%; -` - -const DropdownContainer = styled.div` - position: relative; - margin-top: 6px; -` - -const DropdownContent = styled.div` - background: white; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); -` - -const Suggestion = styled.div` - padding: 0.5rem 1rem; - cursor: pointer; - - // active - background: ${(props) => (props.active ? 'rgba(0, 0, 0, .1)' : '')}; -` - -export default AddrInput diff --git a/client-cra-legacy/src/components/inputs/Checkbox.jsx b/client-cra-legacy/src/components/inputs/Checkbox.jsx deleted file mode 100644 index 54cd12c..0000000 --- a/client-cra-legacy/src/components/inputs/Checkbox.jsx +++ /dev/null @@ -1,80 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Label from 'src/components/fonts/Label'; -import ErrMsg from 'src/components/fonts/ErrMsg'; -import Body from 'src/components/fonts/Body'; -import MaterialCheckbox from '@material-ui/core/Checkbox'; -import { withStyles } from '@material-ui/core/styles'; -import theme from 'src/theme'; - -const StyledCheckbox = withStyles({ - root: { - color: theme.primary, - '&$checked': { - color: theme.primary, - }, - }, - checked: {}, -})((props) => ); - -const Wrapper = styled.div` - // hasSublabel - margin-bottom: ${(props) => (props.hasSublabel ? '1rem !important' : '')}; -`; - -const InputArea = styled.div` - display: flex; - align-items: center; - - // hasSublabel - align-items: ${(props) => (props.hasSublabel ? 'flex-start' : '')}; -`; - -const LabelSection = styled.div` - display: flex; - flex-direction: column; - margin-left: 1rem; -`; - -const CheckboxLabel = styled(Label)` - margin-bottom: .2rem; - - // hasSublabel - font-weight: ${(props) => (props.hasSublabel ? 'bold' : '')}; - opacity: ${(props) => (props.hasSublabel ? '.8' : '')}; -`; - -const Checkbox = ({ - label, sublabel, name, formik, ...rest -}) => { - const hasError = formik ? formik.touched[name] && formik.errors[name] : false; - - const handleChange = (e) => { - if (e.target.checked) { - formik.setFieldValue(name, true); - } - else { - formik.setFieldValue(name, false); - } - }; - - return ( - - - - - {label} - {sublabel} - - - {hasError ? ( - {formik.errors[name]} - ) : null} - - ); -}; - -export default Checkbox; diff --git a/client-cra-legacy/src/components/inputs/FileUpload.jsx b/client-cra-legacy/src/components/inputs/FileUpload.jsx deleted file mode 100644 index 3108212..0000000 --- a/client-cra-legacy/src/components/inputs/FileUpload.jsx +++ /dev/null @@ -1,44 +0,0 @@ -import React, { useState } from 'react' -import styled from 'styled-components' -import uploadFile from 'src/services/firebase/uploadFile' -import log from 'src/util/log' -import Loading from 'src/components/displays/Loading' - -const Container = styled.div` - display: flex; - align-items: center; -` - -const FileUpload = ({ path, setSrc }) => { - const [loading, setLoading] = useState(false) - - const handleUploadFile = (file) => - new Promise((resolve, reject) => { - uploadFile(file, path) - .then((url) => { - setSrc(url) - resolve() - }) - .catch((error) => { - setLoading(false) - log('FileUpload', error) - reject(error) - }) - }) - - const handleUpload = async (e) => { - setLoading(true) - const promises = [...e.target.files].map((file) => handleUploadFile(file)) - await Promise.all(promises) - setLoading(false) - } - - return ( - - - {loading ? :
} - - ) -} - -export default FileUpload diff --git a/client-cra-legacy/src/components/inputs/Incrementor.jsx b/client-cra-legacy/src/components/inputs/Incrementor.jsx deleted file mode 100644 index f98e10a..0000000 --- a/client-cra-legacy/src/components/inputs/Incrementor.jsx +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Body from 'src/components/fonts/Body'; - -const Container = styled.div` - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; -`; - -const IncrementorSection = styled.div` - display: flex; - align-items: center; - - & > p { - width: 60px; - font-weight: bold; - text-align: center; - } -`; - -const IncrementBtn = styled.button` - background: inherit; - color: ${(props) => props.theme.primary}; - cursor: pointer; - - font-size: 1.5rem; - text-align: center; - - width: 2rem; - height: 2rem; - padding: 0; - - border-radius: 50%; - border: 1px solid ${(props) => props.theme.primary}; -`; - -const Incrementor = ({ - formik, label, name, increment, -}) => { - const dynIncrement = increment || 1; - const handleIncrement = () => { - formik.setFieldValue(name, Number(formik.values[name]) + dynIncrement, false); - }; - const handleDecrement = () => { - const val = Number(formik.values[name]) - dynIncrement; - formik.setFieldValue(name, val < 0 ? 0 : val, false); - }; - - return ( - - {label} - - - - {formik.values[name]} - + - - - ); -}; - -export default Incrementor; diff --git a/client-cra-legacy/src/components/inputs/Input.jsx b/client-cra-legacy/src/components/inputs/Input.jsx deleted file mode 100644 index 3036d8b..0000000 --- a/client-cra-legacy/src/components/inputs/Input.jsx +++ /dev/null @@ -1,89 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import { withStyles } from '@material-ui/core/styles'; -import TextField from '@material-ui/core/TextField'; -import InputAdornment from '@material-ui/core/InputAdornment'; -import theme from 'src/theme'; - -const StyledTextField = withStyles({ - root: { - '& label.Mui-focused': { - color: theme.primary, - }, - '& .MuiInput-underline:after': { - borderBottomColor: theme.primary, - }, - '& .MuiOutlinedInput-root': { - '&.Mui-focused fieldset': { - borderColor: theme.primary, - }, - }, - '& .MuiOutlinedInput-multiline': { - padding: '.5rem 1rem', - }, - }, -})(TextField); - -const Container = styled.div` - width: 100%; - display: flex; - font-size: 16px; - - & textarea { - line-height: 1.5; - word-break: break-word; - white-space: pre-line; - - // lineHeight - line-height: ${(props) => (props.lineHeight ? `${props.lineHeight}px` : '')}; - - // height based on rows - height: ${(props) => (props.rows && props.lineHeight ? `${props.rows * props.lineHeight}px}` : '')}; - } - - & > * { - flex-grow: 2; - } - - // width - width: ${(props) => (props.width ? `${props.width}px` : '')}; -`; - -const Input = ({ - formik, name, label, adornment, multiline, width, margin, rows, lineHeight, ...rest -}) => { - const hasError = formik ? formik.touched[name] && formik.errors[name] : false; - const error = hasError ? formik.errors[name] : undefined; - const formikProps = formik ? formik.getFieldProps(name) : []; - const wrappedAdornment = adornment - ? {adornment} - : null; - const multilineProps = { - multiline, - variant: 'outlined', - rows: rows || 20, - }; - const conditionalMultiline = multiline ? multilineProps : {}; - - return ( - - - - ); -}; - -export default Input; diff --git a/client-cra-legacy/src/components/inputs/Searchbar.jsx b/client-cra-legacy/src/components/inputs/Searchbar.jsx deleted file mode 100644 index 73b45da..0000000 --- a/client-cra-legacy/src/components/inputs/Searchbar.jsx +++ /dev/null @@ -1,71 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import styled from 'styled-components'; -import updateQuery from 'src/util/path/updateQuery'; -import getQuery from 'src/util/path/getQuery'; -import { useLocation, useHistory } from 'react-router-dom'; -import searchSvg from './search.svg'; - -const Form = styled.form` - -`; - -const Input = styled.input` - width: 15px; - color: transparent; - cursor: pointer; - background: white url(${(props) => props.searchSvg}) no-repeat 9px center; - padding: 9px 10px 9px 30px; - opacity: .6; - margin-right: 1rem; - box-shadow: 0 2px 4px rgba(0, 0, 0, .2); - font-size: 16px; - - -webkit-border-radius: 10em; - -moz-border-radius: 10em; - border-radius: 10em; - - -webkit-transition: all .5s; - -moz-transition: all .5s; - transition: all .5s; - - &:focus, &:valid { - width: 11rem; - padding-left: 40px; - color: #000; - background-color: #fff; - cursor: auto; - opacity: 1; - } -`; - -const Searchbar = () => { - const [q, setQ] = useState(); - const location = useLocation(); - const history = useHistory(); - const change = (e) => { - e.preventDefault(); - const newQ = e.target.value; - setQ(newQ); - }; - const handleSubmit = (e) => { - e.preventDefault(); - updateQuery({ q }, location, history); - }; - useEffect(() => { - const searchQuery = getQuery(location).q || ''; - setQ(searchQuery); - }, [location]); - return ( - - - - ); -}; - -export default Searchbar; diff --git a/client-cra-legacy/src/components/inputs/Select.jsx b/client-cra-legacy/src/components/inputs/Select.jsx deleted file mode 100644 index 256ec0b..0000000 --- a/client-cra-legacy/src/components/inputs/Select.jsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import TextField from '@material-ui/core/TextField' -import MenuItem from '@material-ui/core/MenuItem' -import { makeStyles } from '@material-ui/core/styles' - -const Select = ({ formik, name, opts, label, width, ...rest }) => { - const hasError = formik ? formik.touched[name] && formik.errors[name] : false - const error = hasError ? formik.errors[name] : undefined - const formikProps = formik ? formik.getFieldProps(name) : [] - const classes = useStyles() - - return ( - - - {opts.map((option) => ( - - {option.label} - - ))} - - - ) -} - -const Container = styled.div` - min-width: 100px; - - // width - min-width: ${(props) => (props.width ? `${props.width}px` : '')}; - - & .MuiSelect-outlined { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } -` - -const useStyles = makeStyles(() => ({ - textField: { - width: '100%', - 'text-align': 'center', - }, -})) - -export default Select diff --git a/client-cra-legacy/src/components/inputs/search.svg b/client-cra-legacy/src/components/inputs/search.svg deleted file mode 100644 index 97e6385..0000000 --- a/client-cra-legacy/src/components/inputs/search.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client-cra-legacy/src/components/layouts/Flex.jsx b/client-cra-legacy/src/components/layouts/Flex.jsx deleted file mode 100644 index ea71d8d..0000000 --- a/client-cra-legacy/src/components/layouts/Flex.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import styled from 'styled-components'; - -const FlexElement = styled.div` - display: flex; - - // justifySpaceBetween - justify-content: ${(props) => props.justifySpaceBetween && 'space-between'}; - - // justifyCenter - justify-content: ${(props) => props.justifyCenter && 'center'}; - - // justifyEnd - justify-content: ${(props) => props.justifyEnd && 'flex-end'}; - - // alignStart - align-items: ${(props) => props.alignStart && 'flex-start'}; - - // alignCenter - align-items: ${(props) => props.alignCenter && 'center'}; - - // alignEnd - align-items: ${(props) => props.alignEnd && 'flex-end'}; - - // flexDirection - flex-direction: ${(props) => props.flexDirection && props.flexDirection}; - - // wrap - flex-wrap: ${(props) => props.wrap && 'wrap'}; - - // fullWidth - width: ${(props) => props.fullWidth && '100%'}; - - // fullHeight - height: ${(props) => props.fullHeight && '100%'}; -` - -export const FlexColumn = styled(FlexElement)` - flex-direction: column; -` - -export const FlexRow = styled(FlexElement)` -` \ No newline at end of file diff --git a/client-cra-legacy/src/components/layouts/Space.jsx b/client-cra-legacy/src/components/layouts/Space.jsx deleted file mode 100644 index 133e89e..0000000 --- a/client-cra-legacy/src/components/layouts/Space.jsx +++ /dev/null @@ -1,8 +0,0 @@ -import styled from 'styled-components'; - -const Space = styled.div` - margin: ${(props) => props.margin && props.margin}; - padding: ${(props) => props.padding && props.padding}; -` - -export default Space diff --git a/client-cra-legacy/src/components/views/Dropdown/index.jsx b/client-cra-legacy/src/components/views/Dropdown/index.jsx deleted file mode 100644 index f520047..0000000 --- a/client-cra-legacy/src/components/views/Dropdown/index.jsx +++ /dev/null @@ -1,81 +0,0 @@ -import React, { useRef } from 'react' -import styled from 'styled-components' - -const Dropdown = ({ show, setShow, children, alignLeft, alignRight, alignTop, ...rest }) => { - const handleClick = (e) => { - e.stopPropagation() - } - const DropdownRef = useRef() - - const closeDropdown = () => { - setShow(false) - } - - const handleOverlayClick = (event) => { - event.stopPropagation() - event.preventDefault() - closeDropdown() - } - - return ( - <> - - {children} - - {show ? : null} - - ) -} - -const Overlay = styled.div` - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 998; -` - -const Container = styled.div` - position: absolute; - margin-top: 10px; - left: 0; - right: 0; - z-index: 999; - - @media (min-width: ${(props) => props.theme.md}px) { - top: 40px; - width: auto; - - // alignLeft - left: ${(props) => props.alignLeft && 'initial'}; - right: initial; - - // alignRight - left: ${(props) => props.alignRight && '-375px'}; - right: ${(props) => props.alignRight && '0'}; - - // alignTop - top: ${(props) => (props.alignTop ? '0' : '')}; - } - - & div { - white-space: nowrap; - flex-shrink: 0; - } - - // show - display: ${(props) => (props.show ? '' : 'none')}; - - // alignTop - margin-top: ${(props) => (props.alignTop ? '0' : '')}; -` - -export default Dropdown diff --git a/client-cra-legacy/src/components/views/Modal/index.jsx b/client-cra-legacy/src/components/views/Modal/index.jsx deleted file mode 100644 index 6b6a6bc..0000000 --- a/client-cra-legacy/src/components/views/Modal/index.jsx +++ /dev/null @@ -1,86 +0,0 @@ -import React from 'react' -import { makeStyles } from '@material-ui/core/styles' -import MaterialModal from '@material-ui/core/Modal' -import Backdrop from '@material-ui/core/Backdrop' -import Fade from '@material-ui/core/Fade' -import styled from 'styled-components' -import CloseRaw from 'src/assets/svgs/close.svg' -import Heading from 'src/components/fonts/Heading' - -const useStyles = makeStyles(() => ({ - modal: { - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - outline: 'none !important', - }, -})) - -const Modal = ({ heading, open, handleClose, children, contentPadding, ...rest }) => { - const classes = useStyles() - - return ( - - - - - {heading} - - - {children} - - - - ) -} - -const Container = styled.div` - background: white; - outline: none !important; - - padding: 1rem; - width: 90vw; - min-height: 150px; - border-radius: 8px; - - @media (min-width: ${(props) => props.theme.md}px) { - width: unset; - max-width: 80vw; - } -` - -const TopRow = styled.div` - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 0.5rem; -` - -const CloseSVG = styled(CloseRaw)` - height: 1rem; - width: 1rem; - opacity: 0.7; - cursor: pointer; -` - -const Content = styled.div` - text-align: center; - - & > button { - margin-top: 1rem; - } - - // contentPadding - padding: ${(props) => (props.contentPadding ? '1rem 0' : '')}; -` - -export default Modal diff --git a/client-cra-legacy/src/components/views/deprec/DynContainer/index.jsx b/client-cra-legacy/src/components/views/deprec/DynContainer/index.jsx deleted file mode 100644 index e8b1e47..0000000 --- a/client-cra-legacy/src/components/views/deprec/DynContainer/index.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Wrapper = styled.div` - width: 100%; - display: flex; - justify-content: center; -`; - -const Container = styled.div` - width: 90%; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 70%; - } -`; - -const DynContainer = ({ children, ...rest }) => ( - - - {children} - - -); - -export default DynContainer; diff --git a/client-cra-legacy/src/config.js b/client-cra-legacy/src/config.js deleted file mode 100644 index baf5659..0000000 --- a/client-cra-legacy/src/config.js +++ /dev/null @@ -1,11 +0,0 @@ -const cfg = { - TERMS: [{ - label: 'Summer 2020', - value: 'Summer 2020' - },{ - label: 'Fall 2020', - value: 'Fall 2020' - }] -} - -export default cfg; \ No newline at end of file diff --git a/client-cra-legacy/src/constants/amenities.jsx b/client-cra-legacy/src/constants/amenities.jsx deleted file mode 100644 index b029c03..0000000 --- a/client-cra-legacy/src/constants/amenities.jsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' -import WifiSVG from 'src/assets/svgs/wifi.svg' -import CarSVG from 'src/assets/svgs/car.svg' -import GymSVG from 'src/assets/svgs/gym.svg' -import HeaterSVG from 'src/assets/svgs/heater.svg' -import AirconSVG from 'src/assets/svgs/snowflake.svg' -import SofaSVG from 'src/assets/svgs/sofa.svg' -import UtilitiesSVG from 'src/assets/svgs/utilities.svg' -import BusSVG from 'src/assets/svgs/bus.svg' - -const amenities = [ - { - icon: , - label: 'Wifi', - value: 'wifi', - }, - { - icon: , - label: 'Parking', - value: 'parking', - }, - { - icon: , - label: 'Gym', - value: 'gym', - }, - { - icon: , - label: 'Heater', - value: 'heater', - }, - { - icon: , - label: 'Aircon', - value: 'aircon', - }, - { - icon: , - label: 'Furnished', - value: 'furnished', - }, - { - icon: , - label: 'Utilities Included', - value: 'utilities', - }, - { - icon: , - label: 'TCAT Accessible', - value: 'tcat', - }, -] - -export default amenities diff --git a/client-cra-legacy/src/containers/AmenitiesList.jsx b/client-cra-legacy/src/containers/AmenitiesList.jsx deleted file mode 100644 index 417c27d..0000000 --- a/client-cra-legacy/src/containers/AmenitiesList.jsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - display: flex; - flex-wrap: wrap; - align-items: center; - max-width: 370px; -`; - -const AmenitiesList = ({ children, ...rest }) => ( - - {children} - -); - -export default AmenitiesList; diff --git a/client-cra-legacy/src/containers/DynCardList/index.jsx b/client-cra-legacy/src/containers/DynCardList/index.jsx deleted file mode 100644 index b356c96..0000000 --- a/client-cra-legacy/src/containers/DynCardList/index.jsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Wrapper = styled.div` - display: flex; - justify-content: center; -`; - -const Container = styled.div` - display: flex; - flex-direction: column; - flex-wrap: wrap; - align-items: center; - justify-content: center; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 1565px; - flex-direction: row; - align-items: flex-start; - justify-content: flex-start; - - & > div { - padding-left: .5rem !important; - padding-right: .5rem !important; - } - - & > div:nth-child(odd) { - padding-left: 0; - } - - & > div:nth-child(even) { - padding-right: 0; - } - } -`; - -const DynCardList = ({ children, listings, ...rest }) => ( - - - {children} -
- - -); - -export default DynCardList; diff --git a/client-cra-legacy/src/containers/HoriCenter.jsx b/client-cra-legacy/src/containers/HoriCenter.jsx deleted file mode 100644 index d1ba958..0000000 --- a/client-cra-legacy/src/containers/HoriCenter.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import styled from 'styled-components'; - -const HoriCenter = styled.div` - display: flex; - justify-content: center; - align-items: center; -`; - -export default HoriCenter; diff --git a/client-cra-legacy/src/containers/RenderOn.jsx b/client-cra-legacy/src/containers/RenderOn.jsx deleted file mode 100644 index 9cb0ca9..0000000 --- a/client-cra-legacy/src/containers/RenderOn.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - display: none; - display: ${(props) => (props.mobile ? 'block' : '')}; - - @media (min-width: ${(props) => props.theme.md}px) { - display: none; - display: ${(props) => (props.desktop ? 'block' : '')}; - } -`; - -const RenderOn = ({ children, ...rest }) => ( - - {children} - -); - -export default RenderOn; diff --git a/client-cra-legacy/src/containers/VertCardList.jsx b/client-cra-legacy/src/containers/VertCardList.jsx deleted file mode 100644 index c2ef074..0000000 --- a/client-cra-legacy/src/containers/VertCardList.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react' -import styled from 'styled-components' - -const VertCardList = ({ children, listings, ...rest }) => ( - - {children} - -) - -const Wrapper = styled.div` - display: flex; - justify-content: center; -` - -const Container = styled.div` - @media (min-width: ${(props) => props.theme.md}px) { - width: ${(props) => `${props.theme.md}px`}; - flex-direction: row; - align-items: flex-start; - justify-content: flex-start; - - & > div { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - - & > div:nth-child(odd) { - padding-left: 0; - } - - & > div:nth-child(even) { - padding-right: 0; - } - } -` - -export default VertCardList diff --git a/client-cra-legacy/src/index.jsx b/client-cra-legacy/src/index.jsx deleted file mode 100644 index 58e5f1a..0000000 --- a/client-cra-legacy/src/index.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import AppThemeWrapper from 'src/components/core/AppThemeWrapper'; -import * as serviceWorker from './serviceWorker'; - -ReactDOM.render(, document.getElementById('root')); - -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: https://bit.ly/CRA-PWA -serviceWorker.unregister(); diff --git a/client-cra-legacy/src/pages/auth-callback/index.jsx b/client-cra-legacy/src/pages/auth-callback/index.jsx deleted file mode 100644 index 73a4c3d..0000000 --- a/client-cra-legacy/src/pages/auth-callback/index.jsx +++ /dev/null @@ -1,74 +0,0 @@ -import React, { useEffect } from 'react'; -import styled from 'styled-components'; -import api from 'src/util/api'; -import { useDispatch, useSelector } from 'react-redux'; -import MainHeader from 'src/components/headers/MainHeader'; -import useRouter from 'src/util/hooks/useRouter'; -import log from 'src/util/log'; - -const Container = styled.div` - -`; - -export const Content = styled.div` - display: flex; - justify-content: center; -`; - -const AuthCallback = () => { - const dispatch = useDispatch(); - const authing = useSelector(state => state.authing); - const redirectPath = useSelector(state => state.redirectPath) - const router = useRouter(); - - useEffect(() => { - api.get('/auth/callback') - .then((res) => { - dispatch({ - type: 'USER_SET', - payload: res.data.user, - }); - dispatch({ - type: 'AUTHING_SET', - payload: false, - }); - dispatch({ - type: 'CHATROOMS_SET', - payload: res.data.chatrooms, - }); - router.history.push(redirectPath || '/profile/listings'); - dispatch({ - type: 'REDIRECT_PATH_SET', - payload: null, - }); - }) - .catch(({ response }) => { - log('AuthCallback', response); - dispatch({ - type: 'USER_SET', - payload: null, - }); - dispatch({ - type: 'AUTHING_SET', - payload: false, - }); - }) - }, []) - - if (authing) { - return ( - - - - Handling authentication - - - ) - } - else { - router.history.push('/'); - return ; - } -}; - -export default AuthCallback; diff --git a/client-cra-legacy/src/pages/cookie-policy/index.jsx b/client-cra-legacy/src/pages/cookie-policy/index.jsx deleted file mode 100644 index 257b14c..0000000 --- a/client-cra-legacy/src/pages/cookie-policy/index.jsx +++ /dev/null @@ -1,73 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import MainHeader from 'src/components/headers/MainHeader'; - -const Container = styled.div` - padding: 2rem 0; -`; - -const html = ` - -
-
COOKIE POLICY

Last updated June 12, 2020



This Cookie Policy explains how Cornlet Housing ("Company", "we", "us", and "our") uses cookies and similar technologies to recognize you when you visit our websites at https://www.cornlet.com/, ("Websites"). It explains what these technologies are and why we use them, as well as your rights to control our use of them.

In some cases we may use cookies to collect personal information, or that becomes personal information if we combine it with other information.

What are cookies?

Cookies are small data files that are placed on your computer or mobile device when you visit a website. Cookies are widely used by website owners in order to make their websites work, or to work more efficiently, as well as to provide reporting information.

Cookies set by the website owner (in this case, Cornlet Housing) are called "first party cookies". Cookies set by parties other than the website owner are called "third party cookies". Third party cookies enable third party features or functionality to be provided on or through the website (e.g. like advertising, interactive content and analytics). The parties that set these third party cookies can recognize your computer both when it visits the website in question and also when it visits certain other websites.

Why do we use cookies?

We use first and third party cookies for several reasons. Some cookies are required for technical reasons in order for our Websites to operate, and we refer to these as "essential" or "strictly necessary" cookies. Other cookies also enable us to track and target the interests of our users to enhance the experience on our Online Properties. Third parties serve cookies through our Websites for advertising, analytics and other purposes. This is described in more detail below.

The specific types of first and third party cookies served through our Websites and the purposes they perform are described below (please note that the specific cookies served may vary depending on the specific Online Properties you visit):

How can I control cookies?

You have the right to decide whether to accept or reject cookies. You can exercise your cookie rights by setting your preferences in the Cookie Consent Manager. The Cookie Consent Manager allows you to select which categories of cookies you accept or reject. Essential cookies cannot be rejected as they are strictly necessary to provide you with services.

The Cookie Consent Manager can be found in the notification banner and on our website. If you choose to reject cookies, you may still use our website though your access to some functionality and areas of our website may be restricted. You may also set or amend your web browser controls to accept or refuse cookies. As the means by which you can refuse cookies through your web browser controls vary from browser-to-browser, you should visit your browser's help menu for more information.

In addition, most advertising networks offer you a way to opt out of targeted advertising. If you would like to find out more information, please visit http://www.aboutads.info/choices/ or http://www.youronlinechoices.com.

The specific types of first and third party cookies served through our Websites and the purposes they perform are described in the table below (please note that the specific cookies served may vary depending on the specific Online Properties you visit):

Essential website cookies:

These cookies are strictly necessary to provide you with services available through our Websites and to use some of its features, such as access to secure areas.

Name:__tlbcpv
Purpose:Used to record unique visitor views of the consent banner.
Provider:.termly.io
Service:Termly View Service Privacy Policy
Country:United States
Type:http_cookie
Expires in:1 year

Analytics and customization cookies:

These cookies collect information that is used either in aggregate form to help us understand how our Websites are being used or how effective our marketing campaigns are, or to help us customize our Websites for you.

Name:_gid
Purpose:Keeps an entry of unique ID which is then used to come up with statistical data on website usage by visitors. It is a HTTP cookie type and expires after a browsing session.
Provider:.cornlet.com
Service:Google Analytics View Service Privacy Policy
Country:United States
Type:http_cookie
Expires in:1 day
Name:_hjIncludedInSample
Purpose:This cookie is set to let Hotjar know whether that visitor is included in the sample which is used to generate Heatmaps, Funnels, Recordings, etc.
Provider:www.cornlet.com
Service:Hotjar View Service Privacy Policy
Country:United States
Type:http_cookie
Expires in:session
Name:_ga
Purpose:It records a particular ID used to come up with data about website usage by the user. It is a HTTP cookie that expires after 2 years.
Provider:.cornlet.com
Service:Google Analytics View Service Privacy Policy
Country:United States
Type:http_cookie
Expires in:1 year 11 months 29 days
Name:_gat#
Purpose:Enables Google Analytics regulate the rate of requesting. It is a HTTP cookie type that lasts for a session.
Provider:.cornlet.com
Service:Google Analytics View Service Privacy Policy
Country:United States
Type:http_cookie
Expires in:1 minute

Unclassified cookies:

These are cookies that have not yet been categorized. We are in the process of classifying these cookies with the help of their providers.

Name:_hjid
Purpose:__________
Provider:www.cornlet.com
Service:__________
Country:United States
Type:html_local_storage
Expires in:persistent
Name:_hjid
Purpose:__________
Provider:.cornlet.com
Service:__________
Country:United States
Type:http_cookie
Expires in:session
Name:_hjRecordingEnabled
Purpose:__________
Provider:www.cornlet.com
Service:__________
Country:United States
Type:html_session_storage
Expires in:session
Name:hjViewportId
Purpose:__________
Provider:www.cornlet.com
Service:__________
Country:United States
Type:html_session_storage
Expires in:session
Name:_hjRecordingLastActivity
Purpose:__________
Provider:www.cornlet.com
Service:__________
Country:United States
Type:html_session_storage
Expires in:session

What about other tracking technologies, like web beacons?

Cookies are not the only way to recognize or track visitors to a website. We may use other, similar technologies from time to time, like web beacons (sometimes called "tracking pixels" or "clear gifs"). These are tiny graphics files that contain a unique identifier that enable us to recognize when someone has visited our Websites or opened an e-mail including them. This allows us, for example, to monitor the traffic patterns of users from one page within a website to another, to deliver or communicate with cookies, to understand whether you have come to the website from an online advertisement displayed on a third-party website, to improve site performance, and to measure the success of e-mail marketing campaigns. In many instances, these technologies are reliant on cookies to function properly, and so declining cookies will impair their functioning.

Do you use Flash cookies or Local Shared Objects?

Websites may also use so-called "Flash Cookies" (also known as Local Shared Objects or "LSOs") to, among other things, collect and store information about your use of our services, fraud prevention and for other site operations.

If you do not want Flash Cookies stored on your computer, you can adjust the settings of your Flash player to block Flash Cookies storage using the tools contained in the Website Storage Settings Panel. You can also control Flash Cookies by going to the Global Storage Settings Panel and following the instructions (which may include instructions that explain, for example, how to delete existing Flash Cookies (referred to "information" on the Macromedia site), how to prevent Flash LSOs from being placed on your computer without your being asked, and (for Flash Player 8 and later) how to block Flash Cookies that are not being delivered by the operator of the page you are on at the time).

Please note that setting the Flash Player to restrict or limit acceptance of Flash Cookies may reduce or impede the functionality of some Flash applications, including, potentially, Flash applications used in connection with our services or online content.

Do you serve targeted advertising?

Third parties may serve cookies on your computer or mobile device to serve advertising through our Websites. These companies may use information about your visits to this and other websites in order to provide relevant advertisements about goods and services that you may be interested in. They may also employ technology that is used to measure the effectiveness of advertisements. This can be accomplished by them using cookies or web beacons to collect information about your visits to this and other sites in order to provide relevant advertisements about goods and services of potential interest to you. The information collected through this process does not enable us or them to identify your name, contact details or other details that directly identify you unless you choose to provide these.

How often will you update this Cookie Policy?

We may update this Cookie Policy from time to time in order to reflect, for example, changes to the cookies we use or for other operational, legal or regulatory reasons. Please therefore re-visit this Cookie Policy regularly to stay informed about our use of cookies and related technologies.

The date at the top of this Cookie Policy indicates when it was last updated.

Where can I get further information?

If you have any questions about our use of cookies or other technologies, please email us at cornletservice@gmail.com
-
-`; - -const CookiePolicy = () => ( -
- - -
- -
-); - -export default CookiePolicy; diff --git a/client-cra-legacy/src/pages/edit/Edit/index.jsx b/client-cra-legacy/src/pages/edit/Edit/index.jsx deleted file mode 100644 index f459c1e..0000000 --- a/client-cra-legacy/src/pages/edit/Edit/index.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import ListingForm from 'src/components/forms/ListingForm'; -import BackHeader from 'src/components/headers/BackHeader'; -import MainHeader from 'src/components/headers/MainHeader'; -import RenderOn from 'src/containers/RenderOn'; -import Space from 'src/components/layouts/Space'; - -const Container = styled.div` - -`; - -const Edit = ({ user, initialValues }) => ( - - - - - - -); - -export default Edit; diff --git a/client-cra-legacy/src/pages/edit/index.jsx b/client-cra-legacy/src/pages/edit/index.jsx deleted file mode 100644 index 04994f1..0000000 --- a/client-cra-legacy/src/pages/edit/index.jsx +++ /dev/null @@ -1,34 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import styled from 'styled-components'; -import api from 'src/util/api'; -import log from 'src/util/log'; -import { useSelector } from 'react-redux'; -import Edit from './Edit'; - -const Container = styled.div` - -`; - -const EditIndex = ({ match }) => { - const { id } = match.params; - const [listing, setListing] = useState(); - useEffect(() => { - api.get(`/listing/${id}`) - .then((res) => setListing(res.data)) - .catch((e) => log('ERROR EditIndex get listing by id', e)); - }, [id]); - const user = useSelector((state) => state.user); - - if (!user || !listing || user.uid !== listing.user.uid) return
; - - return ( - - - - ); -}; - -export default EditIndex; diff --git a/client-cra-legacy/src/pages/env/index.jsx b/client-cra-legacy/src/pages/env/index.jsx deleted file mode 100644 index c0c4ced..0000000 --- a/client-cra-legacy/src/pages/env/index.jsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; - -const Container = styled.div` - -`; - -const Env = () => ( - - {JSON.stringify(process.env)} - -); - -export default Env; diff --git a/client-cra-legacy/src/pages/home/Listings.jsx b/client-cra-legacy/src/pages/home/Listings.jsx deleted file mode 100644 index 5a96f95..0000000 --- a/client-cra-legacy/src/pages/home/Listings.jsx +++ /dev/null @@ -1,62 +0,0 @@ -import React, { useEffect, useState } from 'react' -import PaginationBtns from 'src/components/buttons/PaginationBtns' -import ListingCardV2 from 'src/components/cards/ListingCardV2' -import LoadingDots from 'src/components/displays/LoadingDots' -import VertCardList from 'src/containers/VertCardList' -import api from 'src/util/api' -import useRouter from 'src/util/hooks/useRouter' -import log from 'src/util/log' -import styled from 'styled-components' - -const Listings = () => { - const router = useRouter() - const [listings, setListings] = useState([]) - const [loading, setLoading] = useState(false) - const [totalPages, setTotalPages] = useState(1) - const [page, setPage] = useState(1) - - useEffect(() => { - setLoading(true) - const connector = router.location.search ? '&' : '?' - api - .get(`/listing${router.location.search}${connector}active=true`) - .then((res) => { - setListings(res.data.docs) - setTotalPages(res.data.totalPages) - setPage(res.data.page) - setLoading(false) - }) - .catch(({ response }) => { - log('ERROR get listings at home', { response }) - setLoading(false) - }) - }, [router]) - - if (loading || !listings) - return ( -
- -
- ) - - return ( - - - {listings.map((listing) => ( - - ))} - - - - ) -} - -const Container = styled.div`` - -const Center = styled.div` - width: 100%; - display: flex; - justify-content: center; -` - -export default Listings diff --git a/client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterContents.jsx b/client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterContents.jsx deleted file mode 100644 index bb066b9..0000000 --- a/client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterContents.jsx +++ /dev/null @@ -1,91 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import Body from 'src/components/fonts/Body' -import DateFilter from 'src/components/filters/DateFilter' -import SliderFilter from 'src/components/filters/SliderFilter' -import { FlexRow } from 'src/components/layouts/Flex' -import theme from 'src/theme' -import Space from 'src/components/layouts/Space' -import Btn from 'src/components/buttons/Btn' -import TextBtn from 'src/components/buttons/TextBtn' -import useRouter from 'src/util/hooks/useRouter' -import Text from 'src/components/fonts/Text' - -const FilterContents = ({ setShow }) => { - const router = useRouter() - - const clearFilters = () => { - router.updateQuery({}, true) - setShow(false) - } - - return ( - - - Date - - - - - to - - - - - Price - - - - - Minutes from campus - - - - - - Clear - - - setShow(false)}>Apply filters - - - ) -} - -const Container = styled.div` - width: 300px; - padding: 1.5rem 1rem; - - background: white; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - - @media (min-width: ${(props) => props.theme.md}px) { - width: 350px; - } -` - -const Row = styled.div` - display: flex; - align-items: center; - - & > * { - margin-right: 0.5rem; - } -` - -export default FilterContents diff --git a/client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterStatus.jsx b/client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterStatus.jsx deleted file mode 100644 index 073302b..0000000 --- a/client-cra-legacy/src/pages/home/SearchOptions/Filters/FilterStatus.jsx +++ /dev/null @@ -1,65 +0,0 @@ -import React from 'react' -import CloseRaw from 'src/assets/svgs/close.svg' -import InvertedBtn from 'src/components/buttons/InvertedBtn' -import IconContainer from 'src/components/displays/IconContainer' -import Space from 'src/components/layouts/Space' -import useFilters from 'src/util/hooks/useFilters' -import useIsDesktop from 'src/util/hooks/useIsDesktop' -import styled from 'styled-components' - -const FilterStatus = () => { - const filters = useFilters() - - const isDesktop = useIsDesktop() - if (!isDesktop) return null - - return ( - - {filters.map(({ text, cb }) => ( - - {text} - - - cb()} /> - - - ))} - - ) -} - -const Container = styled.div` - display: flex; - align-items: center; - - & > * { - margin-left: 1rem; - flex-shrink: 0; - white-space: nowrap; - } -` - -const StatusBadge = styled.div` - border: 2px solid ${(props) => props.theme.brand300}; - border-radius: 20px; - display: flex; - align-items: center; - justify-content: space-between; - padding: 0.2rem 0.2rem 0.2rem 0.8rem; -` - -const BadgeText = styled.p` - font-weight: 500; - color: ${(props) => props.theme.brand[500]}; - font-size: 0.9rem; - padding-top: 0.1rem; -` - -const CloseSVG = styled(CloseRaw)` - height: 0.7rem; - width: 0.7rem; - fill: ${(props) => props.theme.primary}; - cursor: pointer; -` - -export default FilterStatus diff --git a/client-cra-legacy/src/pages/home/SearchOptions/Filters/index.jsx b/client-cra-legacy/src/pages/home/SearchOptions/Filters/index.jsx deleted file mode 100644 index c538589..0000000 --- a/client-cra-legacy/src/pages/home/SearchOptions/Filters/index.jsx +++ /dev/null @@ -1,91 +0,0 @@ -import React, { useState } from 'react' -import FilterRaw from 'src/assets/svgs/filter.svg' -import Dropdown from 'src/components/views/Dropdown' -import useFilters from 'src/util/hooks/useFilters' -import styled from 'styled-components' -import FilterContents from './FilterContents' -import FilterStatus from './FilterStatus' - -const Filters = () => { - const [show, setShow] = useState(false) - const handleClick = () => { - setShow(true) - } - const filters = useFilters() - - return ( - - - - - Filters - {filters.length > 0 && {filters.length}} - - - - - - - - ) -} - -const Container = styled.div` - position: relative; - overflow: visible; -` - -const Row = styled.div` - padding: 0.2rem; - display: flex; - align-items: center; - flex-wrap: nowrap; - overflow-x: auto; - -ms-overflow-style: none; - -webkit-overflow-scrolling: touch; - - &::-webkit-scrollbar { - display: none; - } -` - -const FilterBtn = styled.button` - background: white; - border-radius: 8px; - padding: 0.3rem 0.7rem; - border: 2px solid rgba(0, 0, 0, 0.2); - color: ${(props) => props.theme.textLight}; - - display: flex; - align-items: center; -` - -const FilterSVG = styled(FilterRaw)` - height: 1.3rem; - margin-right: 0.3rem; - fill: ${(props) => props.theme.textLight}; -` - -const FilterCounter = styled.div` - height: 1.3rem; - width: 1.3rem; - margin-left: 0.5rem; - - font-size: 0.8rem; - font-weight: 500; - - border-radius: 50%; - background: ${(props) => props.theme.brand500}; - color: white; - - display: flex; - justify-content: center; - align-items: center; - - @media (min-width: ${(props) => props.theme.md}px) { - height: 1.2rem; - width: 1.2rem; - } -` - -export default Filters diff --git a/client-cra-legacy/src/pages/home/SearchOptions/ListingSortSelect.jsx b/client-cra-legacy/src/pages/home/SearchOptions/ListingSortSelect.jsx deleted file mode 100644 index 5033c9e..0000000 --- a/client-cra-legacy/src/pages/home/SearchOptions/ListingSortSelect.jsx +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react' -import Select from 'src/components/inputs/Select' -import useRouter from 'src/util/hooks/useRouter' -import styled from 'styled-components' - -const Container = styled.div` - display: flex; - align-items: center; -` - -const ListingSortSelect = () => { - const router = useRouter() - const { query, updateQuery } = router - - const opts = [ - { - value: 'recent', - label: 'Recent', - }, - { - value: 'price-asc', - label: 'Price: Low to High', - }, - { - value: 'price-dec', - label: 'Price: High to Low', - }, - { - value: 'to-campus', - label: 'Distance to Campus', - }, - ] - - const handleChange = (e) => { - updateQuery({ sort: e.target.value }) - } - - return ( - - setMsg(e.target.value)} /> - - - Send Message - - - {createChatroomError && ( - {createChatroomError} - )} - - - -
- ) -} - -const Wrapper = styled.div` - display: flex; - justify-content: center; - - @media (min-width: ${(props) => props.theme.md}px) { - padding-top: 3rem; - } -` - -const Container = styled.div` - width: 100%; - max-width: 1200px; -` - -const Content = styled.div` - margin-top: 1.5rem; - - @media (min-width: ${(props) => props.theme.md}px) { - margin-top: 0; - flex: 2; - max-width: 700px; - padding: 0 1rem; - } -` - -const ListingSection = styled.div` - @media (min-width: ${(props) => props.theme.md}px) { - padding: 4rem 0 8rem 0; - } -` - -const Section = styled.div` - margin: 1rem 0 3.5rem 0; - - @media (min-width: ${(props) => props.theme.md}px) { - margin-top: 0; - } -` - -const ModalContents = styled.div` - text-align: start; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 50vw; - } -` - -const RightSidePanelContainer = styled.div` - width: 20%; - min-width: 300px; -` - -const ModalButtonContainer = styled(HoriCenter)` - margin-top: 1.5rem; - margin-bottom: 1rem; -` - -const ModalCreateChatroomError = styled.p` - color: ${(props) => props.theme.danger}; - text-align: center; - margin-bottom: 1rem; - line-height: 1.2; - font-size: 0.875rem; - padding: 0 4rem; -` - -export default DesktopListing diff --git a/client-cra-legacy/src/pages/listing/Listing/IconsSection.jsx b/client-cra-legacy/src/pages/listing/Listing/IconsSection.jsx deleted file mode 100644 index b234cbb..0000000 --- a/client-cra-legacy/src/pages/listing/Listing/IconsSection.jsx +++ /dev/null @@ -1,112 +0,0 @@ -import React from 'react' -import ShowerSVG from 'src/assets/svgs/shower-outlined.svg' -import BedSVG from 'src/assets/svgs/bed-outlined.svg' -import CalendarSVG from 'src/assets/svgs/calendar.svg' -import PersonSVG from 'src/assets/svgs/person.svg' -import Body from 'src/components/fonts/Body' -import { FlexRow } from 'src/components/layouts/Flex' -import getDateString from 'src/util/helpers/getDateString' -import styled from 'styled-components' - -const IconsSection = ({ listing }) => { - const { bathrooms, maleRoommates, femaleRoommates } = listing || {} - - return ( - - - - - - {getDateString(listing, { isNumeric: true })} - - {bathrooms !== 0 && ( - - - - - - {bathrooms} bathrooms - - 0.5 bathrooms is a "half bathroom" with just a toilet and sink, with no tub or shower. - - - - )} - {(maleRoommates !== 0 || femaleRoommates !== 0) && ( - - - - - - {maleRoommates + femaleRoommates} roommate(s) during sublet - - You will have {maleRoommates > 0 ? `${maleRoommates} male roommates ` : ''} - {maleRoommates > 0 && femaleRoommates > 0 ? 'and ' : ''} - {femaleRoommates > 0 ? `${femaleRoommates} female roommates ` : ''} - for the duration of the sublet. - - - - )} - {maleRoommates === 0 && femaleRoommates === 0 && ( - - - - - - Entire place - - You will have the entire place to yourself for the duration of the sublet. - - - - )} - - ) -} - -const Container = styled.div` - & > div { - margin-bottom: 1.5rem; - } -` - -const SVGContainer = styled.div` - display: flex; - justify-content: center; - margin-right: 0.8rem; - - & svg { - width: 1.7rem; - height: 1.7rem; - } - - @media (min-width: ${(props) => props.theme.md}px) { - & svg { - width: 2rem; - height: 2rem; - } - } -` - -const TextContainer = styled.div`` - -const IconLabel = styled(Body)` - font-weight: 500; - font-size: 1rem; - - @media (min-width: ${(props) => props.theme.md}px) { - font-size: 1.2rem; - } -` - -const IconDesc = styled(Body)` - margin-top: 0.3rem; - font-size: 0.9rem; - - @media (min-width: ${(props) => props.theme.md}px) { - font-size: 1rem; - } -` - -export default IconsSection diff --git a/client-cra-legacy/src/pages/listing/Listing/ImgModal.jsx b/client-cra-legacy/src/pages/listing/Listing/ImgModal.jsx deleted file mode 100644 index aaf536e..0000000 --- a/client-cra-legacy/src/pages/listing/Listing/ImgModal.jsx +++ /dev/null @@ -1,62 +0,0 @@ -import React, { useState } from 'react' -import Modal from 'src/components/views/Modal' -import styled from 'styled-components' - -const ImgModal = ({ imgs, isModalOpen, setIsModalOpen }) => { - const [imgIdx, setImgIdx] = useState(0) - - return ( - setIsModalOpen(false)}> - - - - - - {imgs.map((img, i) => ( - setImgIdx(i)} /> - ))} - - - - ) -} - -const Container = styled.div` - padding-top: 2rem; - display: flex; -` - -const LargeView = styled.div` - margin-right: 2rem; -` - -const LargeImg = styled.img` - width: 60vw; - height: 40vw; - border-radius: 20px; - object-fit: cover; - overflow: hidden; -` - -const ScrollView = styled.div` - overflow-y: auto; - overflow-x: hidden; - height: 40vw; - display: flex; - flex-direction: column; - padding-right: 0.5rem; -` - -const ThumbnailImg = styled.img` - height: 10vw; - flex-shrink: 0; - width: 12vw; - overflow: hidden; - border-radius: 10px; - object-fit: cover; - margin-bottom: 1rem; - cursor: pointer; - border: 2px solid ${(props) => props.theme.border.default}; -` - -export default ImgModal diff --git a/client-cra-legacy/src/pages/listing/Listing/ImgPanels.jsx b/client-cra-legacy/src/pages/listing/Listing/ImgPanels.jsx deleted file mode 100644 index a6393ee..0000000 --- a/client-cra-legacy/src/pages/listing/Listing/ImgPanels.jsx +++ /dev/null @@ -1,121 +0,0 @@ -import React, { useState } from 'react' -import InvertedBtn from 'src/components/buttons/InvertedBtn' -import ImgCarousel from 'src/components/displays/ImgCarousel' -import Body from 'src/components/fonts/Body' -import Space from 'src/components/layouts/Space' -import Modal from 'src/components/views/Modal' -import styled from 'styled-components' -import ImgModal from './ImgModal' - -const NoImgComponent = () => ( - - No image - -) - -const ImgPanels = ({ imgs }) => { - const [isModalOpen, setIsModalOpen] = useState(false) - - return ( - <> - setIsModalOpen(true)}> - - - - - - - {imgs[1] ? : } - - {imgs[2] ? : } - - - {imgs[3] ? : } - - - {imgs[4] ? : } - - Show all photos - - - - - - - ) -} - -const Container = styled.div` - width: 100%; - border-radius: 20px; - overflow: hidden; - display: flex; - height: 500px; - cursor: pointer; -` - -const MainPanel = styled.div` - height: 100%; - flex: 2; - overflow: hidden; - margin-right: 0.5rem; -` - -const InnerPanel = styled.div` - overflow: hidden; -` - -const MainPanelInner = styled(InnerPanel)` - height: 100%; - width: 100%; -` - -const SidePanel = styled.div` - height: 100%; - flex: 1; - overflow: hidden; - - // marginRight - margin-right: ${(props) => props.marginRight && '.5rem'}; -` - -const SidePanelInner = styled(InnerPanel)` - width: 100%; - height: 50%; - position: relative; -` - -const Img = styled.img` - object-fit: cover; - height: 100%; - width: 100%; - overflow: hidden; -` - -const ShowAllArea = styled.div` - position: absolute; - bottom: 20px; - right: 15px; -` - -const ShowAllBtn = styled(InvertedBtn)` - border: 2px solid ${(props) => props.theme.grey[400]}; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); -` - -const NoImg = styled.div` - background: ${(props) => props.theme.brand50}; - height: 100%; - width: 100%; - - display: flex; - justify-content: center; - align-items: center; -` - -const NoImageText = styled(Body)` - color: ${(props) => props.theme.textLight}; - font-weight: 500; -` - -export default ImgPanels diff --git a/client-cra-legacy/src/pages/listing/Listing/MobileFooter.jsx b/client-cra-legacy/src/pages/listing/Listing/MobileFooter.jsx deleted file mode 100644 index 4287bfc..0000000 --- a/client-cra-legacy/src/pages/listing/Listing/MobileFooter.jsx +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react' -import { useSelector } from 'react-redux' -import Btn from 'src/components/buttons/Btn' -import Text from 'src/components/fonts/Text' -import { FlexRow } from 'src/components/layouts/Flex' -import Space from 'src/components/layouts/Space' -import useIsDesktop from 'src/util/hooks/useIsDesktop' -import styled from 'styled-components' - -const MobileFooter = ({ listing, handleMsgBtnClick }) => { - const isDesktop = useIsDesktop() - const { price, sold, cornellOnly } = listing || {} - const signedInUser = useSelector((state) => state.user) - const isRestricted = !( - !cornellOnly || - (cornellOnly && signedInUser && signedInUser.email.split('@')[1] === 'cornell.edu') - ) - - if (isDesktop || sold) return null - - return ( - - - - ${price} / month - - - Message host - - - {isRestricted && ( - <> - - - - Restricted to Cornell - - - - )} - - ) -} - -const Container = styled.div` - position: fixed; - bottom: 0; - right: 0; - left: 0; - - background: white; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - border-top: 1px solid ${(props) => props.theme.border.default}; - - padding: 1rem 1rem 1.5rem 1rem; -` - -const Muted = styled.span` - font-weight: 400; - color: ${(props) => props.theme.textMuted}; -` - -export default MobileFooter diff --git a/client-cra-legacy/src/pages/listing/Listing/RightSidePanel.jsx b/client-cra-legacy/src/pages/listing/Listing/RightSidePanel.jsx deleted file mode 100644 index be4a7b2..0000000 --- a/client-cra-legacy/src/pages/listing/Listing/RightSidePanel.jsx +++ /dev/null @@ -1,133 +0,0 @@ -import React from 'react' -import LockRaw from 'src/assets/svgs/lock.svg' -import Btn from 'src/components/buttons/Btn' -import Badge from 'src/components/displays/Badge' -import DetailedAvatar from 'src/components/displays/DetailedAvatar' -import Searchers from 'src/components/displays/Searchers' -import Body from 'src/components/fonts/Body' -import Subheading from 'src/components/fonts/Subheading' -import { FlexColumn } from 'src/components/layouts/Flex' -import { FlexRow } from 'src/components/layouts/Flex' -import Space from 'src/components/layouts/Space' -import theme from 'src/theme' -import styled from 'styled-components' - -const Container = styled.div` - position: sticky; - top: 20px; - border-radius: 16px; - border: 2px solid ${(props) => props.theme.border.default}; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); - - & > div { - border-bottom: 2px solid ${(props) => props.theme.border.default}; - } - - & > div:last-child { - border-bottom: none; - } -` - -const Section = styled.div` - padding: 1rem; -` - -const LockSVG = styled(LockRaw)` - height: 1rem; - opacity: 0.6; -` - -const LockAvatar = styled.div` - height: 40px; - width: 40px; - background: rgba(0, 0, 0, 0.1); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - border-radius: 50%; - padding: 0.5rem; - margin-right: 1rem; - - display: flex; - justify-content: center; - align-items: center; -` - -const SoldComponent = () => ( - - - Message host - - - - This listing has been marked as sold - - -) - -const RestrictedComponent = () => ( -
- - - - - - Restricted to Cornell - - - - - - Message host - - - - - Sign in with a @cornell.edu account to contact the owner - - - -
-) - -const RightSidePanel = ({ listing, handleMsgBtnClick, signedInUser, searchers }) => { - const { price, displayName, user, cornellOnly, sold } = listing || {} - - return ( - -
- - ${price} - - / month - -
-
- {sold ? ( - - ) : ( - <> - {!cornellOnly || - (cornellOnly && signedInUser && signedInUser.email.split('@')[1] === 'cornell.edu') ? ( -
- - - - Message host - -
- ) : ( - - )} - - )} -
-
- -
-
- ) -} - -export default RightSidePanel diff --git a/client-cra-legacy/src/pages/listing/Listing/index.jsx b/client-cra-legacy/src/pages/listing/Listing/index.jsx deleted file mode 100644 index d62020a..0000000 --- a/client-cra-legacy/src/pages/listing/Listing/index.jsx +++ /dev/null @@ -1,537 +0,0 @@ -import React, { useState } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import CalendarRaw from 'src/assets/svgs/calendar.svg' -import LockRaw from 'src/assets/svgs/lock.svg' -import BmBtn from 'src/components/buttons/BmBtn' -import Btn from 'src/components/buttons/Btn' -import DetailedAvatar from 'src/components/displays/DetailedAvatar' -import ImgCarousel from 'src/components/displays/ImgCarousel' -import InfoBox from 'src/components/displays/InfoBox' -import ListingLocation from 'src/components/displays/ListingLocation' -import Map from 'src/components/displays/Map' -import PolicyDisclaimer from 'src/components/displays/PolicyDisclaimer' -import Searchers from 'src/components/displays/Searchers' -import Body from 'src/components/fonts/Body' -import Heading from 'src/components/fonts/Heading' -import Subheading from 'src/components/fonts/Subheading' -import Text from 'src/components/fonts/Text' -import BackHeader from 'src/components/headers/BackHeader' -import MainHeader from 'src/components/headers/MainHeader' -import Input from 'src/components/inputs/Input' -import Space from 'src/components/layouts/Space' -import Modal from 'src/components/views/Modal' -import HoriCenter from 'src/containers/HoriCenter' -import api from 'src/util/api' -import formatListingDesc from 'src/util/helpers/formatListingDesc' -import kmToMins from 'src/util/helpers/kmToMins' -import signin from 'src/util/helpers/signin' -import useIsDesktop from 'src/util/hooks/useIsDesktop' -import useRouter from 'src/util/hooks/useRouter' -import log from 'src/util/log' -import socket from 'src/util/socket' -import styled from 'styled-components' -import DesktopListing from './DesktopListing' -import IconsSection from './IconsSection' -import MobileFooter from './MobileFooter' - -const Listing = ({ listing, searchers }) => { - const { - imgs, - addr, - price, - user, - desc, - sold, - displayName, - cornellOnly, - totalRooms, - availRooms, - bathrooms, - type, - toCampus, - maleRoommates, - femaleRoommates, - lat, - lng, - } = listing - const router = useRouter() - const dispatch = useDispatch() - const isDesktop = useIsDesktop() - - const signedInUser = useSelector((state) => state.user) - const chatrooms = useSelector((state) => state.chatrooms) - const tempValues = useSelector((state) => state.tempValues) - - // create message modal - const [open, setOpen] = useState(false) - const [msg, setMsg] = useState('') - const [createChatroomError, setCreateChatroomError] = useState('') - const [isCreateChatroomDisabled, setIsCreateChatroomDisabled] = useState(false) - - const handleMsgBtnClick = async () => { - if (signedInUser) { - const existing = chatrooms.filter((chatroom) => chatroom.listing._id === listing._id) - if (existing.length !== 0) { - router.push(`/profile/chat/${existing[0]._id}`) - } else { - const { data } = await api.get(`/chatroom/recent-chatroom-create-count/${signedInUser.uid}`) - const { recentlyCreatedChatrooms } = data - - if (recentlyCreatedChatrooms >= 2) { - setCreateChatroomError( - "You've messaged 2 hosts in the past 12 hours. Please check back after 12 hours to message more hosts." - ) - setIsCreateChatroomDisabled(true) - } - setOpen(true) - } - } - } - - const handleClose = () => { - setOpen(false) - } - - const createMsg = () => { - const msgContent = tempValues || msg - - if (msgContent.includes('gmail') && msgContent.includes('@')) { - // prevent sending gmail address in the first message - setCreateChatroomError( - 'Please do not include a Gmail address in your first message. This is to prevent spammers from sending phishing email links to Cornlet users.' - ) - } else { - // DB create - // DB must be created first to get the data schema - const reqData = { - lid: listing._id, - msgContent, - searcherUid: signedInUser.uid, - ownerUid: user.uid, - } - api - .post('/chatroom/create', reqData) - .then(({ data }) => { - // emit socket event - socket.emit('new chatroom', data) - - // redirect - router.push(`/profile/chat/${data._id}`) - }) - .catch(({ response }) => log('Listing', response)) - } - } - - const handleCreateMsg = () => { - if (!signedInUser) { - // not signed in, signin - handleClose() - dispatch({ - type: 'TEMP_VALUES_SET', - payload: msg, - }) - signin({ redirectPath: `/listing/${listing._id}` }) - } else { - const listingChatrooms = chatrooms.filter((chatroom) => chatroom.listing._id === listing._id) - if (listingChatrooms.length >= 1) { - // chatroom already exists - // append msg to existing chatroom - const data = { - cid: listingChatrooms[0]._id, - type: 'txt', - content: tempValues || msg, - uid: signedInUser.uid, - createdAt: new Date(), - } - socket.emit('msg', data) - router.push(`/profile/chat/${listingChatrooms[0]._id}`) - } else { - createMsg() - } - } - } - - // auto send message after sign in - if (tempValues && signedInUser) { - handleCreateMsg() - - dispatch({ - type: 'TEMP_VALUES_SET', - payload: null, - }) - - return ( -
- - Creating message ... -
- ) - } - - if (isDesktop) - return ( - - ) - - return ( -
- - - - - {!listing.active || listing.deleted ? ( - This listing is inactive or has been deleted by the owner. - ) : ( - - - - - -
- - {formatListingDesc(listing)} - - - - - - -
- - {/* contact section */} - {!sold && ( -
- - Contact - - - {!cornellOnly || - (cornellOnly && - signedInUser && - signedInUser.email.split('@')[1] === 'cornell.edu') ? ( - - - - - Message - - - - - ) : ( - - - - - - Restricted to Cornell - - Sign in with a @cornell.edu account to contact the owner. - - - - )} - -
- )} - - {/* sold warning info box */} - {sold && ( -
- - - This listing has been marked as sold - - -
- )} - - {/* location */} -
- - Location - - {toCampus && ( - - - - )} - - {lat && lng && ( - - - - )} -
- - {/* description */} -
- - Description - - - {desc} - -
- -
-
- )} -
-
- - - - setMsg(e.target.value)} /> - - - Send Message - - - {createChatroomError && ( - {createChatroomError} - )} - - - -
- ) -} - -const Wrapper = styled.div` - display: flex; - justify-content: center; - - @media (min-width: ${(props) => props.theme.md}px) { - padding-top: 3rem; - } -` - -const Container = styled.div` - width: 100vw; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 700px; - } -` - -const ImgInnerContainer = styled.div` - width: 90vw; - position: relative; - border-radius: 10px; - overflow: hidden; - - @media (min-width: ${(props) => props.theme.md}px) { - width: 700px; - margin-right: 2rem; - height: auto; - } - - & * { - outline: none; - overflow: hidden; - } -` - -const Content = styled.div` - margin-top: 1.5rem; - - @media (min-width: ${(props) => props.theme.md}px) { - margin-top: 0; - width: 500px; - } -` - -const ListingSection = styled.div` - @media (min-width: ${(props) => props.theme.md}px) { - display: flex; - padding: 4rem 0 8rem 0; - } -` - -const Section = styled.div` - margin: 1rem 0 3.5rem 0; - - @media (min-width: ${(props) => props.theme.md}px) { - margin-top: 0; - } -` - -const Row = styled.div` - display: flex; - justify-content: space-between; - align-items: center; - padding: 0; - margin: 0.2rem 0; - - @media (min-width: ${(props) => props.theme.md}px) { - margin: 0 0 0.5rem 0; - } - - // marginTop - margin-top: ${(props) => (props.marginTop ? '1rem' : '')}; - - @media (min-width: ${(props) => props.theme.md}px) { - margin-top: ${(props) => (props.marginTop ? '1.2rem' : '')}; - } - - // marginTopLarge - margin-top: ${(props) => (props.marginTopLarge ? '1.5rem' : '')}; - - @media (min-width: ${(props) => props.theme.md}px) { - margin-top: ${(props) => (props.marginTopLarge ? '1.7rem' : '')}; - } - - // marginBottom - margin-bottom: ${(props) => (props.marginBottom ? '1rem' : '')}; - - @media (min-width: ${(props) => props.theme.md}px) { - margin-bottom: ${(props) => (props.marginBottom ? '1.2rem' : '')}; - } - - // marginBottomLarge - margin-bottom: ${(props) => (props.marginBottomLarge ? '1.5rem' : '')}; - - @media (min-width: ${(props) => props.theme.md}px) { - margin-bottom: ${(props) => (props.marginBottomLarge ? '1.7rem' : '')}; - } - - // icon - justify-content: ${(props) => (props.icon ? 'flex-start' : '')}; - - /* alignStart */ - align-items: ${(props) => props.alignStart && `flex-start`}; -` - -const MapContainer = styled.div` - @media (min-width: ${(props) => props.theme.md}px) { - padding: 0 1rem; - } -` - -const SVGContainer = styled.div` - display: flex; - justify-content: center; - width: 2rem; - margin-right: 0.2rem; - - & > svg { - width: 1.5rem; - height: 1.5rem; - opacity: 0.6; - } - - // mr - margin-right: ${(props) => (props.mr ? '.5rem' : '')}; -` - -const CalendarSVG = styled(CalendarRaw)` - width: 30px !important; -` - -const LockSection = styled.div` - display: flex; - align-items: flex-start; -` - -const LockSVG = styled(LockRaw)` - height: 1rem; - opacity: 0.6; -` - -const LockAvatar = styled.div` - height: 40px; - width: 40px; - background: rgba(0, 0, 0, 0.1); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - border-radius: 50%; - padding: 0.5rem; - margin-right: 1rem; - - display: flex; - justify-content: center; - align-items: center; -` - -const TextSection = styled.div` - max-width: 270px; -` - -const Fullwidth = styled.div` - width: 100%; -` - -const ContactContainer = styled.div` - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 1rem; -` - -const MsgBtn = styled.button` - width: 100%; - max-width: 400px; - padding: 0.8rem 0; - margin-top: 1rem; - font-size: 1rem; - - display: flex; - align-items: flex-start; - justify-content: center; - - background: ${(props) => props.theme.primary}; - color: white; - - border-radius: 10px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - - & svg { - height: 1.2rem; - width: 1.2rem; - fill: white; - margin-right: 1rem; - } -` - -const ModalContents = styled.div` - text-align: start; -` - -const ModalButtonContainer = styled(HoriCenter)` - margin-top: 1.5rem; - margin-bottom: 1rem; -` - -const ModalCreateChatroomError = styled.p` - color: ${(props) => props.theme.danger}; - text-align: center; - margin-bottom: 1rem; - line-height: 1.3; - font-size: 0.875rem; - padding: 0 2rem; -` - -export default Listing diff --git a/client-cra-legacy/src/pages/listing/index.jsx b/client-cra-legacy/src/pages/listing/index.jsx deleted file mode 100644 index 1e470f5..0000000 --- a/client-cra-legacy/src/pages/listing/index.jsx +++ /dev/null @@ -1,39 +0,0 @@ -import React, { useState, useEffect } from 'react' -import styled from 'styled-components' -import api from 'src/util/api' -import log from 'src/util/log' -import Listing from './Listing' - -const Container = styled.div`` - -const ListingIndex = ({ match }) => { - const { id } = match.params - const [listing, setListing] = useState() - const [searchers, setSearchers] = useState([]) - - useEffect(() => { - if (id) { - api - .get(`/listing/${id}`) - .then((res) => setListing(res.data)) - .catch((e) => log('ERROR get listing at listing details page', e)) - - api - .get(`/chatroom/listing/searchers/${id}`) - .then((res) => setSearchers(res.data)) - .catch((e) => log('ERROR get listing at listing details page', e)) - - api.post(`/listing/${id}/increment-view`) - } - }, [id]) - - if (!listing) return
- - return ( - - - - ) -} - -export default ListingIndex diff --git a/client-cra-legacy/src/pages/new/New/index.jsx b/client-cra-legacy/src/pages/new/New/index.jsx deleted file mode 100644 index d9801c3..0000000 --- a/client-cra-legacy/src/pages/new/New/index.jsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import ListingForm from 'src/components/forms/ListingForm'; -import BackHeader from 'src/components/headers/BackHeader'; -import MainHeader from 'src/components/headers/MainHeader'; -import RenderOn from 'src/containers/RenderOn'; - -const Container = styled.div` - -`; - -const New = ({ user }) => ( - - - - - - - -); - -export default New; diff --git a/client-cra-legacy/src/pages/new/index.jsx b/client-cra-legacy/src/pages/new/index.jsx deleted file mode 100644 index 9b2a637..0000000 --- a/client-cra-legacy/src/pages/new/index.jsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react'; -import { useSelector } from 'react-redux'; -import New from './New'; - -const NewIndex = () => { - const user = useSelector((state) => state.user); - - return ( - - ); -}; - -export default NewIndex; diff --git a/client-cra-legacy/src/pages/privacy-policy/index.jsx b/client-cra-legacy/src/pages/privacy-policy/index.jsx deleted file mode 100644 index e59d1a0..0000000 --- a/client-cra-legacy/src/pages/privacy-policy/index.jsx +++ /dev/null @@ -1,72 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import MainHeader from 'src/components/headers/MainHeader'; - -const html = ` - -
-
PRIVACY POLICY

Last updated June 11, 2020


Thank you for choosing to be part of our community at Cornlet Housing (“Company”, “we”, “us”, or “our”). We are committed to protecting your personal information and your right to privacy. If you have any questions or concerns about our policy, or our practices with regards to your personal information, please contact us at cornletservice@gmail.com.

When you visit our website https://www.cornlet.com/, and use our services, you trust us with your personal information. We take your privacy very seriously. In this privacy policy, we seek to explain to you in the clearest way possible what information we collect, how we use it and what rights you have in relation to it. We hope you take some time to read through it carefully, as it is important. If there are any terms in this privacy policy that you do not agree with, please discontinue use of our Sites and our services.

This privacy policy applies to all information collected through our website (such as https://www.cornlet.com/), and/or any related services, sales, marketing or events (we refer to them collectively in this privacy policy as the "Services").

Please read this privacy policy carefully as it will help you make informed decisions about sharing your personal information with us.


TABLE OF CONTENTS

1. WHAT INFORMATION DO WE COLLECT?

2. HOW DO WE USE YOUR INFORMATION?

3. WILL YOUR INFORMATION BE SHARED WITH ANYONE?

4. DO WE USE COOKIES AND OTHER TRACKING TECHNOLOGIES?

5. DO WE USE GOOGLE MAPS?

6. HOW DO WE HANDLE YOUR SOCIAL LOGINS?

7. HOW LONG DO WE KEEP YOUR INFORMATION?

8. HOW DO WE KEEP YOUR INFORMATION SAFE?

9. DO WE COLLECT INFORMATION FROM MINORS?

10. WHAT ARE YOUR PRIVACY RIGHTS?

11. CONTROLS FOR DO-NOT-TRACK FEATURES

12. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?

13. DO WE MAKE UPDATES TO THIS POLICY?

14. HOW CAN YOU CONTACT US ABOUT THIS POLICY?


1. WHAT INFORMATION DO WE COLLECT?


Personal information you disclose to us

In Short: We collect personal information that you provide to us.

We collect personal information that you voluntarily provide to us when registering at the Services expressing an interest in obtaining information about us or our products and services, when participating in activities on the Services (such as posting messages in our online forums or entering competitions, contests or giveaways) or otherwise contacting us.

The personal information that we collect depends on the context of your interactions with us and the Services, the choices you make and the products and features you use. The personal information we collect can include the following:

Publicly Available Personal Information. We collect first name, maiden name, last name, and nickname; current and former address; email addresses; business email; social media; photos of housing / rooms; geolocation of address; and other similar data.

Personal Information Provided by You. We collect data collected from surveys; passwords; site usage data; and other similar data.

Social Media Login Data. We may provide you with the option to register using social media account details, like your Facebook, Twitter or other social media account. If you choose to register in this way, we will collect the Information described in the section called "HOW DO WE HANDLE YOUR SOCIAL LOGINS" below.

All personal information that you provide to us must be true, complete and accurate, and you must notify us of any changes to such personal information.


Information automatically collected

In Short: Some information — such as IP address and/or browser and device characteristics — is collected automatically when you visit our Services.

We automatically collect certain information when you visit, use or navigate the Services. This information does not reveal your specific identity (like your name or contact information) but may include device and usage information, such as your IP address, browser and device characteristics, operating system, language preferences, referring URLs, device name, country, location, information about how and when you use our Services and other technical information. This information is primarily needed to maintain the security and operation of our Services, and for our internal analytics and reporting purposes.

Like many businesses, we also collect information through cookies and similar technologies.

Online Identifiers. We collect devices; applications; tools and protocols, such as IP (Internet Protocol) addresses; cookie identifiers, or others such as the ones used for analytics and marketing; device's geolocation; and other similar data.


Information collected from other sources

In Short: We may collect limited data from public databases, marketing partners, social media platforms, and other outside sources.

We may obtain information about your from other sources, such as public databases, joint marketing partners, social media platforms (such as Facebook), as well as from other third parties. Examples of the information we receive from other sources include: social media profile information (your name, gender, birthday, email, current city, state and country, user identification numbers for your contacts, profile picture URL, and any other information that you choose to make public); marketing leads and search results and links, including paid listings (such as sponsored links). We will inform you about the source of information and the type of information and the type of information we have collected about you within a reasonable period after obtaining the personal data, but at the latest within one month.


2. HOW DO WE USE YOUR INFORMATION?

In Short: We process your information for purposes based on legitimate business interests, the fulfillment of our contract with you, compliance with our legal obligations, and/or your consent.

We use personal information collected via our Services for a variety of business purposes described below. We process your personal information for these purposes in reliance on our legitimate business interests, in order to enter into or perform a contract with you, with your consent, and/or for compliance with our legal obligations. We indicate the specific processing grounds we rely on next to each purpose listed below.

We use the information we collect or receive:

  • To facilitate account creation and logon process. If you choose to link your account with us to a third party account (such as your Google or Facebook account), we use the information you allowed us to collect from those third parties to facilitate account creation and logon process for the performance of the contract. See the section below headed "HOW DO WE HANDLE YOUR SOCIAL LOGINS" for further information.

  • To send you marketing and promotional communications. We and/or our third party marketing partners may use the personal information you send to us for our marketing purposes, if this is in accordance with your marketing preferences. You can opt-out of our marketing emails at any time (see the "WHAT ARE YOUR PRIVACY RIGHTS" below).

  • To send administrative information to you. We may use your personal information to send you product, service and new feature information and/or information about changes to our terms, conditions, and policies.

  • Fulfill and manage your orders. We may use your information to fulfill and manage your orders, payments, returns, and exchanges made through the Services.

  • Deliver targeted advertising to you. We may use your information to develop and display content and advertising (and work with third parties who do so) tailored to your interests and/or location and to measure its effectiveness.

  • Request Feedback. We may use your information to request feedback and to contact you about your use of our Services.

  • To protect our Services. We may use your information as part of our efforts to keep our Services safe and secure (for example, for fraud monitoring and prevention).

  • To enable user-to-user communications. We may use your information in order to enable user-to-user communications with each user's consent.

  • To manage user accounts. We may use your information for the purposes of managing our account and keeping it in working order.
  • To deliver services to the user. We may use your information to provide you with the requested service.

  • To respond to user inquiries/offer support to users. We may use your information to respond to your inquiries and solve any potential issues you might have with the use of our Services.

  • For other Business Purposes. We may use your information for other Business Purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Services, products, marketing and your experience. We may use and store this information in aggregated and anonymized form so that it is not associated with individual end users and does not include personal information. We will not use identifiable personal information without your consent.


3. WILL YOUR INFORMATION BE SHARED WITH ANYONE?

In Short: We only share information with your consent, to comply with laws, to provide you with services, to protect your rights, or to fulfill business obligations.

We may process or share data based on the following legal basis:
  • Consent: We may process your data if you have given us specific consent to use your personal information in a specific purpose.

  • Legitimate Interests: We may process your data when it is reasonably necessary to achieve our legitimate business interests.

  • Performance of a Contract: Where we have entered into a contract with you, we may process your personal information to fulfill the terms of our contract.

  • Legal Obligations: We may disclose your information where we are legally required to do so in order to comply with applicable law, governmental requests, a judicial proceeding, court order, or legal process, such as in response to a court order or a subpoena (including in response to public authorities to meet national security or law enforcement requirements).

  • Vital Interests: We may disclose your information where we believe it is necessary to investigate, prevent, or take action regarding potential violations of our policies, suspected fraud, situations involving potential threats to the safety of any person and illegal activities, or as evidence in litigation in which we are involved.

More specifically, we may need to process your data or share your personal information in the following situations:

  • Vendors, Consultants and Other Third-Party Service Providers. We may share your data with third party vendors, service providers, contractors or agents who perform services for us or on our behalf and require access to such information to do that work. Examples include: payment processing, data analysis, email delivery, hosting services, customer service and marketing efforts. We may allow selected third parties to use tracking technology on the Services, which will enable them to collect data about how you interact with the Services over time. This information may be used to, among other things, analyze and track data, determine the popularity of certain content and better understand online activity. Unless described in this Policy, we do not share, sell, rent or trade any of your information with third parties for their promotional purposes.

  • Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.

  • Third-Party Advertisers. We may use third-party advertising companies to serve ads when you visit the Services. These companies may use information about your visits to our Website(s) and other websites that are contained in web cookies and other tracking technologies in order to provide advertisements about goods and services of interest to you.

  • Business Partners. We may share your information with our business partners to offer you certain products, services or promotions.

  • Other Users. When you share personal information (for example, by posting comments, contributions or other content to the Services) or otherwise interact with public areas of the Services, such personal information may be viewed by all users and may be publicly distributed outside the Services in perpetuity. If you interact with other users of our Services and register through a social network (such as Facebook), your contacts on the social network will see your name, profile photo, and descriptions of your activity. Similarly, other users will be able to view descriptions of your activity, communicate with you within our Services, and view your profile.


4. DO WE USE COOKIES AND OTHER TRACKING TECHNOLOGIES?

In Short: We may use cookies and other tracking technologies to collect and store your information.

We may use cookies and similar tracking technologies (like web beacons and pixels) to access or store information. Specific information about how we use such technologies and how you can refuse certain cookies is set out in our Cookie Policy.


5. DO WE USE GOOGLE MAPS?

In Short: Yes, we use Google Maps for the purpose of providing better service.

This website, mobile application, or Facebook application uses Google Maps APIs. You may find the Google Maps APIs Terms of Service here. To better understand Google’s Privacy Policy, please refer to this link.

By using our Maps API Implementation, you agree to be bound by Google’s Terms of Service. By using our implementation of the Google Maps APIs, you agree to allow us to gain access to information about you including personally identifiable information (such as usernames) and non-personally identifiable information (such as location). We will be collecting the following information:

address

geolocation

coordinates

For a full list of what we use information for, please see the previous section titled "HOW DO WE USE YOUR INFORMATION?" and WILL YOUR INFORMATION BE SHARED WITH ANYONE? You agree to allow us to obtain or cache your location. You may revoke your consent at anytime. We use information about location in conjunction with data from other data providers.

The Maps APIs that we use store and access cookies and other information on your devices. If you are a user currently in the European Economic Area (EU countries, Iceland, Liechtenstein and Norway), please take a look at our EU User Consent Policy.


6. HOW DO WE HANDLE YOUR SOCIAL LOGINS?

In Short: If you choose to register or log in to our services using a social media account, we may have access to certain information about you.

Our Services offer you the ability to register and login using your third party social media account details (like your Facebook or Twitter logins). Where you choose to do this, we will receive certain profile information about you from your social media provider. The profile Information we receive may vary depending on the social media provider concerned, but will often include your name, e-mail address, friends list, profile picture as well as other information you choose to make public.

We will use the information we receive only for the purposes that are described in this privacy policy or that are otherwise made clear to you on the Services. Please note that we do not control, and are not responsible for, other uses of your personal information by your third party social media provider. We recommend that you review their privacy policy to understand how they collect, use and share your personal information, and how you can set your privacy preferences on their sites and apps.


7. HOW LONG DO WE KEEP YOUR INFORMATION?

In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy policy unless otherwise required by law.

We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy policy, unless a longer retention period is required or permitted by law (such as tax, accounting or other legal requirements). No purpose in this policy will require us keeping your personal information for longer than the period of time in which users have an account with us.

When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize it, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.


8. HOW DO WE KEEP YOUR INFORMATION SAFE?

In Short: We aim to protect your personal information through a system of organizational and technical security measures.

We have implemented appropriate technical and organizational security measures designed to protect the security of any personal information we process. However, please also remember that we cannot guarantee that the internet itself is 100% secure. Although we will do our best to protect your personal information, transmission of personal information to and from our Services is at your own risk. You should only access the services within a secure environment.


9. DO WE COLLECT INFORMATION FROM MINORS?

In Short: We do not knowingly collect data from or market to children under 18 years of age.

We do not knowingly solicit data from or market to children under 18 years of age. By using the Services, you represent that you are at least 18 or that you are the parent or guardian of such a minor and consent to such minor dependent’s use of the Services. If we learn that personal information from users less than 18 years of age has been collected, we will deactivate the account and take reasonable measures to promptly delete such data from our records. If you become aware of any data we have collected from children under age 18, please contact us at cornletservice@gmail.com.


10. WHAT ARE YOUR PRIVACY RIGHTS?

In Short: You may review, change, or terminate your account at any time.

If you are resident in the European Economic Area and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: http://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.

If you have questions or comments about your privacy rights, you may email us at cornletservice@gmail.com.


Account Information

If you would at any time like to review or change the information in your account or terminate your account, you can:

Log into your account settings and update your user account.

Upon your request to terminate your account, we will deactivate or delete your account and information from our active databases. However, some information may be retained in our files to prevent fraud, troubleshoot problems, assist with any investigations, enforce our Terms of Use and/or comply with legal requirements.

Cookies and similar technologies: Most Web browsers are set to accept cookies by default. If you prefer, you can usually choose to set your browser to remove cookies and to reject cookies. If you choose to remove cookies or reject cookies, this could affect certain features or services of our Services. To opt-out of interest-based advertising by advertisers on our Services visit http://www.aboutads.info/choices/.

Opting out of email marketing: You can unsubscribe from our marketing email list at any time by clicking on the unsubscribe link in the emails that we send or by contacting us using the details provided below. You will then be removed from the marketing email list – however, we will still need to send you service-related emails that are necessary for the administration and use of your account. To otherwise opt-out, you may:

Access your account settings and update preferences.


11. CONTROLS FOR DO-NOT-TRACK FEATURES

Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track (“DNT”) feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. No uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy policy.


12. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?

In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.

California Civil Code Section 1798.83, also known as the “Shine The Light” law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.

If you are under 18 years of age, reside in California, and have a registered account with the Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below, and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from our systems.


13. DO WE MAKE UPDATES TO THIS POLICY?

In Short: Yes, we will update this policy as necessary to stay compliant with relevant laws.

We may update this privacy policy from time to time. The updated version will be indicated by an updated “Revised” date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy policy, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy policy frequently to be informed of how we are protecting your information.


14. HOW CAN YOU CONTACT US ABOUT THIS POLICY?

If you have questions or comments about this policy, you may email us at cornletservice@gmail.com or by post to:

Cornlet Housing
106-1302 Oh-Hyun Ro 56, Gang-buk Gu
Seoul 01232
South Korea


HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?

Based on the laws of some countries, you may have the right to request access to the personal information we collect from you, change that information, or delete it in some circumstances. To request to review, update, or delete your personal information, please submit a request form by clicking here. We will respond to your request within 30 days.
-
`; - -export const Container = styled.div` - padding: 2rem 0; -`; - -const PrivacyPolicy = () => ( -
- - -
- -
-); - -export default PrivacyPolicy; diff --git a/client-cra-legacy/src/pages/profile/MyBookmarks/index.jsx b/client-cra-legacy/src/pages/profile/MyBookmarks/index.jsx deleted file mode 100644 index 4cb00bc..0000000 --- a/client-cra-legacy/src/pages/profile/MyBookmarks/index.jsx +++ /dev/null @@ -1,82 +0,0 @@ -import React from 'react' -import { useSelector } from 'react-redux' -import NoBookmarksSVGRaw from 'src/assets/illustrations/no-bookmarks.svg' -import ListingCardV2 from 'src/components/cards/ListingCardV2' -import Heading from 'src/components/fonts/Heading' -import Text from 'src/components/fonts/Text' -import MainHeader from 'src/components/headers/MainHeader' -import Navbar from 'src/components/headers/Navbar' -import { FlexRow } from 'src/components/layouts/Flex' -import { FlexColumn } from 'src/components/layouts/Flex' -import Space from 'src/components/layouts/Space' -import VertCardList from 'src/containers/VertCardList' -import theme from 'src/theme/colors' -import styled from 'styled-components' - -const MyBookmarks = () => { - const bm = useSelector((state) => state.bm) - const user = useSelector((state) => state.user) - const listings = user ? user.bm.listings : bm.listings - - return ( -
- - - - - Bookmarks - - - - {/* bookmarked listings */} - - - {listings.map((listing) => ( - - ))} - - - - {/* no bookmarked listings */} - {listings && listings.length === 0 && ( - - - - - No bookmarks yet! - - Bookmark a listing to get started - - - )} -
- ) -} - -const TitleWrapper = styled.div` - @media (min-width: ${(props) => props.theme.md}px) { - display: flex; - justify-content: center; - } -` - -const TitleContainer = styled.div` - padding: 2rem 0 0 0.5rem; - - @media (min-width: ${(props) => props.theme.md}px) { - width: ${(props) => `${props.theme.md}px`}; - padding: 2rem 0 0 2rem; - } -` - -const CardListContainer = styled.div` - padding: 1rem 0 3rem 0; -` - -const NoBookmarksSVG = styled(NoBookmarksSVGRaw)` - width: 50%; - opacity: 0.9; - max-width: 200px; -` - -export default MyBookmarks diff --git a/client-cra-legacy/src/pages/profile/MyChats/Chat/index.jsx b/client-cra-legacy/src/pages/profile/MyChats/Chat/index.jsx deleted file mode 100644 index 59909dd..0000000 --- a/client-cra-legacy/src/pages/profile/MyChats/Chat/index.jsx +++ /dev/null @@ -1,83 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import styled from 'styled-components'; -import MainHeader from 'src/components/headers/MainHeader'; -import Navbar from 'src/components/headers/Navbar'; -import { useSelector, useDispatch } from 'react-redux'; -import Body from 'src/components/fonts/Body'; -import ChatroomList from '../ChatroomList'; -import api from 'src/util/api'; -import log from 'src/util/log'; -import LoadingDots from 'src/components/displays/LoadingDots'; - -const Container = styled.div` - display: flex; - flex-direction: column; - height: 100%; - - @media (min-width: ${(props) => props.theme.md}px) { - max-height: 90vh; - - & > * { - flex-shrink: 0; - } - } -`; - -export const Center = styled.div` - margin-top: 2rem; - display: flex; - justify-content: center; -`; - -export const Content = styled.div` - flex-grow: 1; - flex-shrink: 1; - overflow: hidden; - - @media (min-width: ${(props) => props.theme.md}px) { - border: 1px solid ${props => props.theme.border.default}; - } -`; - -const Chat = () => { - const chatrooms = useSelector((state) => state.chatrooms); - const user = useSelector(state => state.user); - - // reload chats - const [loading, setLoading] = useState(false); - const dispatch = useDispatch(); - useEffect(() => { - if (user) { - setLoading(true); - api.get(`/chatroom/user/${user.uid}`) - .then(({ data }) => { - dispatch({ - type: 'CHATROOMS_SET', - payload: data, - }); - setLoading(false); - }) - .catch(({ response }) => { - log('Chat', response) - setLoading(false); - }) - } - }, []) - - return ( - - - - - {loading - ? - : chatrooms.length === 0 - ?
No chats yet!
- : - } -
-
- ); -}; - -export default Chat; diff --git a/client-cra-legacy/src/pages/profile/MyChats/Chatroom/index.jsx b/client-cra-legacy/src/pages/profile/MyChats/Chatroom/index.jsx deleted file mode 100644 index b127c2b..0000000 --- a/client-cra-legacy/src/pages/profile/MyChats/Chatroom/index.jsx +++ /dev/null @@ -1,49 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import MainHeader from 'src/components/headers/MainHeader'; -import Navbar from 'src/components/headers/Navbar'; -import RenderOn from 'src/containers/RenderOn'; -import ChatroomList from '../ChatroomList'; -import ChatroomPanel from '../ChatroomPanel'; - -export const Container = styled.div` - display: flex; - flex-direction: column; - height: 100%; - - @media (min-width: ${(props) => props.theme.md}px) { - max-height: 90vh; - - & > * { - flex-shrink: 0; - } - } -`; - -const Content = styled.div` - display: flex; - flex-grow: 1; - flex-shrink: 1; - overflow: hidden; - - @media (min-width: ${(props) => props.theme.md}px) { - border: 1px solid ${props => props.theme.border.default}; - } -`; - -const Chatroom = ({ match }) => ( - - - - - - - - - - - - -); - -export default Chatroom; diff --git a/client-cra-legacy/src/pages/profile/MyChats/ChatroomList/ListElt.jsx b/client-cra-legacy/src/pages/profile/MyChats/ChatroomList/ListElt.jsx deleted file mode 100644 index 218b7b6..0000000 --- a/client-cra-legacy/src/pages/profile/MyChats/ChatroomList/ListElt.jsx +++ /dev/null @@ -1,95 +0,0 @@ -import React from 'react' -import { useSelector } from 'react-redux' -import { Link } from 'react-router-dom' -import Avatar from 'src/components/displays/Avatar' -import CornerRedDot from 'src/components/displays/CornerRedDot' -import Body from 'src/components/fonts/Body' -import getFromNowDate from 'src/util/helpers/getFromNowDate' -import getShortAddr from 'src/util/helpers/getShortAddr' -import useChatOtherUser from 'src/util/hooks/useChatOtherUser' -import useRouter from 'src/util/hooks/useRouter' -import styled from 'styled-components' - -const ListElt = ({ chatroom }) => { - const otherUser = useChatOtherUser(chatroom) - const router = useRouter() - const chatroomPath = `/profile/chat/${chatroom._id}` - const selected = router.pathname === chatroomPath - const nextPath = selected ? '/profile/chat' : chatroomPath - const user = useSelector((state) => state.user) - const hasNotif = chatroom.notifUids && chatroom.notifUids.includes(user.uid) - const lastMsg = chatroom.msgs[chatroom.msgs.length - 1] - - return ( -
- - - - - {hasNotif && } - - - - {otherUser.name} - - - {getShortAddr(chatroom.listing.addr)} - - - - - - - {chatroom.searcher && chatroom.searcher.isBanned - ? '- User banned -' - : chatroom.msgs[chatroom.msgs.length - 1].content} - - - {getFromNowDate(lastMsg.createdAt)} - - - - -
- ) -} - -const Container = styled.div` - display: flex; - padding: 1rem 0; - border-radius: 2px; - border-bottom: 1px solid ${(props) => props.theme.border.default}; - - @media (min-width: ${(props) => props.theme.md}px) { - padding: 1rem; - } - - // selected - background: ${(props) => (props.selected ? 'rgba(0, 0, 0, .1)' : '')}; -` - -const PhotoSection = styled.div` - margin-right: 1rem; - position: relative; -` - -const TextSection = styled.div` - width: 100%; - display: flex; - flex-direction: column; - justify-content: center; -` - -const Row = styled.div` - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - margin-top: 0.2rem; -` - -const TextContainer = styled.div` - max-width: ${(props) => (props.maxWidth ? `${props.maxWidth}px` : '140px')}; -` - -export default ListElt diff --git a/client-cra-legacy/src/pages/profile/MyChats/ChatroomList/index.jsx b/client-cra-legacy/src/pages/profile/MyChats/ChatroomList/index.jsx deleted file mode 100644 index 1e94ccc..0000000 --- a/client-cra-legacy/src/pages/profile/MyChats/ChatroomList/index.jsx +++ /dev/null @@ -1,78 +0,0 @@ -import React, { useEffect, useState } from 'react' -import PerfectScrollbar from 'react-perfect-scrollbar' -import { useDispatch, useSelector } from 'react-redux' -import Text from 'src/components/fonts/Text' -import { FlexColumn } from 'src/components/layouts/Flex' -import Space from 'src/components/layouts/Space' -import theme from 'src/theme/colors' -import styled from 'styled-components' -import ListElt from './ListElt' -import NoChatroomsSVGRaw from 'src/assets/illustrations/no-chatrooms.svg' -import api from 'src/util/api' -import log from 'src/util/log' - -const Container = styled.div` - @media (min-width: ${(props) => props.theme.md}px) { - width: 400px; - height: 100%; - max-height: 100%; - border-right: 1px solid rgba(0, 0, 0, 0.1); - overflow: hidden; - } -` - -const NoChatroomsSVG = styled(NoChatroomsSVGRaw)` - width: 40%; - opacity: 0.9; - max-width: 150px; -` - -const ChatroomList = () => { - const chatrooms = useSelector((state) => state.chatrooms) - const user = useSelector((state) => state.user) - - // reload chats - const dispatch = useDispatch() - - useEffect(() => { - if (user) { - api - .get(`/chatroom/user/${user.uid}`) - .then(({ data }) => { - dispatch({ - type: 'CHATROOMS_SET', - payload: data, - }) - }) - .catch(({ response }) => { - log('Chat', response) - }) - } - }, []) - - return ( - - - {/* chatroom list */} - {chatrooms.map((chatroom) => ( - - ))} - - {/* no chatrooms */} - {chatrooms && chatrooms.length === 0 && ( - - - - - No chatrooms yet! - - Message a host to get started - - - )} - - - ) -} - -export default ChatroomList diff --git a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/ChatContents/MsgGroup.jsx b/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/ChatContents/MsgGroup.jsx deleted file mode 100644 index 7f36bc6..0000000 --- a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/ChatContents/MsgGroup.jsx +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import Avatar from 'src/components/displays/Avatar'; -import Body from 'src/components/fonts/Body'; -import formatDate from 'src/util/helpers/formatDate'; -import getFromNowDate from 'src/util/helpers/getFromNowDate'; - -const Container = styled.div` - display: flex; - margin: 1rem 0; -`; - -export const PhotoSection = styled.div` - margin-right: 1rem; -`; - -export const TextSection = styled.div` - -`; - -export const UserSection = styled.div` - display: flex; - align-items: center; - - & p { - margin-right: .5rem; - } -`; - -export const MsgSection = styled.div` - margin-top: .3rem; -`; - -const DateSpan = styled.span` - font-size: .9rem; - color: ${props => props.theme.textMuted}; - font-weight: 400; -`; - -const MsgGroup = ({ user, msgs, isOwner }) => { - const lastMsg = msgs[msgs.length - 1]; - - return ( - - - - - - - {user.name} {isOwner ? '(Host)' : ''} {getFromNowDate(lastMsg.createdAt)} - - - {msgs.map((msg) => ( - {msg.content} - ))} - - - - ); -}; - -export default MsgGroup; diff --git a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/ChatContents/index.jsx b/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/ChatContents/index.jsx deleted file mode 100644 index 61d373a..0000000 --- a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/ChatContents/index.jsx +++ /dev/null @@ -1,59 +0,0 @@ -import React, { useRef, useLayoutEffect } from 'react' -import Space from 'src/components/layouts/Space' -import styled from 'styled-components' -import MsgGroup from './MsgGroup' - -const Container = styled.div` - max-height: 100%; - padding: 1rem; -` - -const ChatContents = ({ chatroom }) => { - const msgGroups = [] - - if (chatroom.msgs) { - chatroom.msgs.forEach((msg) => { - const isOwner = msg.uid === chatroom.listing.user.uid - - if (msgGroups.length > 0 && msgGroups[msgGroups.length - 1].isOwner === isOwner) { - // msg by same user as previous msgGroup - // merge msg - msgGroups[msgGroups.length - 1].msgs.push(msg) - } else { - // msg by different user - // append new msgGroup - const user = isOwner ? chatroom.listing.user : chatroom.searcher || chatroom.listing.user - - const data = { - user, - msgs: [msg], - isOwner, - } - msgGroups.push(data) - } - }) - } - - const messagesEndRef = useRef(null) - const scrollToBottom = () => { - messagesEndRef.current.scrollIntoView({ block: 'nearest' }) - } - - useLayoutEffect(() => { - scrollToBottom() - }, [msgGroups]) - - if (chatroom.searcher && chatroom.searcher.isBanned) return
- - return ( - - {msgGroups.map((msgGroup) => ( - - ))} - -
- - ) -} - -export default ChatContents diff --git a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/Header.jsx b/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/Header.jsx deleted file mode 100644 index 39f0d71..0000000 --- a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/Header.jsx +++ /dev/null @@ -1,102 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import LeftRaw from 'src/assets/svgs/left.svg' -import HouseRaw from 'src/assets/svgs/house.svg' -import { Avatar } from '@material-ui/core' -import useChatOtherUser from 'src/util/hooks/useChatOtherUser' -import Body from 'src/components/fonts/Body' -import getShortAddr from 'src/util/helpers/getShortAddr' -import { Link } from 'react-router-dom' -import RenderOn from 'src/containers/RenderOn' -import TextBtn from 'src/components/buttons/TextBtn' -import theme from 'src/theme' -import useIsDesktop from 'src/util/hooks/useIsDesktop' -import Btn from 'src/components/buttons/Btn' -import InvertedBtn from 'src/components/buttons/InvertedBtn' -import Space from 'src/components/layouts/Space' -import { FlexRow } from 'src/components/layouts/Flex' - -const Container = styled.div` - display: flex; - align-items: center; - justify-content: space-between; - padding: 1rem 0; - width: 100%; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - - @media (min-width: ${(props) => props.theme.md}px) { - padding: 1rem 2rem; - } -` - -const LeftSVG = styled(LeftRaw)` - height: 1.2rem; - width: 1.2rem; - fill: ${(props) => props.theme.primary}; - margin-right: 2rem; -` - -const HouseSVG = styled(HouseRaw)` - height: 1.5rem; - width: 1.5rem; - fill: ${(props) => props.theme.primary}; - margin-right: 1rem; -` - -const ContactSection = styled.div` - display: flex; -` - -const ContactText = styled.div` - display: flex; - flex-direction: column; - justify-content: center; - align-items: flex-start; - margin-left: 1rem; -` - -const Header = ({ chatroom }) => { - const otherUser = useChatOtherUser(chatroom) - const isDesktop = useIsDesktop() - - return ( - - - -
- - - - -
-
-
- - - - - {otherUser.name} - - {getShortAddr(chatroom.listing.addr)} - - - - - - - - View listing - - -
-
- {isDesktop && ( - - View listing - - )} -
- ) -} - -export default Header diff --git a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/InputSection.jsx b/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/InputSection.jsx deleted file mode 100644 index 9bf980a..0000000 --- a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/InputSection.jsx +++ /dev/null @@ -1,174 +0,0 @@ -import React, { useState } from 'react' -import styled from 'styled-components' -import Input from 'src/components/inputs/Input' -import Btn from 'src/components/buttons/Btn' -import Body from 'src/components/fonts/Body' -import RenderOn from 'src/containers/RenderOn' -import socket from 'src/util/socket' -import { useSelector } from 'react-redux' -import Text from 'src/components/fonts/Text' -import api from 'src/util/api' - -const HEIGHT = 84 - -const InputSection = ({ chatroom }) => { - const [msg, setMsg] = useState('') - const minRows = 1 - const maxRows = 6 - const lineHeight = 24 - const [rows, setRows] = useState(minRows) - const user = useSelector((state) => state.user) - - const handleChange = (event) => { - // reset number of rows in textarea - const previousRows = rows - setRows(minRows) - - // calculate number of rows - const currentRows = Math.floor(event.target.scrollHeight / lineHeight) - - // if rows didn't change - if (currentRows === previousRows) { - setRows(currentRows) - } - - // if rows increased - if (currentRows >= maxRows) { - // increase rows - setRows(maxRows) - event.target.scrollTop = event.target.scrollHeight - } - - setMsg(event.target.value) - setRows(currentRows < maxRows ? currentRows : maxRows) - } - - const handleSendMsg = () => { - setMsg('') - setRows(minRows) - - const data = { - cid: chatroom._id, - type: 'txt', - content: msg, - uid: user.uid, - createdAt: new Date(), - } - - if (msg?.includes('@gmail.com')) { - api.post('/user/flag-msg', { - msg, - user, - }) - } - socket.emit('msg', data) - } - - const handleKeyDown = (e) => { - if (e.key === 'Enter' && !e.altKey) { - e.preventDefault() - e.stopPropagation() - handleSendMsg() - } - } - - if (chatroom.searcher && chatroom.searcher.isBanned) { - return ( - - This user has been banned from Cornlet - - This user has been banned for suspicious activities such as spamming, conversations not - related to subletting, or potentially malicious behaviors. - - - If you have any questions or concerns, please reach out to contactcornlet@gmail.com - - - ) - } - - return ( -
- - - - - - Send - - - - - -
- ) -} - -const Container = styled.div` - position: fixed; - bottom: 0; - left: 0; - right: 0; - padding: 0.5rem 1rem 1rem 1rem; - height: ${HEIGHT}px; - - display: flex; - align-items: center; - justify-content: space-between; - - border-top: 1px solid rgba(0, 0, 0, 0.05); - background: white; - - & > button { - margin-left: 1rem; - margin-top: 0.5rem; - } - - @media (min-width: ${(props) => props.theme.md}px) { - position: static; - height: auto; - } -` - -export const Placeholder = styled.div` - height: ${HEIGHT}px; -` - -export const InputContainer = styled.div` - position: relative; - width: 100%; -` - -export const HelpText = styled(Body)` - position: absolute; - bottom: 0.8rem; - left: 1rem; -` - -const BanMessageContainer = styled.div` - border-top: 1px solid rgba(0, 0, 0, 0.05); - padding: 1.5rem 0 2rem 0; - - @media (min-width: ${(props) => props.theme.md}px) { - padding: 1.5rem; - } -` - -const Title = styled(Text)` - margin-bottom: 0.3rem; -` - -const Desc = styled(Text)` - font-size: 0.9rem; - opacity: 0.9; - margin-bottom: 0.3rem; -` - -export default InputSection diff --git a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/index.jsx b/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/index.jsx deleted file mode 100644 index 2c97827..0000000 --- a/client-cra-legacy/src/pages/profile/MyChats/ChatroomPanel/index.jsx +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import useChatroom from 'src/util/hooks/useChatroom'; -import PerfectScrollbar from 'react-perfect-scrollbar' -import { useSelector } from 'react-redux'; -import socket from 'src/util/socket'; -import Header from './Header'; -import ChatContents from './ChatContents'; -import InputSection from './InputSection'; - -const Container = styled.div` - width: 100%; - display: flex; - flex-direction: column; -`; - -export const Fill = styled.div` - flex: 1; - overflow-x: hidden; - overflow-y: auto; -`; - -const ChatroomPanel = ({ cid }) => { - const chatroom = useChatroom(cid); - const user = useSelector((state) => state.user); - if (chatroom && user && chatroom.notifUids.includes(user.uid)) { - socket.emit('chatroom seen', { cid, uid: user.uid }); - } - - if (!chatroom) return
; - - return ( - -
- - {/* */} - - {/* */} - - - - ); -}; - -export default ChatroomPanel; diff --git a/client-cra-legacy/src/pages/profile/MyListings/MyListingsList.jsx b/client-cra-legacy/src/pages/profile/MyListings/MyListingsList.jsx deleted file mode 100644 index 64e44cf..0000000 --- a/client-cra-legacy/src/pages/profile/MyListings/MyListingsList.jsx +++ /dev/null @@ -1,77 +0,0 @@ -import React, { useEffect, useState } from 'react' -import NoListingSVGRaw from 'src/assets/illustrations/no-listings.svg' -import PaginationBtns from 'src/components/buttons/PaginationBtns' -import ListingCardV2 from 'src/components/cards/ListingCardV2' -import ListingHostCard from 'src/components/cards/ListingHostCard' -import LoadingDots from 'src/components/displays/LoadingDots' -import Text from 'src/components/fonts/Text' -import { FlexColumn } from 'src/components/layouts/Flex' -import Space from 'src/components/layouts/Space' -import VertCardList from 'src/containers/VertCardList' -import theme from 'src/theme/colors' -import api from 'src/util/api' -import log from 'src/util/log' -import styled from 'styled-components' - -const MyListingsList = ({ uid, setHasListings }) => { - const [listings, setListings] = useState([]) - const [loading, setLoading] = useState(false) - - const reload = () => { - setLoading(true) - api - .get(`/user/${uid}/listings`) - .then((res) => { - setListings(res.data) - setLoading(false) - }) - .catch((e) => log('ERROR get mylistings', e)) - } - - useEffect(() => { - if (uid) { - reload() - } - }, [uid]) - - useEffect(() => { - if (listings.length > 0) setHasListings(true) - else setHasListings(false) - }, [listings, setHasListings]) - - return ( - - {loading && } - - {listings.map((listing) => ( - - ))} - - - {/* no listings */} - {!loading && listings && listings.length === 0 && ( - - - - - No listings yet! - - Create a listing to get started - - - )} - - ) -} - -const Container = styled.div` - margin: 2rem 0; -` - -const NoListingSVG = styled(NoListingSVGRaw)` - width: 70%; - opacity: 0.9; - max-width: 300px; -` - -export default MyListingsList diff --git a/client-cra-legacy/src/pages/profile/MyListings/index.jsx b/client-cra-legacy/src/pages/profile/MyListings/index.jsx deleted file mode 100644 index f626d26..0000000 --- a/client-cra-legacy/src/pages/profile/MyListings/index.jsx +++ /dev/null @@ -1,70 +0,0 @@ -import React, { useState, useEffect } from 'react' -import styled from 'styled-components' -import Heading from 'src/components/fonts/Heading' -import Body from 'src/components/fonts/Body' -import { useSelector } from 'react-redux' -import MainHeader from 'src/components/headers/MainHeader' -import Navbar from 'src/components/headers/Navbar' -import MyListingsList from './MyListingsList' -import { FlexRow } from 'src/components/layouts/Flex' -import Btn from 'src/components/buttons/Btn' -import Space from 'src/components/layouts/Space' -import useIsDesktop from 'src/util/hooks/useIsDesktop' -import { Link } from 'react-router-dom' -import PlusIcon from 'src/assets/svgs/plus.svg' - -const MyListings = () => { - const user = useSelector((state) => state.user) - - // conditionally render body text - const defaultText = 'Create a new listing to get started' - const hasListingsText = 'Update your listing to improve its sort rating' - const [hasListings, setHasListings] = useState(false) - const [text, setText] = useState(defaultText) - const isDesktop = useIsDesktop() - - useEffect(() => { - if (hasListings) setText(hasListingsText) - else setText(defaultText) - }, [hasListings]) - - return ( - - - - -
- - {`Hi, ${user.name.split(' ')[0]}`} - - - - Create listing - - - - {isDesktop && ( - <> - - {text} - - )} -
- - -
- ) -} - -const Container = styled.div`` - -const StyledPlusIcon = styled(PlusIcon)` - fill: #fff; -` - -const ButtonText = styled.p` - margin-left: 0.2rem; - line-height: 1.5; -` - -export default MyListings diff --git a/client-cra-legacy/src/pages/profile/Settings/index.jsx b/client-cra-legacy/src/pages/profile/Settings/index.jsx deleted file mode 100644 index a99e1d4..0000000 --- a/client-cra-legacy/src/pages/profile/Settings/index.jsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import MainHeader from 'src/components/headers/MainHeader'; -import Navbar from 'src/components/headers/Navbar'; -import Btn from 'src/components/buttons/Btn'; -import api from 'src/util/api'; -import log from 'src/util/log'; -import useRouter from 'src/util/hooks/useRouter'; -import { useDispatch } from 'react-redux'; - -const Container = styled.div` -`; - -const Content = styled.div` - display: flex; - justify-content: center; - padding-top: 2rem; -`; - -const Settings = () => { - const router = useRouter(); - const dispatch = useDispatch(); - const handleSignOut = async () => { - api.get('/auth/signout') - .then(() => { - router.history.push('/'); - - dispatch({ - type: 'USER_SET', - payload: null, - }); - - dispatch({ - type: 'CHATROOMS_SET', - payload: [], - }); - }) - .catch(({ response }) => log('Settings', response)) - }; - - return ( - - - - - -Sign Out - - - - ); -}; - -export default Settings; diff --git a/client-cra-legacy/src/pages/profile/index.jsx b/client-cra-legacy/src/pages/profile/index.jsx deleted file mode 100644 index 4ee92c2..0000000 --- a/client-cra-legacy/src/pages/profile/index.jsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react'; -import { useSelector } from 'react-redux'; -import { useHistory } from 'react-router-dom'; - -const ProfileIndex = () => { - const user = useSelector((state) => state.user); - const history = useHistory(); - - if (!user) history.push('/'); - else history.push('/profile/listings'); - - return
; -}; - -export default ProfileIndex; diff --git a/client-cra-legacy/src/pages/stats/index.jsx b/client-cra-legacy/src/pages/stats/index.jsx deleted file mode 100644 index d9df21a..0000000 --- a/client-cra-legacy/src/pages/stats/index.jsx +++ /dev/null @@ -1,28 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import api from 'src/util/api'; - -const StatsIndex = () => { - const [stats, setStats] = useState(); - const [isLoading, setIsLoading] = useState(false); - - useEffect(() => { - setIsLoading(true) - api.get(`/stats`) - .then((res) => { - setStats(res.data) - setIsLoading(false) - }) - .catch((error) => { - console.log('StatsIndex error', error) - setIsLoading(false) - }) - }, []); - - if (!stats || isLoading) return
Loading stats (this takes several minutes!)
- - return
{Object.entries(stats).map(([ key, value ]) => ( -

{key}: {value}

- ))}
; -}; - -export default StatsIndex; diff --git a/client-cra-legacy/src/pages/terms-conditions/index.jsx b/client-cra-legacy/src/pages/terms-conditions/index.jsx deleted file mode 100644 index c4e2903..0000000 --- a/client-cra-legacy/src/pages/terms-conditions/index.jsx +++ /dev/null @@ -1,73 +0,0 @@ -import React from 'react'; -import styled from 'styled-components'; -import MainHeader from 'src/components/headers/MainHeader'; - -const Container = styled.div` - padding: 2rem 0; -`; - -const html = ` - -
-
TERMS AND CONDITIONS

Last Updated 12 June 2020


1. Agreement to Terms

1.1 These Terms and Conditions constitute a legally binding agreement made between you, whether personally or on behalf of an entity (you), and Cornlet Housing, located at 106-1302 Oh-Hyun Ro 56, Gang-buk, Seoul, 01232 South Korea (we, us), concerning your access to and use of the cornlet (https://www.cornlet.com) website as well as any related applications (the Site).

The Site provides the following services: Online platform for sharing sublets and leases near Cornell University (Services). You agree that by accessing the Site and/or Services, you have read, understood, and agree to be bound by all of these Terms and Conditions.

If you do not agree with all of these Terms and Conditions, then you are prohibited from using the Site and Services and you must discontinue use immediately. We recommend that you print a copy of these Terms and Conditions for future reference.

1.2 The supplemental policies set out in Section 1.7 below, as well as any supplemental terms and condition or documents that may be posted on the Site from time to time, are expressly incorporated by reference.

1.3 We may make changes to these Terms and Conditions at any time. The updated version of these Terms and Conditions will be indicated by an updated “Revised” date and the updated version will be effective as soon as it is accessible. You are responsible for reviewing these Terms and Conditions to stay informed of updates. Your continued use of the Site represents that you have accepted such changes.

1.4 We may update or change the Site from time to time to reflect changes to our products, our users' needs and/or our business priorities.

1.5 The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country.

1.6 The Site is intended for users who are at least 18 years old. If you are under the age of 18, you are not permitted to register for the Site or use the Services without parental permission.

1.7 Additional policies which also apply to your use of the Site include:

Our Privacy Notice https://www.cornlet.com/privacy-policy, which sets out the terms on which we process any personal data we collect from you, or that you provide to us. By using the Site, you consent to such processing and you warrant that all data provided by you is accurate.
Our Cookie Policy https://www.cornlet.com/cookie-policy, which sets out information about the cookies on the Site.

2. Acceptable Use

2.1 You may not access or use the Site for any purpose other than that for which we make the site and our services available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.

2.2 As a user of this Site, you agree not to:

Systematically retrieve data or other content from the Site to a compile database or directory without written permission from us
Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users to send unsolicited email or creating user accounts under false pretenses
Use a buying agent or purchasing agent to make purchases on the Site
Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any content or enforce limitations on the use
Engage in unauthorized framing of or linking to the Site
Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords
Make improper use of our support services, or submit false reports of abuse or misconduct
Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools
Interfere with, disrupt, or create an undue burden on the Site or the networks and services connected to the Site
Attempt to impersonate another user or person, or use the username of another user
Sell or otherwise transfer your profile
Use any information obtained from the Site in order to harass, abuse, or harm another person
Use the Site or our content as part of any effort to compete with us or to create a revenue-generating endeavor or commercial enterprise
Decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site
Harass, annoy, intimidate, or threaten any of our employees, agents, or other users
Attempt to access any portions of the Site that you are restricted from accessing
Delete the copyright or other proprietary rights notice from any of the content
Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code
Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material that interferes with any party’s uninterrupted use and enjoyment of the Site, or any material that acts as a passive or active information collection or transmission mechanism
Use, launch, or engage in any automated use of the system, such as using scripts to send comments or messages, robots, scrapers, offline readers, or similar data gathering and extraction tools
Use the Site in a manner inconsistent with any applicable laws or regulations
Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site
Threaten users with negative feedback or offering services solely to give positive feedback to users
Misrepresent experience, skills, or information about a User
Advertise products or services not intended by us
Falsely imply a relationship with us or another company with whom you do not have a relationship

3. Information you provide to us

3.1 You represent and warrant that: (a) all registration information you submit will be true, accurate, current, and complete and relate to you and not a third party; (b) you will maintain the accuracy of such information and promptly update such information as necessary; (c) you will keep your password confidential and will be responsible for all use of your password and account; (d) you have the legal capacity and you agree to comply with these Terms and Conditions; and (e) you are not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site.

If you know or suspect that anyone other than you knows your user information (such as an identification code or user name) and/or password you must promptly notify us at cornletservice@gmail.com.

3.2 If you provide any information that is untrue, inaccurate, not current or incomplete, we may suspend or terminate your account. We may remove or change a user name you select if we determine that such user name is inappropriate.

3.3 As part of the functionality of the Site, you may link your account with online accounts you may have with third party service providers (each such account, a Third Party Account) by either: (a) providing your Third Party Account login information through the Site; or (b) allowing us to access your Third Party Account, as is permitted under the applicable terms and conditions that govern your use of each Third Party Account.

You represent that you are entitled to disclose your Third Party Account login information to us and/or grant us access to your Third Party Account without breach by you of any of the terms and conditions that govern your use of the applicable Third Party Account and without obligating us to pay any fees or making us subject to any usage limitations imposed by such third party service providers.

3.4 By granting us access to any Third Party Accounts, you understand that (a) we may access, make available and store (if applicable) any content that you have provided to and stored in your Third Party Account (the “Social Network Content”) so that it is available on and through the Site via your account, including without limitation any friend lists; and (b) we may submit and receive additional information to your Third Party Account to the extent you are notified when you link your account with the Third Party Account.

Depending on the Third Party Accounts you choose and subject to the privacy settings that you have set in such Third Party Accounts, personally identifiable information that you post to your Third Party Accounts may be available on and through your account on the Site. Please note that if a Third Party Account or associated service becomes unavailable or our access to such Third Party Account is terminated by the third party service provider, then Social Network Content may no longer be available on and through the Site.

You will have the ability to disable the connection between your account on the Site and your Third Party Accounts at any time. Please note that your relationship with the third party service providers associated with your third party accounts is governed solely by your agreement(s) with such third party service providers. We make no effort to review any Social Network Content for any purpose, including but not limited to, for accuracy, legality or non-infringement, and we are not responsible for any Social Network Content.

You acknowledge and agree that we may access your email address book associated with a Third Party Account and your contacts list stored on your mobile device or tablet computer solely for purposes of identifying and informing you of those contacts who have also registered to use the Site. At your email request to cornletservice@gmail.com or through your account settings (if applicable), we will deactivate the connection between the Site and your Third Party Account and attempt to delete any information stored on our servers that was obtained through such Third Party Account, except the username and profile picture that became associated with your account.

4. Content you provide to us

4.1 There may be opportunities for you to post content to the Site or send feedback to us (User Content). You understand and agree that your User Content may be viewed by other users on the Site, and that they may be able to see who has posted that User Content.

4.2 You further agree that we can use your User Content for any other purposes whatsoever in perpetuity without payment to you, and combine your User Content with other content for use within the Site and otherwise. We do not have to attribute your User Content to you.

4.3 In posting User Content, including reviews or making contact with other users of the Site you shall comply with our Acceptable Use Policy https://www.cornlet.com/terms-conditions.

4.4 You warrant that any User Content does comply with our Acceptable Use Policy, and you will be liable to us and indemnify us for any breach of that warranty. This means you will be responsible for any loss or damage we suffer as a result of your breach of this warranty.

4.5 We have the right to remove any User Content you put on the Site if, in our opinion, such User Content does not comply with the Acceptable Use Policy.

4.6 We are not responsible and accept no liability for any User Content including any such content that contains incorrect information or is defamatory or loss of User Content. We accept no obligation to screen, edit or monitor any User Content but we reserve the right to remove, screen and/or edit any User Content without notice and at any time. User Content has not been verified or approved by us and the views expressed by other users on the Site do not represent our views or values

4.7 If you wish to complain about User Content uploaded by other users please contact us at cornletservice@gmail.com or use the take down or report button.

5. Our content

5.1 Unless otherwise indicated, the Site and Services including source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (Our Content) are owned or licensed to us, and are protected by copyright and trade mark laws.

5.2 Except as expressly provided in these Terms and Conditions, no part of the Site, Services or Our Content may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.

5.3 Provided that you are eligible to use the Site, you are granted a limited licence to access and use the Site and Our Content and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use.

5.4 You shall not (a) try to gain unauthorised access to the Site or any networks, servers or computer systems connected to the Site; and/or (b) make for any purpose including error correction, any modifications, adaptions, additions or enhancements to the Site or Our Content, including the modification of the paper or digital copies you may have downloaded.

5.5 We shall (a) prepare the Site and Our Content with reasonable skill and care; and (b) use industry standard virus detection software to try to block the uploading of content to the Site that contains viruses.

5.6 The content on the Site is provided for general information only. It is not intended to amount to advice on which you should rely. You must obtain professional or specialist advice before taking, or refraining from taking, any action on the basis of the content on the Site.

5.7 Although we make reasonable efforts to update the information on our site, we make no representations, warranties or guarantees, whether express or implied, that Our Content on the Site is accurate, complete or up to date.

6. Site Management

6.1 We reserve the right at our sole discretion, to (1) monitor the Site for breaches of these Terms and Conditions; (2) take appropriate legal action against anyone in breach of applicable laws or these Terms and Conditions; (3) refuse, restrict access to or availability of, or disable (to the extent technologically feasible) any of your Contributions; (4) remove from the Site or otherwise disable all files and content that are excessive in size or are in any way a burden to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site and Services.

6.2 We do not guarantee that the Site will be secure or free from bugs or viruses.

6.3 You are responsible for configuring your information technology, computer programs and platform to access the Site and you should use your own virus protection software.

7. Modifications to and availability of the Site

7.1 We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. We also reserve the right to modify or discontinue all or part of the Services without notice at any time.

7.2 We cannot guarantee the Site and Services will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site or Services during any downtime or discontinuance of the Site or Services.We are not obliged to maintain and support the Site or Services or to supply any corrections, updates, or releases.

7.3 There may be information on the Site that contains typographical errors, inaccuracies, or omissions that may relate to the Services, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information at any time, without prior notice.

8. Disclaimer/Limitation of Liability

8.1 The Site and Services are provided on an as-is and as-available basis. You agree that your use of the Site and/or Services will be at your sole risk except as expressly set out in these Terms and Conditions. All warranties, terms, conditions and undertakings, express or implied (including by statute, custom or usage, a course of dealing, or common law) in connection with the Site and Services and your use thereof including, without limitation, the implied warranties of satisfactory quality, fitness for a particular purpose and non-infringement are excluded to the fullest extent permitted by applicable law.

We make no warranties or representations about the accuracy or completeness of the Site’s content and are not liable for any (1) errors or omissions in content: (2) any unauthorized access to or use of our servers and/or any and all personal information and/or financial information stored on our server; (3) any interruption or cessation of transmission to or from the site or services; and/or (4) any bugs, viruses, trojan horses, or the like which may be transmitted to or through the site by any third party. We will not be responsible for any delay or failure to comply with our obligations under these Terms and Conditions if such delay or failure is caused by an event beyond our reasonable control.

8.2 Our responsibility for loss or damage suffered by you:

Whether you are a consumer or a business user:

We do not exclude or limit in any way our liability to you where it would be unlawful to do so. This includes liability for death or personal injury caused by our negligence or the negligence of our employees, agents or subcontractors and for fraud or fraudulent misrepresentation.

If we fail to comply with these Terms and Conditions, we will be responsible for loss or damage you suffer that is a foreseeable result of our breach of these Terms and Conditions, but we would not be responsible for any loss or damage that were not foreseeable at the time you started using the Site/Services.

Notwithstanding anything to the contrary contained in the Disclaimer/Limitation of Liability section, our liability to you for any cause whatsoever and regardless of the form of the action, will at all times be limited to a total aggregate amount equal to the greater of (a) the sum of £0 or (b) the amount paid, if any, by you to us for the Services/Site during the six (6) month period prior to any cause of action arising.

If you are a consumer user:

Please note that we only provide our Site for domestic and private use. You agree not to use our Site for any commercial or business purposes, and we have no liability to you for any loss of profit, loss of business, business interruption, or loss of business opportunity.

If defective digital content that we have supplied, damages a device or digital content belonging to you and this is caused by our failure to use reasonable care and skill, we will either repair the damage or pay you compensation.

You have legal rights in relation to goods that are faulty or not as described. Advice about your legal rights is available from your local Citizens' Advice Bureau or Trading Standards office. Nothing in these Terms and Conditions will affect these legal rights.

9. Term and Termination

9.1 These Terms and Conditions shall remain in full force and effect while you use the Site or Services or are otherwise a user of the Site, as applicable. You may terminate your use or participation at any time, for any reason, by following the instructions for terminating user accounts in your account settings, if available, or by contacting us at cornletservice@gmail.com.

9.2 Without limiting any other provision of these Terms and Conditions, we reserve the right to, in our sole discretion and without notice or liability, deny access to and use of the Site and the Services (including blocking certain IP addresses), to any person for any reason including without limitation for breach of any representation, warranty or covenant contained in these Terms and Conditions or of any applicable law or regulation.

If we determine, in our sole discretion, that your use of the Site/Services is in breach of these Terms and Conditions or of any applicable law or regulation, we may terminate your use or participation in the Site and the Services or delete your profile and any content or information that you posted at any time, without warning, in our sole discretion.

9.3 If we terminate or suspend your account for any reason set out in this Section 9, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.

10. General

10.1 Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing.

You hereby agree to the use of electronic signatures, contracts, orders and other records and to electronic delivery of notices, policies and records of transactions initiated or completed by us or via the Site. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by other than electronic means.

10.2 These Terms and Conditions and any policies or operating rules posted by us on the Site or in respect to the Services constitute the entire agreement and understanding between you and us.

10.3 Our failure to exercise or enforce any right or provision of these Terms and Conditions shall not operate as a waiver of such right or provision.

10.4 We may assign any or all of our rights and obligations to others at any time.

10.5 We shall not be responsible or liable for any loss, damage, delay or failure to act caused by any cause beyond our reasonable control.

10.6 If any provision or part of a provision of these Terms and Conditions is unlawful, void or unenforceable, that provision or part of the provision is deemed severable from these Terms and Conditions and does not affect the validity and enforceability of any remaining provisions.

10.7 There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms and Conditions or use of the Site or Services.

10.8 For consumers only - Please note that these Terms and Conditions, their subject matter and their formation, are governed by English law. You and we both agree that the courts of England and Wales will have exclusive jurisdiction expect that if you are a resident of Northern Ireland you may also bring proceedings in Northern Ireland, and if you are resident of Scotland, you may also bring proceedings in Scotland. If you have any complaint or wish to raise a dispute under these Terms and Conditions or otherwise in relation to the Site please follow this link http://ec.europa.eu/odr

10.9 A person who is not a party to these Terms and Conditions shall have no right under the Contracts (Rights of Third Parties) Act 1999 to enforce any term of these Terms and Conditions.

10.10 In order to resolve a complaint regarding the Services or to receive further information regarding use of the Services, please contact us by email at cornletservice@gmail.com or by post to:

Cornlet Housing
106-1302 Oh-Hyun Ro 56, Gang-buk
Seoul, 01232
South Korea
-
-`; - -const TermsConditions = () => ( -
- - -
- -
-); - -export default TermsConditions; diff --git a/client-cra-legacy/src/redux/reducers/authing.js b/client-cra-legacy/src/redux/reducers/authing.js deleted file mode 100644 index 05cff93..0000000 --- a/client-cra-legacy/src/redux/reducers/authing.js +++ /dev/null @@ -1,10 +0,0 @@ -const authingReducer = (state = false, action) => { - switch (action.type) { - case 'AUTHING_SET': - return action.payload; - default: - return state - } -} - -export default authingReducer; \ No newline at end of file diff --git a/client-cra-legacy/src/redux/reducers/bm.js b/client-cra-legacy/src/redux/reducers/bm.js deleted file mode 100644 index 1c1ca97..0000000 --- a/client-cra-legacy/src/redux/reducers/bm.js +++ /dev/null @@ -1,52 +0,0 @@ -const bmReducer = (state = { notif: false, listings: [] }, action) => { - switch (action.type) { - case 'BM_SET': - return action.payload; - - case 'BM_ADD': - if (!state.listings) { - return { - listings: [action.payload], - notif: true, - } - } - else { - const newListings = [...state.listings]; - newListings.push(action.payload); - return { - ...state, - listings: newListings, - notif: true, - } - } - - case 'BM_REMOVE': - if (!state.listings) { - return state; - } - else { - const newListings = state.listings.filter((listing) => listing._id !== action.payload._id); - return { - ...state, - listings: newListings, - } - } - - case 'BM_NOTIF_TRUE': - return { - ...state, - notif: true, - } - - case 'BM_NOTIF_FALSE': - return { - ...state, - notif: false, - } - - default: - return state - } -} - -export default bmReducer; \ No newline at end of file diff --git a/client-cra-legacy/src/redux/reducers/chatrooms.js b/client-cra-legacy/src/redux/reducers/chatrooms.js deleted file mode 100644 index 1ffb521..0000000 --- a/client-cra-legacy/src/redux/reducers/chatrooms.js +++ /dev/null @@ -1,70 +0,0 @@ -const chatroomsReducer = (state = [], action) => { - switch (action.type) { - case 'CHATROOMS_SET': { - return action.payload; - } - - case 'CHATROOMS_ADD': { - if (state.includes(action.payload)) { - return state; - } - else { - return [action.payload, ...state]; - } - } - - case 'CHATROOMS_REMOVE': { - return state.filter((chatroom) => chatroom._id !== action.payload._id); - } - - case 'CHATROOMS_MSG': { - const { cid } = action.payload; - const cids = state.map((chatroom) => chatroom._id); - const idx = cids.indexOf(cid); - - if (idx >= 0) { - // new chat occured in user's chatroom - const newState = [...state]; - const [chatroom] = newState.splice(idx, 1); - - // set other user to unread - const otherUserUid = chatroom.uids.filter((uid) => uid !== action.payload.uid)[0]; - if (!chatroom.notifUids.includes(otherUserUid)) { - chatroom.notifUids.push(otherUserUid); - } - - // add msg to chatroom - delete action.payload.cid; - chatroom.msgs.push(action.payload); - newState.unshift(chatroom); - - return newState; - } - else { - return state; - } - } - - case 'CHATROOMS_SEEN': { - const { cid, uid } = action.payload; - const targetChatrooms = state.filter((chatroom) => chatroom._id === cid); - if (targetChatrooms.length === 1) { - const chatroom = targetChatrooms[0]; - if (chatroom.notifUids.includes(uid)) { - chatroom.notifUids.splice(chatroom.notifUids.indexOf(uid), 1); - } - const newState = state.filter((chatroom) => chatroom._id !== cid); - newState.unshift(chatroom); - return newState; - } - else { - return state; - } - } - - default: - return state - } -} - -export default chatroomsReducer; \ No newline at end of file diff --git a/client-cra-legacy/src/redux/reducers/index.js b/client-cra-legacy/src/redux/reducers/index.js deleted file mode 100644 index 338b620..0000000 --- a/client-cra-legacy/src/redux/reducers/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import { combineReducers } from 'redux'; -import user from './user'; -import authing from './authing'; -import redirectPath from './redirectPath'; -import bm from './bm'; -import tempValues from './tempValues'; -import chatrooms from './chatrooms'; - -const rootReducer = combineReducers({ - user, - authing, - redirectPath, - bm, - tempValues, - chatrooms, -}) - -export default rootReducer \ No newline at end of file diff --git a/client-cra-legacy/src/redux/reducers/redirectPath.js b/client-cra-legacy/src/redux/reducers/redirectPath.js deleted file mode 100644 index 074b665..0000000 --- a/client-cra-legacy/src/redux/reducers/redirectPath.js +++ /dev/null @@ -1,10 +0,0 @@ -const redirectPathReducer = (state = null, action) => { - switch (action.type) { - case 'REDIRECT_PATH_SET': - return action.payload; - default: - return state - } -} - -export default redirectPathReducer; \ No newline at end of file diff --git a/client-cra-legacy/src/redux/reducers/tempValues.js b/client-cra-legacy/src/redux/reducers/tempValues.js deleted file mode 100644 index 85f8493..0000000 --- a/client-cra-legacy/src/redux/reducers/tempValues.js +++ /dev/null @@ -1,14 +0,0 @@ -const tempValuesReducer = (state = null, action) => { - switch (action.type) { - case 'TEMP_VALUES_SET': - return action.payload; - - case 'TEMP_VALUES_RESET': - return null; - - default: - return state - } -} - -export default tempValuesReducer; \ No newline at end of file diff --git a/client-cra-legacy/src/redux/reducers/user.js b/client-cra-legacy/src/redux/reducers/user.js deleted file mode 100644 index 0955b9a..0000000 --- a/client-cra-legacy/src/redux/reducers/user.js +++ /dev/null @@ -1,69 +0,0 @@ -const userReducer = (state = null, action) => { - switch (action.type) { - case 'USER_SET': - return action.payload - - case 'USER_SET_PROP': - return { - ...state, - ...action.payload, - } - - case 'USER_BM_ADD': - if (!state) return state - - const matches = state.bm.listings.filter((listing) => listing._id === action.payload._id) - if (matches.length > 0) { - // listing already in bm - return state - } else { - // add listing to bm - return { - ...state, - bm: { - ...state.bm, - notif: true, - listings: [...state.bm.listings, action.payload], - }, - } - } - - case 'USER_BM_REMOVE': - if (!state) return state - - const newBmListings = state.bm.listings.filter( - (listing) => listing._id !== action.payload._id - ) - return { - ...state, - bm: { - ...state.bm, - listings: newBmListings, - }, - } - - case 'USER_BM_NOTIF_FALSE': - if (!state) return state - - return { - ...state, - bm: { - ...state.bm, - notif: false, - }, - } - - case 'USER_BAN': - if (!state) return state - - return { - ...state, - isBanned: true, - } - - default: - return state - } -} - -export default userReducer diff --git a/client-cra-legacy/src/redux/store.js b/client-cra-legacy/src/redux/store.js deleted file mode 100644 index 5ad2bf9..0000000 --- a/client-cra-legacy/src/redux/store.js +++ /dev/null @@ -1,21 +0,0 @@ -import { createStore, applyMiddleware } from 'redux'; -import rootReducer from 'src/redux/reducers'; -import logger from 'redux-logger'; -import thunk from 'redux-thunk'; -import { persistReducer } from 'redux-persist'; -import storage from 'redux-persist/lib/storage' // defaults to localStorage for web - -const blacklist = process.env.NODE_ENV === 'development' ? [] : []; - -const persistConfig = { - key: 'root', - storage, - blacklist, -} - -const middleware = process.env.REACT_APP_ENV !== 'production' ? [thunk, logger] : [thunk]; - -const persistedReducer = persistReducer(persistConfig, rootReducer) -const store = createStore(persistedReducer, applyMiddleware(...middleware)); - -export default store; \ No newline at end of file diff --git a/client-cra-legacy/src/serviceWorker.js b/client-cra-legacy/src/serviceWorker.js deleted file mode 100644 index cabff3d..0000000 --- a/client-cra-legacy/src/serviceWorker.js +++ /dev/null @@ -1,135 +0,0 @@ -// This optional code is used to register a service worker. -// register() is not called by default. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on subsequent visits to a page, after all the -// existing tabs open on the page have been closed, since previously cached -// resources are updated in the background. - -// To learn more about the benefits of this model and instructions on how to -// opt-in, read https://bit.ly/CRA-PWA - -const isLocalhost = Boolean( - window.location.hostname === 'localhost' - // [::1] is the IPv6 localhost address. - || window.location.hostname === '[::1]' - // 127.0.0.1/8 is considered localhost for IPv4. - || window.location.hostname.match( - /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/, - ), -); - -export function register(config) { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebook/create-react-app/issues/2374 - return; - } - - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config); - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - 'This web app is being served cache-first by a service ' - + 'worker. To learn more, visit https://bit.ly/CRA-PWA', - ); - }); - } else { - // Is not localhost. Just register service worker - registerValidSW(swUrl, config); - } - }); - } -} - -function registerValidSW(swUrl, config) { - navigator.serviceWorker - .register(swUrl) - .then((registration) => { - registration.onupdatefound = () => { - const installingWorker = registration.installing; - if (installingWorker == null) { - return; - } - installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { - if (navigator.serviceWorker.controller) { - // At this point, the updated precached content has been fetched, - // but the previous service worker will still serve the older - // content until all client tabs are closed. - console.log( - 'New content is available and will be used when all ' - + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.', - ); - - // Execute callback - if (config && config.onUpdate) { - config.onUpdate(registration); - } - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log('Content is cached for offline use.'); - - // Execute callback - if (config && config.onSuccess) { - config.onSuccess(registration); - } - } - } - }; - }; - }) - .catch((error) => { - console.error('Error during service worker registration:', error); - }); -} - -function checkValidServiceWorker(swUrl, config) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl) - .then((response) => { - // Ensure service worker exists, and that we really are getting a JS file. - const contentType = response.headers.get('content-type'); - if ( - response.status === 404 - || (contentType != null && contentType.indexOf('javascript') === -1) - ) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then((registration) => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl, config); - } - }) - .catch(() => { - console.log( - 'No internet connection found. App is running in offline mode.', - ); - }); -} - -export function unregister() { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready.then((registration) => { - registration.unregister(); - }); - } -} diff --git a/client-cra-legacy/src/services/firebase/index.js b/client-cra-legacy/src/services/firebase/index.js deleted file mode 100644 index 7d050e8..0000000 --- a/client-cra-legacy/src/services/firebase/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import * as firebase from "firebase/app"; -import 'firebase/storage'; -import uploadFile from './uploadFile'; - -const firebaseConfig = { - apiKey: "AIzaSyAQ9olIfEWy0ydA0yJU52qfH0paJn9MXIM", - authDomain: "cornlet-prod.firebaseapp.com", - databaseURL: "https://cornlet-prod.firebaseio.com", - projectId: "cornlet-prod", - storageBucket: "cornlet-prod.appspot.com", - messagingSenderId: "88125142899", - appId: "1:88125142899:web:59480abcd4cf2bd7eb7706", - measurementId: "G-045Z67SPL6" -}; - -firebase.initializeApp(firebaseConfig); - -export default firebase; -export { - uploadFile, -} \ No newline at end of file diff --git a/client-cra-legacy/src/services/firebase/uploadFile.js b/client-cra-legacy/src/services/firebase/uploadFile.js deleted file mode 100644 index b935017..0000000 --- a/client-cra-legacy/src/services/firebase/uploadFile.js +++ /dev/null @@ -1,39 +0,0 @@ -import Compressor from 'compressorjs' -import firebase from 'src/services/firebase' - -// REJECT: Upload error -// RESOLVE: Img download url -const uploadFile = (file, directory) => - new Promise((resolve, reject) => { - console.log('file', file) - const storage = firebase.storage() - const storageRef = storage.ref() - const path = `${directory}/${file.name}` - - // compress file - new Compressor(file, { - quality: 0.6, - convertSize: 1, - success(result) { - const uploadTask = storageRef.child(path).put(result) - uploadTask.on( - 'state_changed', - (snapshot) => {}, - (e) => { - reject(e) - }, - () => { - // UPLOAD SUCCESS - uploadTask.snapshot.ref.getDownloadURL().then((src) => { - resolve(src) - }) - } - ) - }, - error(err) { - console.log(err.message) - }, - }) - }) - -export default uploadFile diff --git a/client-cra-legacy/src/theme/Normalise.css b/client-cra-legacy/src/theme/Normalise.css deleted file mode 100644 index 08bccbd..0000000 --- a/client-cra-legacy/src/theme/Normalise.css +++ /dev/null @@ -1,70 +0,0 @@ -/* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) -*/ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -} - -a, a:hover, a:focus { - text-decoration: none; - color: inherit; -} - -input, button { - border:none; -} - -a:focus, a:active, button:active, button:focus { - outline:0; -} - -html { - font-size: 16px; - font-family: 'Roboto', sans-serif; - - @media (min-width: 768px) { - font-size: 16px; - } -} \ No newline at end of file diff --git a/client-cra-legacy/src/theme/colors.js b/client-cra-legacy/src/theme/colors.js deleted file mode 100644 index 832f3b6..0000000 --- a/client-cra-legacy/src/theme/colors.js +++ /dev/null @@ -1,74 +0,0 @@ -const palette = { - grey: { - 50: '#fafafa', - 100: '#f5f5f5', - 200: '#eeeeee', - 300: '#e0e0e0', - 400: '#bdbdbd', - 500: '#9e9e9e', - 600: '#757575', - 700: '#616161', - 800: '#424242', - 900: '#212121', - }, -} - -const theme = { - ...palette, - - // region - collegetown: '#66C088', - collegetownBg: '#E6F5EB', - west: '#0275d8', - westBg: '#D5E8F9', - north: '#F0AD4E', - northBg: '#FDF1E2', - - // state feedback - success: '#66c088', - primary: '#B31B1B', - primaryLight: '#d17676', - blue: '#0275d8', - warning: '#f0ad4e', - warningLight: '#FDF1E2', - danger: '#de6362', - - // text - text: '#3B454E', - textLight: '#575859', - textMuted: '#737576', - textPlaceholder: '#D3D7DB', - - // brand - brand: { - '25': '#FBF2F2', - '50': '#f6e4e4', - '100': '#e8bbbb', - '200': '#d98d8d', - '300': '#ca5f5f', - '400': '#be3d3d', - '500': '#b31b1b', - '600': '#ac1818', - '700': '#a31414', - '800': '#9a1010', - '900': '#8b0808', - }, - brandLight: '#D98D8D', - brandDark: '#5A0E0E', - brandBg: '#F4DFDF', - - brand500: '#B31B1B', - brand300: '#C65454', - brand100: '#D98D8D', - brand100: '#D98D8D', - brand50: '#F9ECEC', - - // border - border: { - default: palette.grey[200], - light: '#E2E2E3', - dark: '#C6C6C7', - }, -} - -export default theme diff --git a/client-cra-legacy/src/theme/dimensions.js b/client-cra-legacy/src/theme/dimensions.js deleted file mode 100644 index bfef488..0000000 --- a/client-cra-legacy/src/theme/dimensions.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - DESKTOP_CONTENT_WIDTH: 1200, - md: 768, - CARD_WIDTH: 300, - medium: '768px', -} \ No newline at end of file diff --git a/client-cra-legacy/src/theme/index.js b/client-cra-legacy/src/theme/index.js deleted file mode 100644 index a575545..0000000 --- a/client-cra-legacy/src/theme/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import colors from './colors'; -import dimensions from './dimensions'; - -export default { - ...colors, - ...dimensions, - shadow: '0 2px 4px rgba(0, 0, 0, .1)' -}; diff --git a/client-cra-legacy/src/util/api.js b/client-cra-legacy/src/util/api.js deleted file mode 100644 index e36b2fb..0000000 --- a/client-cra-legacy/src/util/api.js +++ /dev/null @@ -1,5 +0,0 @@ -import axios from 'axios'; - -export default axios.create({ - baseURL: '/api' -}); diff --git a/client-cra-legacy/src/util/auth/fetchSelfAndStore.js b/client-cra-legacy/src/util/auth/fetchSelfAndStore.js deleted file mode 100644 index e53670e..0000000 --- a/client-cra-legacy/src/util/auth/fetchSelfAndStore.js +++ /dev/null @@ -1,22 +0,0 @@ -import store from 'src/redux/store'; -import axios from 'axios'; -import log from 'src/util/log'; - -const fetchSelfAndStore = (id) => { - return new Promise((resolve, reject) => { - axios.get(`/api/user/${id}`) - .then((res) => { - store.dispatch({ - type: 'USER_SET', - payload: res.data - }) - resolve(res.data); - }) - .catch((e) => { - log('ERROR util auth fetchselfandstore', e); - reject(e); - }) - }) -} - -export default fetchSelfAndStore \ No newline at end of file diff --git a/client-cra-legacy/src/util/auth/logout.js b/client-cra-legacy/src/util/auth/logout.js deleted file mode 100644 index c9d6f10..0000000 --- a/client-cra-legacy/src/util/auth/logout.js +++ /dev/null @@ -1,19 +0,0 @@ -import axios from 'axios'; -import log from 'src/util/log'; -import store from 'src/redux/store'; - -const logout = () => { - axios.post('/api/user/logout') - .then((res) => { - log('logout successful', res); - store.dispatch({ - type: 'USER_SET', - payload: null - }) - }) - .catch((e) => { - log('logout error', e) - }) -} - -export default logout; \ No newline at end of file diff --git a/client-cra-legacy/src/util/helpers/calcDistance.js b/client-cra-legacy/src/util/helpers/calcDistance.js deleted file mode 100644 index 3f2e9e4..0000000 --- a/client-cra-legacy/src/util/helpers/calcDistance.js +++ /dev/null @@ -1,21 +0,0 @@ -const calcDistance = (lat1, lon1, lat2, lon2) => { - var R = 6371 // km - var dLat = toRad(lat2 - lat1) - var dLon = toRad(lon2 - lon1) - var lat1 = toRad(lat1) - var lat2 = toRad(lat2) - - var a = - Math.sin(dLat / 2) * Math.sin(dLat / 2) + - Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2) - var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)) - var d = R * c - return d -} - -// Converts numeric degrees to radians -const toRad = (value) => { - return (value * Math.PI) / 180 -} - -export default calcDistance diff --git a/client-cra-legacy/src/util/helpers/formatDate.js b/client-cra-legacy/src/util/helpers/formatDate.js deleted file mode 100644 index 7a855dd..0000000 --- a/client-cra-legacy/src/util/helpers/formatDate.js +++ /dev/null @@ -1,12 +0,0 @@ -import moment from 'moment' - -const formatDate = (date, isText) => { - const d = new Date(date) - if (isText) { - return moment(d).format('MMM D') - } - const dateString = `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}` - return dateString -} - -export default formatDate diff --git a/client-cra-legacy/src/util/helpers/formatListingDesc.js b/client-cra-legacy/src/util/helpers/formatListingDesc.js deleted file mode 100644 index a5bb3eb..0000000 --- a/client-cra-legacy/src/util/helpers/formatListingDesc.js +++ /dev/null @@ -1,7 +0,0 @@ -const formatListingDesc = (listing) => { - return `${listing.availRooms || '1'} ${listing.availRooms > 1 ? 'rooms' : 'room'} in a ${ - listing.totalRooms || 1 - }-BR ${listing.type.charAt(0).toUpperCase() + listing.type.slice(1)}` -} - -export default formatListingDesc diff --git a/client-cra-legacy/src/util/helpers/getDateDiff.js b/client-cra-legacy/src/util/helpers/getDateDiff.js deleted file mode 100644 index e25e0cc..0000000 --- a/client-cra-legacy/src/util/helpers/getDateDiff.js +++ /dev/null @@ -1,7 +0,0 @@ -const getDateDiff = (future, past) => { - const oneDay = 24 * 60 * 60 * 1000; - - return Math.round(Math.abs((new Date(future) - new Date(past)) / oneDay)); -} - -export default getDateDiff; diff --git a/client-cra-legacy/src/util/helpers/getDateString.js b/client-cra-legacy/src/util/helpers/getDateString.js deleted file mode 100644 index 48d5c27..0000000 --- a/client-cra-legacy/src/util/helpers/getDateString.js +++ /dev/null @@ -1,22 +0,0 @@ -import formatDate from 'src/util/helpers/formatDate' -import getNumericDate from './getNumericDate' - -const getDateString = (listing, options = {}) => { - const { start, end } = listing - const { isNumeric } = options - - if (isNumeric) { - return `${getNumericDate(start)} - ${getNumericDate(end)}` - } - - const startYear = - new Date(start).getFullYear() !== new Date(end).getFullYear() - ? `, ${new Date(start).getFullYear()}` - : '' - return `${formatDate(new Date(start), true)}${startYear} - ${formatDate( - new Date(end), - true - )}, ${new Date(end).getFullYear()}` -} - -export default getDateString diff --git a/client-cra-legacy/src/util/helpers/getFromNowDate.js b/client-cra-legacy/src/util/helpers/getFromNowDate.js deleted file mode 100644 index 83574c8..0000000 --- a/client-cra-legacy/src/util/helpers/getFromNowDate.js +++ /dev/null @@ -1,10 +0,0 @@ -import moment from 'moment' -import formatDate from './formatDate' - -const getFromNowDate = (date) => { - const daysSince = Math.floor((new Date() - new Date(date)) / (1000 * 60 * 60 * 24)) - const dateString = daysSince > 3 ? formatDate(date, true) : moment(new Date(date)).fromNow() - return dateString || '' -} - -export default getFromNowDate diff --git a/client-cra-legacy/src/util/helpers/getNumericDate.js b/client-cra-legacy/src/util/helpers/getNumericDate.js deleted file mode 100644 index 3fb55d1..0000000 --- a/client-cra-legacy/src/util/helpers/getNumericDate.js +++ /dev/null @@ -1,10 +0,0 @@ -const getNumericDate = (dateString) => { - const date = new Date(dateString) - const month = (date.getMonth() + 1).toString() - const day = date.getDate().toString() - const monthString = month.length === 1 ? `0${month}` : month - const dayString = day.length === 1 ? `0${day}` : day - return `${date.getFullYear()}/${monthString}/${dayString}` -} - -export default getNumericDate diff --git a/client-cra-legacy/src/util/helpers/getRegion.js b/client-cra-legacy/src/util/helpers/getRegion.js deleted file mode 100644 index b05cf2e..0000000 --- a/client-cra-legacy/src/util/helpers/getRegion.js +++ /dev/null @@ -1,48 +0,0 @@ -import theme from 'src/theme' -import calcDistance from './calcDistance' - -const regions = { - north: { - lat: 42.451288, - lng: -76.482072, - label: 'North campus', - color: theme.north, - background: theme.northBg, - }, - west: { - lat: 42.447549, - lng: -76.487739, - label: 'West campus', - color: theme.west, - background: theme.westBg, - }, - collegetown: { - lat: 42.443147, - lng: -76.485249, - label: 'Collegetown', - color: theme.collegetown, - background: theme.collegetownBg, - }, -} - -const getRegion = ({ lat, lng }) => { - let minDistance = null - let closestRegion = null - - Object.values(regions).forEach((region) => { - const distanceFromRegion = Math.abs(calcDistance(lat, lng, region.lat, region.lng)) - if (!minDistance) { - minDistance = distanceFromRegion - closestRegion = region - } else { - if (distanceFromRegion < minDistance) { - minDistance = distanceFromRegion - closestRegion = region - } - } - }) - - return closestRegion -} - -export default getRegion diff --git a/client-cra-legacy/src/util/helpers/getShortAddr.js b/client-cra-legacy/src/util/helpers/getShortAddr.js deleted file mode 100644 index 1f55302..0000000 --- a/client-cra-legacy/src/util/helpers/getShortAddr.js +++ /dev/null @@ -1,5 +0,0 @@ -const getShortAddr = (addr) => { - return addr.split(', Ithaca')[0] -} - -export default getShortAddr; \ No newline at end of file diff --git a/client-cra-legacy/src/util/helpers/getShortDateString.js b/client-cra-legacy/src/util/helpers/getShortDateString.js deleted file mode 100644 index cd44551..0000000 --- a/client-cra-legacy/src/util/helpers/getShortDateString.js +++ /dev/null @@ -1,8 +0,0 @@ -import formatDate from 'src/util/helpers/formatDate'; - -const getShortDateString = (listing) => { - const { start, end } = listing; - return `${formatDate(new Date(start), true)} - ${formatDate(new Date(end), true)}`; -} - -export default getShortDateString diff --git a/client-cra-legacy/src/util/helpers/kmToMins.js b/client-cra-legacy/src/util/helpers/kmToMins.js deleted file mode 100644 index 27d9de6..0000000 --- a/client-cra-legacy/src/util/helpers/kmToMins.js +++ /dev/null @@ -1,3 +0,0 @@ -const kmToMins = (km) => km * 20 || 0 - -export default kmToMins diff --git a/client-cra-legacy/src/util/helpers/listingDatestring.js b/client-cra-legacy/src/util/helpers/listingDatestring.js deleted file mode 100644 index 9faf2d2..0000000 --- a/client-cra-legacy/src/util/helpers/listingDatestring.js +++ /dev/null @@ -1,8 +0,0 @@ -import formatDate from './formatDate'; - -const listingDatestring = (listing) => { - if (!listing || !listing.start || !listing.end) return ''; - return formatDate(listing.start) + ' ~ ' + formatDate(listing.end); -} - -export default listingDatestring; \ No newline at end of file diff --git a/client-cra-legacy/src/util/helpers/signin.js b/client-cra-legacy/src/util/helpers/signin.js deleted file mode 100644 index 88a8d4c..0000000 --- a/client-cra-legacy/src/util/helpers/signin.js +++ /dev/null @@ -1,22 +0,0 @@ -import store from 'src/redux/store'; - -const signin = (options) => { - const url = process.env.NODE_ENV === 'development' - ? 'http://localhost:8081/api/auth/google' - : `${process.env.REACT_APP_CLIENT_DOMAIN}/api/auth/google`; - - window.open(url, '_self'); - store.dispatch({ - type: 'AUTHING_SET', - payload: true, - }); - - if (options && options.redirectPath) { - store.dispatch({ - type: 'REDIRECT_PATH_SET', - payload: options.redirectPath, - }) - } -} - -export default signin; diff --git a/client-cra-legacy/src/util/hooks/useChatOtherUser.js b/client-cra-legacy/src/util/hooks/useChatOtherUser.js deleted file mode 100644 index 01d3f6c..0000000 --- a/client-cra-legacy/src/util/hooks/useChatOtherUser.js +++ /dev/null @@ -1,16 +0,0 @@ -import { useSelector } from "react-redux"; - -function useChatOtherUser(chatroom) { - const signedInUser = useSelector((state) => state.user); - if (!chatroom.searcher) { - return chatroom.listing.user; - } - if (chatroom.searcher.uid !== signedInUser.uid) { - return chatroom.searcher; - } - else { - return chatroom.listing.user; - } -} - -export default useChatOtherUser; \ No newline at end of file diff --git a/client-cra-legacy/src/util/hooks/useChatroom.js b/client-cra-legacy/src/util/hooks/useChatroom.js deleted file mode 100644 index 55edea7..0000000 --- a/client-cra-legacy/src/util/hooks/useChatroom.js +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import { useSelector } from 'react-redux'; - -const useChatroom = (cid) => { - const chatrooms = useSelector((state) => state.chatrooms); - const target = chatrooms.filter((chatroom) => chatroom._id === cid); - if (target.length === 0) return null; - else return target[0] -} - -export default useChatroom; \ No newline at end of file diff --git a/client-cra-legacy/src/util/hooks/useFilters.js b/client-cra-legacy/src/util/hooks/useFilters.js deleted file mode 100644 index 955d6b7..0000000 --- a/client-cra-legacy/src/util/hooks/useFilters.js +++ /dev/null @@ -1,58 +0,0 @@ -import getNumericDate from '../helpers/getNumericDate' -import useRouter from './useRouter' - -const useFilters = () => { - const router = useRouter() - const { query, updateQuery } = router - const { minToCampus, maxToCampus, minPrice, maxPrice, start, end } = query - - const filters = [] - - const removeFilters = (removedFilters) => { - const data = {} - removedFilters.forEach((filter) => { - data[filter] = undefined - }) - updateQuery(data) - } - - if (start) { - const filter = { - type: 'date', - text: `Starts ${getNumericDate(start)}`, - cb: () => removeFilters(['start']), - } - filters.push(filter) - } - - if (end) { - const filter = { - type: 'date', - text: `Ends ${getNumericDate(end)}`, - cb: () => removeFilters(['end']), - } - filters.push(filter) - } - - if (minToCampus && maxToCampus) { - const filter = { - type: 'distance', - text: `From campus: ${minToCampus} mins - ${maxToCampus} mins`, - cb: () => removeFilters(['minToCampus', 'maxToCampus']), - } - filters.push(filter) - } - - if (minPrice && maxPrice) { - const filter = { - type: 'price', - text: `Price: $${minPrice} - $${maxPrice}`, - cb: () => removeFilters(['minPrice', 'maxPrice']), - } - filters.push(filter) - } - - return filters -} - -export default useFilters diff --git a/client-cra-legacy/src/util/hooks/useIsDesktop.js b/client-cra-legacy/src/util/hooks/useIsDesktop.js deleted file mode 100644 index d47b0ae..0000000 --- a/client-cra-legacy/src/util/hooks/useIsDesktop.js +++ /dev/null @@ -1,16 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import theme from 'src/theme'; -import useWindowSize from './useWindowSize'; - -function useIsDesktop() { - const [width, height] = useWindowSize(); - const [isDesktop, setIsDesktop] = useState(width >= theme.md); - - useEffect(() => { - setIsDesktop(width >= theme.md); - }, [width]); - - return isDesktop; -} - -export default useIsDesktop; \ No newline at end of file diff --git a/client-cra-legacy/src/util/hooks/useIsMobile.js b/client-cra-legacy/src/util/hooks/useIsMobile.js deleted file mode 100644 index f6e4497..0000000 --- a/client-cra-legacy/src/util/hooks/useIsMobile.js +++ /dev/null @@ -1,16 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import theme from 'src/theme'; -import useWindowSize from './useWindowSize'; - -const useIsMobile = () => { - const [width] = useWindowSize(); - const [isMobile, setIsMobile] = useState(width < theme.md); - - useEffect(() => { - setIsMobile(width < theme.md); - }, [width]); - - return isMobile; -} - -export default useIsMobile; \ No newline at end of file diff --git a/client-cra-legacy/src/util/hooks/useLocalStorage.js b/client-cra-legacy/src/util/hooks/useLocalStorage.js deleted file mode 100644 index 44e5d96..0000000 --- a/client-cra-legacy/src/util/hooks/useLocalStorage.js +++ /dev/null @@ -1,71 +0,0 @@ -import { useState } from 'react'; - -const useLocalStorage = (key, initialValue) => { - - // State to store our value - - // Pass initial state function to useState so logic is only executed once - - const [storedValue, setStoredValue] = useState(() => { - - try { - - // Get from local storage by key - - const item = window.localStorage.getItem(key); - - // Parse stored json or if none return initialValue - - return item ? JSON.parse(item) : initialValue; - - } catch (error) { - - // If error also return initialValue - - - return initialValue; - - } - - }); - - - - // Return a wrapped version of useState's setter function that ... - - // ... persists the new value to localStorage. - - const setValue = value => { - - try { - - // Allow value to be a function so we have same API as useState - - const valueToStore = - - value instanceof Function ? value(storedValue) : value; - - // Save state - - setStoredValue(valueToStore); - - // Save to local storage - - window.localStorage.setItem(key, JSON.stringify(valueToStore)); - - } catch (error) { - - // A more advanced implementation would handle the error case - - - } - - }; - - - - return [storedValue, setValue]; - -} - -export default useLocalStorage; \ No newline at end of file diff --git a/client-cra-legacy/src/util/hooks/useOnOutsideClick.js b/client-cra-legacy/src/util/hooks/useOnOutsideClick.js deleted file mode 100644 index 5c5eef8..0000000 --- a/client-cra-legacy/src/util/hooks/useOnOutsideClick.js +++ /dev/null @@ -1,22 +0,0 @@ -import React, { useEffect } from 'react' - -const useOnOutsideClick = (ref, handler) => { - useEffect(() => { - const handleClickOutside = (event) => { - if (ref.current && !ref.current.contains(event.target)) { - event.stopPropagation() - event.stopImmediatePropagation() - event.preventDefault() - handler() - } - } - - document.addEventListener('mousedown', handleClickOutside) - - return () => { - document.removeEventListener('mousedown', handleClickOutside) - } - }, [ref]) -} - -export default useOnOutsideClick diff --git a/client-cra-legacy/src/util/hooks/useRouter.js b/client-cra-legacy/src/util/hooks/useRouter.js deleted file mode 100644 index 94d4576..0000000 --- a/client-cra-legacy/src/util/hooks/useRouter.js +++ /dev/null @@ -1,41 +0,0 @@ -import { useParams, useLocation, useHistory, useRouteMatch } from 'react-router-dom'; -import { useMemo } from 'react'; -import queryString from 'query-string'; - -export default function useRouter() { - const params = useParams(); - const location = useLocation(); - const history = useHistory(); - const match = useRouteMatch(); - - const query = { - ...queryString.parse(location.search), // Convert string to object - ...params - } - - const setQuery = (newQuery) => { - const queryStr = queryString.stringify(newQuery); - const newPath = `${location.pathname}?${queryStr}`; - history.push(newPath); - } - - const updateQuery = (obj, overwrite = false) => { - const newQuery = Object.assign({}, query, obj); - setQuery(overwrite ? obj : newQuery); - } - - return useMemo(() => { - return { - push: history.push, - replace: history.replace, - pathname: location.pathname, - query, - updateQuery, - match, - location, - history - }; - - }, [params, match, location, history]); - -} diff --git a/client-cra-legacy/src/util/hooks/useScript.js b/client-cra-legacy/src/util/hooks/useScript.js deleted file mode 100644 index bb81e57..0000000 --- a/client-cra-legacy/src/util/hooks/useScript.js +++ /dev/null @@ -1,129 +0,0 @@ -import { useState, useEffect } from 'react'; - -let cachedScripts = []; - -function useScript(src) { - - // Keeping track of script loaded and error state - - const [state, setState] = useState({ - - loaded: false, - - error: false - - }); - - - - useEffect( - - () => { - - // If cachedScripts array already includes src that means another instance ... - - // ... of this hook already loaded this script, so no need to load again. - - if (cachedScripts.includes(src)) { - - setState({ - - loaded: true, - - error: false - - }); - - } else { - - cachedScripts.push(src); - - - - // Create script - - let script = document.createElement('script'); - - script.src = src; - - script.async = true; - - - - // Script event listener callbacks for load and error - - const onScriptLoad = () => { - - setState({ - - loaded: true, - - error: false - - }); - - }; - - - - const onScriptError = () => { - - // Remove from cachedScripts we can try loading again - - const index = cachedScripts.indexOf(src); - - if (index >= 0) cachedScripts.splice(index, 1); - - script.remove(); - - - - setState({ - - loaded: true, - - error: true - - }); - - }; - - - - script.addEventListener('load', onScriptLoad); - - script.addEventListener('error', onScriptError); - - - - // Add script to document body - - document.body.appendChild(script); - - - - // Remove event listeners on cleanup - - return () => { - - script.removeEventListener('load', onScriptLoad); - - script.removeEventListener('error', onScriptError); - - }; - - } - - }, - - [src] // Only re-run effect if script src changes - - ); - - - - return [state.loaded, state.error]; - -} - -export default useScript; \ No newline at end of file diff --git a/client-cra-legacy/src/util/hooks/useUnreadChatrooms.js b/client-cra-legacy/src/util/hooks/useUnreadChatrooms.js deleted file mode 100644 index b96a5a0..0000000 --- a/client-cra-legacy/src/util/hooks/useUnreadChatrooms.js +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import { useSelector } from 'react-redux'; - -const useUnreadChatrooms = () => { - const chatrooms = useSelector((state) => state.chatrooms); - const user = useSelector(state => state.user); - if (!user) return []; - return chatrooms.filter((chatroom) => chatroom.notifUids.includes(user.uid)); -} - -export default useUnreadChatrooms; \ No newline at end of file diff --git a/client-cra-legacy/src/util/hooks/useWindowSize.js b/client-cra-legacy/src/util/hooks/useWindowSize.js deleted file mode 100644 index b621d79..0000000 --- a/client-cra-legacy/src/util/hooks/useWindowSize.js +++ /dev/null @@ -1,16 +0,0 @@ -import React, { useLayoutEffect, useState } from 'react'; - -function useWindowSize() { - const [size, setSize] = useState([window.innerWidth, window.innerHeight]); - useLayoutEffect(() => { - function updateSize() { - setSize([window.innerWidth, window.innerHeight]); - } - window.addEventListener('resize', updateSize); - updateSize(); - return () => window.removeEventListener('resize', updateSize); - }, []); - return size; -} - -export default useWindowSize; \ No newline at end of file diff --git a/client-cra-legacy/src/util/log.js b/client-cra-legacy/src/util/log.js deleted file mode 100644 index 33b9e4f..0000000 --- a/client-cra-legacy/src/util/log.js +++ /dev/null @@ -1,7 +0,0 @@ -const log = (txt, data = null) => { - if (process.env.NODE_ENV === 'development') { - console.log(txt, data); - } -}; - -export default log; diff --git a/client-cra-legacy/src/util/path/getQuery.js b/client-cra-legacy/src/util/path/getQuery.js deleted file mode 100644 index ce57df9..0000000 --- a/client-cra-legacy/src/util/path/getQuery.js +++ /dev/null @@ -1,7 +0,0 @@ -import qs from 'qs'; - -const getQuery = (location) => { - return qs.parse(location.search.split('?')[1]); -} - -export default getQuery; \ No newline at end of file diff --git a/client-cra-legacy/src/util/path/updateQuery.js b/client-cra-legacy/src/util/path/updateQuery.js deleted file mode 100644 index afde06c..0000000 --- a/client-cra-legacy/src/util/path/updateQuery.js +++ /dev/null @@ -1,11 +0,0 @@ -import qs from 'qs'; - -const updateQuery = (query, location, history) => { - const prevQuery = qs.parse(location.search.split('?')[1]); - const newQuery = Object.assign({}, prevQuery, query); - const queryStr = qs.stringify(newQuery); - const newPath = `${location.pathname}?${queryStr}`; - history.push(newPath); -} - -export default updateQuery; \ No newline at end of file diff --git a/client-cra-legacy/src/util/socket.js b/client-cra-legacy/src/util/socket.js deleted file mode 100644 index 61a02af..0000000 --- a/client-cra-legacy/src/util/socket.js +++ /dev/null @@ -1,5 +0,0 @@ -import io from "socket.io-client"; - -const socket = io.connect(process.env.REACT_APP_CLIENT_DOMAIN); - -export default socket; \ No newline at end of file diff --git a/client-cra-legacy/vite.config.js b/client-cra-legacy/vite.config.js deleted file mode 100644 index 0b30a7b..0000000 --- a/client-cra-legacy/vite.config.js +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -export default defineConfig(() => { - return { - build: { - outDir: 'build', - }, - plugins: [react()], - base: '/', - } -}) From 85e1cb03f741bc6b00367514ea4bebaad2d10193 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 20:02:47 -0400 Subject: [PATCH 12/22] replace REACT_APP with VITE --- app.js | 6 +++--- auth/google.js | 6 +++--- routes/authRouter.js | 4 ++-- util/sendEmail.js | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app.js b/app.js index ec50b59..42b02e9 100644 --- a/app.js +++ b/app.js @@ -15,9 +15,9 @@ require('dotenv').config(); // MONGODB const forceProdDB = false; const isProdDb = forceProdDB - || (process.env.NODE_ENV === 'production' && process.env.REACT_APP_DB_PROD); + || (process.env.NODE_ENV === 'production' && process.env.VITE_DB_PROD); const URI = isProdDb - ? process.env.REACT_APP_DB_PROD + ? process.env.VITE_DB_PROD : process.env.DB_URI_DEV; mongoose.connect(URI, { @@ -61,7 +61,7 @@ if (process.env.NODE_ENV === 'production') { // PASSPORT app.use( session({ - secret: process.env.REACT_APP_SESSION_SECRET, + secret: process.env.VITE_SESSION_SECRET, resave: false, saveUninitialized: true, store: new MongoStore({ mongooseConnection: mongoose.connection }), diff --git a/auth/google.js b/auth/google.js index 655d34b..1149200 100644 --- a/auth/google.js +++ b/auth/google.js @@ -6,11 +6,11 @@ const Chatroom = require('../models/Chatroom'); const ROOT_URL = process.env.NODE_ENV === 'development' ? 'http://localhost:8081' - : process.env.REACT_APP_CLIENT_DOMAIN; + : process.env.VITE_CLIENT_DOMAIN; passport.use(new GoogleStrategy({ - clientID: process.env.REACT_APP_CLIENT_ID, - clientSecret: process.env.REACT_APP_CLIENT_SECRET, + clientID: process.env.VITE_CLIENT_ID, + clientSecret: process.env.VITE_CLIENT_SECRET, callbackURL: `${ROOT_URL}/api/auth/google/callback`, }, (async (accessToken, refreshToken, profile, done) => { diff --git a/routes/authRouter.js b/routes/authRouter.js index 6cac406..6861926 100644 --- a/routes/authRouter.js +++ b/routes/authRouter.js @@ -7,8 +7,8 @@ authRouter.get('/google', authRouter.get('/google/callback', passportGoogle.authenticate('google', { - successRedirect: `${process.env.REACT_APP_CLIENT_DOMAIN}/auth/callback`, - failureRedirect: `${process.env.REACT_APP_CLIENT_DOMAIN}/auth/callback`, + successRedirect: `${process.env.VITE_CLIENT_DOMAIN}/auth/callback`, + failureRedirect: `${process.env.VITE_CLIENT_DOMAIN}/auth/callback`, })); authRouter.get('/callback', async (req, res) => { diff --git a/util/sendEmail.js b/util/sendEmail.js index ed5e746..6c27293 100644 --- a/util/sendEmail.js +++ b/util/sendEmail.js @@ -8,7 +8,7 @@ const transporter = nodemailer.createTransport({ service: 'Gmail', auth: { user: 'cornletservice@gmail.com', - pass: process.env.REACT_APP_EMAIL_APP_PWD, + pass: process.env.VITE_EMAIL_APP_PWD, }, }); From 4a78241c39dc097953de9ea4e171f51da955ece2 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 20:35:10 -0400 Subject: [PATCH 13/22] refactor out package with util function --- client/package-lock.json | 6 ------ client/package.json | 1 - .../components/forms/ListingForm/CustomFileUpload.jsx | 7 ++----- client/src/util/helpers/randomString.js | 11 +++++++++++ 4 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 client/src/util/helpers/randomString.js diff --git a/client/package-lock.json b/client/package-lock.json index 82747fa..7ee9b07 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -16,7 +16,6 @@ "compressorjs": "^1.0.6", "firebase": "^7.24.0", "formik": "^2.0.3", - "generate-password": "^1.4.2", "just-debounce-it": "^3.0.1", "react": "^16.10.2", "react-datepicker": "^2.14.0", @@ -4086,11 +4085,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/generate-password": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/generate-password/-/generate-password-1.7.1.tgz", - "integrity": "sha512-9bVYY+16m7W7GczRBDqXE+VVuCX+bWNrfYKC/2p2JkZukFb2sKxT6E3zZ3mJGz7GMe5iRK0A/WawSL3jQfJuNQ==" - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", diff --git a/client/package.json b/client/package.json index f3e886d..24cf3d4 100644 --- a/client/package.json +++ b/client/package.json @@ -18,7 +18,6 @@ "compressorjs": "^1.0.6", "firebase": "^7.24.0", "formik": "^2.0.3", - "generate-password": "^1.4.2", "just-debounce-it": "^3.0.1", "react": "^16.10.2", "react-datepicker": "^2.14.0", diff --git a/client/src/components/forms/ListingForm/CustomFileUpload.jsx b/client/src/components/forms/ListingForm/CustomFileUpload.jsx index 830e857..38d277b 100644 --- a/client/src/components/forms/ListingForm/CustomFileUpload.jsx +++ b/client/src/components/forms/ListingForm/CustomFileUpload.jsx @@ -2,15 +2,12 @@ import React, { useState, useEffect } from 'react' import styled from 'styled-components' import FileUpload from 'src/components/inputs/FileUpload' import ErrMsg from 'src/components/fonts/ErrMsg' -import generator from 'generate-password' import CircleCross from 'src/components/buttons/CircleCross' +import randomString from 'src/util/helpers/randomString' const CustomFileUpload = ({ formik, name, user }) => { const [newSrc, setNewSrc] = useState() - const random = generator.generate({ - length: 16, - numbers: true, - }) + const random = randomString() // add new image to formik useEffect(() => { diff --git a/client/src/util/helpers/randomString.js b/client/src/util/helpers/randomString.js new file mode 100644 index 0000000..e548486 --- /dev/null +++ b/client/src/util/helpers/randomString.js @@ -0,0 +1,11 @@ +function randomString() { + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + let result = ''; + const charactersLength = characters.length; + for (let i = 0; i < 16; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; +} + +export default randomString From 0e84aa15af7c112f31daf38cfaac5fc12f529ecf Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 20:35:32 -0400 Subject: [PATCH 14/22] refactor env var to vite syntax --- client/src/components/core/AppRouteWrapper.jsx | 2 +- client/src/components/forms/ListingForm/Form.jsx | 2 +- client/src/redux/store.js | 4 ++-- client/src/util/helpers/signin.js | 2 +- client/src/util/log.js | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/src/components/core/AppRouteWrapper.jsx b/client/src/components/core/AppRouteWrapper.jsx index d5f2486..75d065c 100644 --- a/client/src/components/core/AppRouteWrapper.jsx +++ b/client/src/components/core/AppRouteWrapper.jsx @@ -35,7 +35,7 @@ const AppRouter = () => { ] if ( - import.meta.env.NODE_ENV === 'production' && + import.meta.env.PROD && user && ((user.email && (bannedEmails.includes(user.email) || user.email.includes('chiayuho'))) || user.isBanned) diff --git a/client/src/components/forms/ListingForm/Form.jsx b/client/src/components/forms/ListingForm/Form.jsx index 7e461b7..8f0caca 100644 --- a/client/src/components/forms/ListingForm/Form.jsx +++ b/client/src/components/forms/ListingForm/Form.jsx @@ -79,7 +79,7 @@ const FormComponent = ({ user, initialValues }) => { const dynInitValues = initialValues || tempValues || - (import.meta.env.NODE_ENV === 'development' && devValues) || + (import.meta.env.DEV && devValues) || defaultValues // error modal diff --git a/client/src/redux/store.js b/client/src/redux/store.js index 4b25481..8eb1228 100644 --- a/client/src/redux/store.js +++ b/client/src/redux/store.js @@ -5,7 +5,7 @@ import thunk from 'redux-thunk'; import { persistReducer } from 'redux-persist'; import storage from 'redux-persist/lib/storage' // defaults to localStorage for web -const blacklist = import.meta.env.NODE_ENV === 'development' ? [] : []; +const blacklist = import.meta.env.DEV ? [] : []; const persistConfig = { key: 'root', @@ -13,7 +13,7 @@ const persistConfig = { blacklist, } -const middleware = import.meta.env.VITE_ENV !== 'production' ? [thunk, logger] : [thunk]; +const middleware = import.meta.env.DEV ? [thunk, logger] : [thunk]; const persistedReducer = persistReducer(persistConfig, rootReducer) const store = createStore(persistedReducer, applyMiddleware(...middleware)); diff --git a/client/src/util/helpers/signin.js b/client/src/util/helpers/signin.js index aeb7a7a..6de27e3 100644 --- a/client/src/util/helpers/signin.js +++ b/client/src/util/helpers/signin.js @@ -1,7 +1,7 @@ import store from 'src/redux/store'; const signin = (options) => { - const url = import.meta.env.NODE_ENV === 'development' + const url = import.meta.env.DEV ? 'http://localhost:8081/api/auth/google' : `${import.meta.env.VITE_CLIENT_DOMAIN}/api/auth/google`; diff --git a/client/src/util/log.js b/client/src/util/log.js index 44a758e..9f5f403 100644 --- a/client/src/util/log.js +++ b/client/src/util/log.js @@ -1,5 +1,5 @@ const log = (txt, data = null) => { - if (import.meta.env.NODE_ENV === 'development') { + if (import.meta.env.DEV) { console.log(txt, data); } }; From d22c4a0a3468f3e97ba5d421109dfd8854124cc7 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 20:40:14 -0400 Subject: [PATCH 15/22] add proxy config for local dev env --- client/vite.config.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/client/vite.config.js b/client/vite.config.js index 080c9d6..7b9c74a 100644 --- a/client/vite.config.js +++ b/client/vite.config.js @@ -10,4 +10,13 @@ export default defineConfig({ src: "/src", }, }, + server: { + proxy: { + '/api': { + target: 'http://localhost:8081', + changeOrigin: true, + secure: false, + }, + }, + }, }) From 6b6c4b4525165063e1f016835f534e4faa1283a7 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Mon, 11 Mar 2024 20:43:18 -0400 Subject: [PATCH 16/22] remove engine config --- package.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/package.json b/package.json index 48a4f14..19695f5 100644 --- a/package.json +++ b/package.json @@ -48,10 +48,6 @@ "throttle-debounce": "^2.1.0", "use-persisted-state": "^0.3.0" }, - "engines": { - "npm": "8.1.0", - "node": "17.0.1" - }, "devDependencies": { "eslint": "^6.7.2", "eslint-config-airbnb-base": "^14.0.0", From 1c81d0da655b47ddf24f28c6cd752da73dd6de16 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Tue, 12 Mar 2024 17:49:35 -0400 Subject: [PATCH 17/22] add dist to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 5ab8629..3327bc4 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,5 @@ node_modules # Yarn Integrity file .yarn-integrity + +dist From b433b2ba73bd614c93db65bcb296cd24c62c665e Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Tue, 12 Mar 2024 17:49:51 -0400 Subject: [PATCH 18/22] add engine definitions back --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index 19695f5..48a4f14 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,10 @@ "throttle-debounce": "^2.1.0", "use-persisted-state": "^0.3.0" }, + "engines": { + "npm": "8.1.0", + "node": "17.0.1" + }, "devDependencies": { "eslint": "^6.7.2", "eslint-config-airbnb-base": "^14.0.0", From e7706de725011180c41e99fb7bd245c3ee36024a Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Tue, 12 Mar 2024 17:55:13 -0400 Subject: [PATCH 19/22] rename prod bundle folder to dist --- app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app.js b/app.js index 42b02e9..8642af5 100644 --- a/app.js +++ b/app.js @@ -117,13 +117,13 @@ if (process.env.NODE_ENV === 'production') { const HALF_HOUR = 1000 * 60 * 30; app.use(express.static(path.join(__dirname))); app.use( - express.static(path.join(__dirname, 'client', 'build'), { + express.static(path.join(__dirname, 'client', 'dist'), { maxAge: HALF_HOUR, }), ); app.get('/*', (req, res) => { - res.sendFile(path.join(__dirname, 'client', 'build', 'index.html')); + res.sendFile(path.join(__dirname, 'client', 'dist', 'index.html')); }); } else { From 229b7e5c4acb93bebad7566e89ea23787768e016 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Tue, 12 Mar 2024 17:55:17 -0400 Subject: [PATCH 20/22] update package lock --- client/package-lock.json | 5481 ++++++++++++-------------------------- 1 file changed, 1631 insertions(+), 3850 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 7ee9b07..1e8c706 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,164 +1,94 @@ { "name": "cornlet-vite", "version": "0.0.0", - "lockfileVersion": 3, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "cornlet-vite", - "version": "0.0.0", - "dependencies": { - "@material-ui/core": "^4.11.0", - "@material-ui/icons": "^4.11.2", - "@material-ui/lab": "^4.0.0-alpha.56", - "axios": "^0.21.2", - "body-scroll-lock": "^3.0.2", - "compressorjs": "^1.0.6", - "firebase": "^7.24.0", - "formik": "^2.0.3", - "just-debounce-it": "^3.0.1", - "react": "^16.10.2", - "react-datepicker": "^2.14.0", - "react-dom": "^16.10.2", - "react-google-maps": "^9.4.5", - "react-perfect-scrollbar": "^1.5.8", - "react-places-autocomplete": "^7.2.1", - "react-redux": "^7.1.1", - "react-router-dom": "^5.1.2", - "react-slick": "^0.25.2", - "recompose": "^0.30.0", - "redux": "^4.0.4", - "redux-logger": "^3.0.6", - "redux-persist": "^6.0.0", - "redux-thunk": "^2.3.0", - "slick-carousel": "^1.8.1", - "socket.io-client": "^2.3.0", - "source-map-explorer": "^2.4.2", - "styled-components": "^4.4.1", - "typescript": "^3.6.4", - "vite-plugin-svgr": "^4.2.0", - "yup": "^0.27.0" - }, - "devDependencies": { - "@vitejs/plugin-react-swc": "^3.5.0", - "eslint": "^8.57.0", - "eslint-plugin-react": "^7.34.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "prettier": "2.4.1", - "vite": "^5.1.6" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { + "dependencies": { + "@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/@ampproject/remapping": { + "@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dependencies": { + "requires": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, - "node_modules/@babel/code-frame": { + "@babel/code-frame": { "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dependencies": { + "requires": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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" + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "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==" + }, + "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==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "node_modules/@babel/compat-data": { + "@babel/compat-data": { "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "engines": { - "node": ">=6.9.0" - } + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==" }, - "node_modules/@babel/core": { + "@babel/core": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", - "dependencies": { + "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", @@ -175,317 +105,230 @@ "json5": "^2.2.3", "semver": "^6.3.1" }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "dependencies": { + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + } } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "node_modules/@babel/generator": { + "@babel/generator": { "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dependencies": { + "requires": { "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { + "@babel/helper-annotate-as-pure": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dependencies": { + "requires": { "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets": { + "@babel/helper-compilation-targets": { "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dependencies": { + "requires": { "@babel/compat-data": "^7.23.5", "@babel/helper-validator-option": "^7.23.5", "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-environment-visitor": { + "@babel/helper-environment-visitor": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" }, - "node_modules/@babel/helper-function-name": { + "@babel/helper-function-name": { "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dependencies": { + "requires": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables": { + "@babel/helper-hoist-variables": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dependencies": { + "requires": { "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports": { + "@babel/helper-module-imports": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dependencies": { + "requires": { "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms": { + "@babel/helper-module-transforms": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dependencies": { + "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-plugin-utils": { + "@babel/helper-plugin-utils": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", - "engines": { - "node": ">=6.9.0" - } + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==" }, - "node_modules/@babel/helper-simple-access": { + "@babel/helper-simple-access": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dependencies": { + "requires": { "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration": { + "@babel/helper-split-export-declaration": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dependencies": { + "requires": { "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/helper-string-parser": { + "@babel/helper-string-parser": { "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "engines": { - "node": ">=6.9.0" - } + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" }, - "node_modules/@babel/helper-validator-identifier": { + "@babel/helper-validator-identifier": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "engines": { - "node": ">=6.9.0" - } + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, - "node_modules/@babel/helper-validator-option": { + "@babel/helper-validator-option": { "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "engines": { - "node": ">=6.9.0" - } + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==" }, - "node_modules/@babel/helpers": { + "@babel/helpers": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", - "dependencies": { + "requires": { "@babel/template": "^7.24.0", "@babel/traverse": "^7.24.0", "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { + "@babel/highlight": { "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dependencies": { + "requires": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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" + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "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==" + }, + "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==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "node_modules/@babel/parser": { + "@babel/parser": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==" }, - "node_modules/@babel/plugin-syntax-jsx": { + "@babel/plugin-syntax-jsx": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "dependencies": { + "requires": { "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { + "@babel/runtime": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", - "dependencies": { + "requires": { "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/template": { + "@babel/template": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", - "dependencies": { + "requires": { "@babel/code-frame": "^7.23.5", "@babel/parser": "^7.24.0", "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { + "@babel/traverse": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", - "dependencies": { + "requires": { "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", @@ -497,429 +340,229 @@ "debug": "^4.3.1", "globals": "^11.1.0" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } } }, - "node_modules/@babel/types": { + "@babel/types": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", - "dependencies": { + "requires": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@emotion/hash": { + "@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, - "node_modules/@emotion/is-prop-valid": { + "@emotion/is-prop-valid": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "dependencies": { + "requires": { "@emotion/memoize": "0.7.4" } }, - "node_modules/@emotion/memoize": { + "@emotion/memoize": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" }, - "node_modules/@emotion/unitless": { + "@emotion/unitless": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, - "node_modules/@esbuild/aix-ppc64": { + "@esbuild/aix-ppc64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { + "dev": true, + "optional": true + }, + "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, - "dependencies": { + "requires": { "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@eslint-community/regexpp": { + "@eslint-community/regexpp": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } + "dev": true }, - "node_modules/@eslint/eslintrc": { + "@eslint/eslintrc": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, - "dependencies": { + "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.6.0", @@ -929,55 +572,37 @@ "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/js": { + "@eslint/js": { "version": "8.57.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } + "dev": true }, - "node_modules/@firebase/analytics": { + "@firebase/analytics": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.0.tgz", "integrity": "sha512-6qYEOPUVYrMhqvJ46Z5Uf1S4uULd6d7vGpMP5Qz+u8kIWuOQGcPdJKQap+Hla6Rq164or9gC2HRXuYXKlgWfpw==", - "dependencies": { + "requires": { "@firebase/analytics-types": "0.4.0", "@firebase/component": "0.1.19", "@firebase/installations": "0.4.17", "@firebase/logger": "0.2.6", "@firebase/util": "0.3.2", "tslib": "^1.11.1" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" } }, - "node_modules/@firebase/analytics-types": { + "@firebase/analytics-types": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.4.0.tgz", "integrity": "sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA==" }, - "node_modules/@firebase/analytics/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/@firebase/app": { + "@firebase/app": { "version": "0.6.11", "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.11.tgz", "integrity": "sha512-FH++PaoyTzfTAVuJ0gITNYEIcjT5G+D0671La27MU8Vvr6MTko+5YUZ4xS9QItyotSeRF4rMJ1KR7G8LSyySiA==", - "dependencies": { + "requires": { "@firebase/app-types": "0.6.1", "@firebase/component": "0.1.19", "@firebase/logger": "0.2.6", @@ -987,64 +612,43 @@ "xmlhttprequest": "1.8.0" } }, - "node_modules/@firebase/app-types": { + "@firebase/app-types": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.1.tgz", "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==" }, - "node_modules/@firebase/app/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/@firebase/auth": { + "@firebase/auth": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.15.0.tgz", "integrity": "sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ==", - "dependencies": { + "requires": { "@firebase/auth-types": "0.10.1" - }, - "peerDependencies": { - "@firebase/app": "0.x" } }, - "node_modules/@firebase/auth-interop-types": { + "@firebase/auth-interop-types": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz", - "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "0.x" - } + "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==" }, - "node_modules/@firebase/auth-types": { + "@firebase/auth-types": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz", - "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "0.x" - } + "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==" }, - "node_modules/@firebase/component": { + "@firebase/component": { "version": "0.1.19", "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.19.tgz", "integrity": "sha512-L0S3g8eqaerg8y0zox3oOHSTwn/FE8RbcRHiurnbESvDViZtP5S5WnhuAPd7FnFxa8ElWK0z1Tr3ikzWDv1xdQ==", - "dependencies": { + "requires": { "@firebase/util": "0.3.2", "tslib": "^1.11.1" } }, - "node_modules/@firebase/component/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/@firebase/database": { + "@firebase/database": { "version": "0.6.13", "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.13.tgz", "integrity": "sha512-NommVkAPzU7CKd1gyehmi3lz0K78q0KOfiex7Nfy7MBMwknLm7oNqKovXSgQV1PCLvKXvvAplDSFhDhzIf9obA==", - "dependencies": { + "requires": { "@firebase/auth-interop-types": "0.1.5", "@firebase/component": "0.1.19", "@firebase/database-types": "0.5.2", @@ -1054,24 +658,19 @@ "tslib": "^1.11.1" } }, - "node_modules/@firebase/database-types": { + "@firebase/database-types": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.5.2.tgz", "integrity": "sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g==", - "dependencies": { + "requires": { "@firebase/app-types": "0.6.1" } }, - "node_modules/@firebase/database/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/@firebase/firestore": { + "@firebase/firestore": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.18.0.tgz", "integrity": "sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw==", - "dependencies": { + "requires": { "@firebase/component": "0.1.19", "@firebase/firestore-types": "1.14.0", "@firebase/logger": "0.2.6", @@ -1081,480 +680,279 @@ "@grpc/proto-loader": "^0.5.0", "node-fetch": "2.6.1", "tslib": "^1.11.1" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" } }, - "node_modules/@firebase/firestore-types": { + "@firebase/firestore-types": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.14.0.tgz", - "integrity": "sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw==", - "peerDependencies": { - "@firebase/app-types": "0.x" - } - }, - "node_modules/@firebase/firestore/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "engines": { - "node": "4.x || >=6.0.0" - } + "integrity": "sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw==" }, - "node_modules/@firebase/firestore/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/@firebase/functions": { + "@firebase/functions": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.5.1.tgz", "integrity": "sha512-yyjPZXXvzFPjkGRSqFVS5Hc2Y7Y48GyyMH+M3i7hLGe69r/59w6wzgXKqTiSYmyE1pxfjxU4a1YqBDHNkQkrYQ==", - "dependencies": { + "requires": { "@firebase/component": "0.1.19", "@firebase/functions-types": "0.3.17", "@firebase/messaging-types": "0.5.0", "node-fetch": "2.6.1", "tslib": "^1.11.1" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" } }, - "node_modules/@firebase/functions-types": { + "@firebase/functions-types": { "version": "0.3.17", "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.17.tgz", "integrity": "sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ==" }, - "node_modules/@firebase/functions/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/@firebase/functions/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/@firebase/installations": { + "@firebase/installations": { "version": "0.4.17", "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.17.tgz", "integrity": "sha512-AE/TyzIpwkC4UayRJD419xTqZkKzxwk0FLht3Dci8WI2OEKHSwoZG9xv4hOBZebe+fDzoV2EzfatQY8c/6Avig==", - "dependencies": { + "requires": { "@firebase/component": "0.1.19", "@firebase/installations-types": "0.3.4", "@firebase/util": "0.3.2", "idb": "3.0.2", "tslib": "^1.11.1" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" } }, - "node_modules/@firebase/installations-types": { + "@firebase/installations-types": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz", - "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==", - "peerDependencies": { - "@firebase/app-types": "0.x" - } - }, - "node_modules/@firebase/installations/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==" }, - "node_modules/@firebase/logger": { + "@firebase/logger": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz", "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==" }, - "node_modules/@firebase/messaging": { + "@firebase/messaging": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.1.tgz", "integrity": "sha512-iev/ST9v0xd/8YpGYrZtDcqdD9J6ZWzSuceRn8EKy5vIgQvW/rk2eTQc8axzvDpQ36ZfphMYuhW6XuNrR3Pd2Q==", - "dependencies": { + "requires": { "@firebase/component": "0.1.19", "@firebase/installations": "0.4.17", "@firebase/messaging-types": "0.5.0", "@firebase/util": "0.3.2", "idb": "3.0.2", "tslib": "^1.11.1" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" } }, - "node_modules/@firebase/messaging-types": { + "@firebase/messaging-types": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz", - "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==", - "peerDependencies": { - "@firebase/app-types": "0.x" - } + "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==" }, - "node_modules/@firebase/messaging/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/@firebase/performance": { + "@firebase/performance": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.2.tgz", "integrity": "sha512-irHTCVWJ/sxJo0QHg+yQifBeVu8ZJPihiTqYzBUz/0AGc51YSt49FZwqSfknvCN2+OfHaazz/ARVBn87g7Ex8g==", - "dependencies": { + "requires": { "@firebase/component": "0.1.19", "@firebase/installations": "0.4.17", "@firebase/logger": "0.2.6", "@firebase/performance-types": "0.0.13", "@firebase/util": "0.3.2", "tslib": "^1.11.1" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" } }, - "node_modules/@firebase/performance-types": { + "@firebase/performance-types": { "version": "0.0.13", "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz", "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==" }, - "node_modules/@firebase/performance/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/@firebase/polyfill": { + "@firebase/polyfill": { "version": "0.3.36", "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz", "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==", - "dependencies": { + "requires": { "core-js": "3.6.5", "promise-polyfill": "8.1.3", "whatwg-fetch": "2.0.4" } }, - "node_modules/@firebase/polyfill/node_modules/core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/@firebase/polyfill/node_modules/whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - }, - "node_modules/@firebase/remote-config": { + "@firebase/remote-config": { "version": "0.1.28", "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.28.tgz", "integrity": "sha512-4zSdyxpt94jAnFhO8toNjG8oMKBD+xTuBIcK+Nw8BdQWeJhEamgXlupdBARUk1uf3AvYICngHH32+Si/dMVTbw==", - "dependencies": { + "requires": { "@firebase/component": "0.1.19", "@firebase/installations": "0.4.17", "@firebase/logger": "0.2.6", "@firebase/remote-config-types": "0.1.9", "@firebase/util": "0.3.2", "tslib": "^1.11.1" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" } }, - "node_modules/@firebase/remote-config-types": { + "@firebase/remote-config-types": { "version": "0.1.9", "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz", "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==" }, - "node_modules/@firebase/remote-config/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/@firebase/storage": { + "@firebase/storage": { "version": "0.3.43", "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.43.tgz", "integrity": "sha512-Jp54jcuyimLxPhZHFVAhNbQmgTu3Sda7vXjXrNpPEhlvvMSq4yuZBR6RrZxe/OrNVprLHh/6lTCjwjOVSo3bWA==", - "dependencies": { + "requires": { "@firebase/component": "0.1.19", "@firebase/storage-types": "0.3.13", "@firebase/util": "0.3.2", "tslib": "^1.11.1" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" } }, - "node_modules/@firebase/storage-types": { + "@firebase/storage-types": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz", - "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "0.x" - } + "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==" }, - "node_modules/@firebase/storage/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/@firebase/util": { + "@firebase/util": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.2.tgz", "integrity": "sha512-Dqs00++c8rwKky6KCKLLY2T1qYO4Q+X5t+lF7DInXDNF4ae1Oau35bkD+OpJ9u7l1pEv7KHowP6CUKuySCOc8g==", - "dependencies": { + "requires": { "tslib": "^1.11.1" } }, - "node_modules/@firebase/util/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/@firebase/webchannel-wrapper": { + "@firebase/webchannel-wrapper": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz", "integrity": "sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ==" }, - "node_modules/@grpc/grpc-js": { + "@grpc/grpc-js": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.2.tgz", "integrity": "sha512-lSbgu8iayAod8O0YcoXK3+bMFGThY2svtN35Zlm9VepsB3jfyIcoupKknEht7Kh9Q8ITjsp0J4KpYo9l4+FhNg==", - "dependencies": { + "requires": { "@grpc/proto-loader": "^0.7.10", "@js-sdsl/ordered-map": "^4.4.2" }, - "engines": { - "node": ">=12.10.0" - } - }, - "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", - "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.4", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@grpc/grpc-js/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@grpc/grpc-js/node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "node_modules/@grpc/grpc-js/node_modules/protobufjs": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", - "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", - "hasInstallScript": true, "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@grpc/grpc-js/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@grpc/grpc-js/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" + "@grpc/proto-loader": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", + "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", + "requires": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.4", + "yargs": "^17.7.2" + } + } } }, - "node_modules/@grpc/proto-loader": { + "@grpc/proto-loader": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.6.tgz", "integrity": "sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ==", - "dependencies": { + "requires": { "lodash.camelcase": "^4.3.0", "protobufjs": "^6.8.6" }, - "engines": { - "node": ">=6" + "dependencies": { + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + } } }, - "node_modules/@humanwhocodes/config-array": { + "@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, - "dependencies": { + "requires": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/module-importer": { + "@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } + "dev": true }, - "node_modules/@humanwhocodes/object-schema": { + "@humanwhocodes/object-schema": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, - "node_modules/@hypnosphi/create-react-context": { + "@hypnosphi/create-react-context": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", - "dependencies": { + "requires": { "gud": "^1.0.0", "warning": "^4.0.3" - }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": ">=0.14.0" } }, - "node_modules/@hypnosphi/create-react-context/node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { + "@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dependencies": { + "requires": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { + "@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "engines": { - "node": ">=6.0.0" - } + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" }, - "node_modules/@jridgewell/set-array": { + "@jridgewell/set-array": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "engines": { - "node": ">=6.0.0" - } + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" }, - "node_modules/@jridgewell/sourcemap-codec": { + "@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, - "node_modules/@jridgewell/trace-mapping": { + "@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dependencies": { + "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@js-sdsl/ordered-map": { + "@js-sdsl/ordered-map": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==" }, - "node_modules/@material-ui/core": { + "@material-ui/core": { "version": "4.12.4", "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", - "dependencies": { + "requires": { "@babel/runtime": "^7.4.4", "@material-ui/styles": "^4.11.5", "@material-ui/system": "^4.12.2", @@ -1567,80 +965,33 @@ "prop-types": "^15.7.2", "react-is": "^16.8.0 || ^17.0.0", "react-transition-group": "^4.4.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" - }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } } }, - "node_modules/@material-ui/icons": { + "@material-ui/icons": { "version": "4.11.3", "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz", "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==", - "dependencies": { + "requires": { "@babel/runtime": "^7.4.4" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "@material-ui/core": "^4.0.0", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } } }, - "node_modules/@material-ui/lab": { + "@material-ui/lab": { "version": "4.0.0-alpha.61", "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz", "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", - "dependencies": { + "requires": { "@babel/runtime": "^7.4.4", "@material-ui/utils": "^4.11.3", "clsx": "^1.0.4", "prop-types": "^15.7.2", "react-is": "^16.8.0 || ^17.0.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "@material-ui/core": "^4.12.1", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } } }, - "node_modules/@material-ui/styles": { + "@material-ui/styles": { "version": "4.11.5", "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", - "dependencies": { + "requires": { "@babel/runtime": "^7.4.4", "@emotion/hash": "^0.8.0", "@material-ui/types": "5.1.0", @@ -1657,474 +1008,260 @@ "jss-plugin-rule-value-function": "^10.5.1", "jss-plugin-vendor-prefixer": "^10.5.1", "prop-types": "^15.7.2" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" - }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } } }, - "node_modules/@material-ui/system": { + "@material-ui/system": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", - "dependencies": { + "requires": { "@babel/runtime": "^7.4.4", "@material-ui/utils": "^4.11.3", "csstype": "^2.5.2", "prop-types": "^15.7.2" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" - }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } } }, - "node_modules/@material-ui/types": { + "@material-ui/types": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", - "peerDependencies": { - "@types/react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } + "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" }, - "node_modules/@material-ui/utils": { + "@material-ui/utils": { "version": "4.11.3", "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", - "dependencies": { + "requires": { "@babel/runtime": "^7.4.4", "prop-types": "^15.7.2", "react-is": "^16.8.0 || ^17.0.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@nodelib/fs.scandir": { + "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "dependencies": { + "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/@nodelib/fs.stat": { + "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } + "dev": true }, - "node_modules/@nodelib/fs.walk": { + "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "dependencies": { + "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/@protobufjs/aspromise": { + "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, - "node_modules/@protobufjs/base64": { + "@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" }, - "node_modules/@protobufjs/codegen": { + "@protobufjs/codegen": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" }, - "node_modules/@protobufjs/eventemitter": { + "@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, - "node_modules/@protobufjs/fetch": { + "@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { + "requires": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/@protobufjs/float": { + "@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, - "node_modules/@protobufjs/inquire": { + "@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, - "node_modules/@protobufjs/path": { + "@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, - "node_modules/@protobufjs/pool": { + "@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, - "node_modules/@protobufjs/utf8": { + "@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, - "node_modules/@rollup/pluginutils": { + "@rollup/pluginutils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", - "dependencies": { + "requires": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz", - "integrity": "sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.1.tgz", - "integrity": "sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.1.tgz", - "integrity": "sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.1.tgz", - "integrity": "sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.1.tgz", - "integrity": "sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.1.tgz", - "integrity": "sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.1.tgz", - "integrity": "sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.1.tgz", - "integrity": "sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.1.tgz", - "integrity": "sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.1.tgz", - "integrity": "sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.1.tgz", - "integrity": "sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.1.tgz", - "integrity": "sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.1.tgz", - "integrity": "sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "@rollup/rollup-android-arm-eabi": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", + "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", + "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", + "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", + "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", + "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", + "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", + "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", + "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", + "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", + "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", + "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", + "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", + "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", + "dev": true, + "optional": true + }, + "@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==" }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "@svgr/babel-plugin-remove-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==" }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "@svgr/babel-plugin-remove-jsx-empty-expression": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", - "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==" }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "@svgr/babel-plugin-replace-jsx-attribute-value": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", - "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==" }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "@svgr/babel-plugin-svg-dynamic-title": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", - "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==" }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "@svgr/babel-plugin-svg-em-dimensions": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", - "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==" }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "@svgr/babel-plugin-transform-react-native-svg": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", - "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==" }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { + "@svgr/babel-plugin-transform-svg-component": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", - "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", - "engines": { - "node": ">=12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==" }, - "node_modules/@svgr/babel-preset": { + "@svgr/babel-preset": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", - "dependencies": { + "requires": { "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", @@ -2133,131 +1270,46 @@ "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", "@svgr/babel-plugin-transform-svg-component": "8.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@svgr/core": { + "@svgr/core": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", - "dependencies": { + "requires": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", "camelcase": "^6.2.0", "cosmiconfig": "^8.1.3", "snake-case": "^3.0.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/core/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@svgr/core/node_modules/typescript": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", - "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", - "optional": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" } }, - "node_modules/@svgr/hast-util-to-babel-ast": { + "@svgr/hast-util-to-babel-ast": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", - "dependencies": { + "requires": { "@babel/types": "^7.21.3", "entities": "^4.4.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@svgr/plugin-jsx": { + "@svgr/plugin-jsx": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", - "dependencies": { + "requires": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", "@svgr/hast-util-to-babel-ast": "8.0.0", "svg-parser": "^2.0.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" } }, - "node_modules/@swc/core": { + "@swc/core": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.6.tgz", "integrity": "sha512-A7iK9+1qzTCIuc3IYcS8gPHCm9bZVKUJrfNnwveZYyo6OFp3jLno4WOM2yBy5uqedgYATEiWgBYHKq37KrU6IA==", "dev": true, - "hasInstallScript": true, - "dependencies": { - "@swc/counter": "^0.1.2", - "@swc/types": "^0.1.5" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { + "requires": { "@swc/core-darwin-arm64": "1.4.6", "@swc/core-darwin-x64": "1.4.6", "@swc/core-linux-arm-gnueabihf": "1.4.6", @@ -2267,486 +1319,306 @@ "@swc/core-linux-x64-musl": "1.4.6", "@swc/core-win32-arm64-msvc": "1.4.6", "@swc/core-win32-ia32-msvc": "1.4.6", - "@swc/core-win32-x64-msvc": "1.4.6" - }, - "peerDependencies": { - "@swc/helpers": "^0.5.0" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } + "@swc/core-win32-x64-msvc": "1.4.6", + "@swc/counter": "^0.1.2", + "@swc/types": "^0.1.5" } }, - "node_modules/@swc/core-darwin-arm64": { + "@swc/core-darwin-arm64": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.6.tgz", "integrity": "sha512-bpggpx/BfLFyy48aUKq1PsNUxb7J6CINlpAUk0V4yXfmGnpZH80Gp1pM3GkFDQyCfq7L7IpjPrIjWQwCrL4hYw==", - "cpu": [ - "arm64" - ], "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/@swc/core-darwin-x64": { + "@swc/core-darwin-x64": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.6.tgz", "integrity": "sha512-vJn+/ZuBTg+vtNkcmgZdH6FQpa0hFVdnB9bAeqYwKkyqP15zaPe6jfC+qL2y/cIeC7ASvHXEKrnCZgBLxfVQ9w==", - "cpu": [ - "x64" - ], "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/@swc/core-linux-arm-gnueabihf": { + "@swc/core-linux-arm-gnueabihf": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.6.tgz", "integrity": "sha512-hEmYcB/9XBAl02MtuVHszhNjQpjBzhk/NFulnU33tBMbNZpy2TN5yTsitezMq090QXdDz8sKIALApDyg07ZR8g==", - "cpu": [ - "arm" - ], "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/@swc/core-linux-arm64-gnu": { + "@swc/core-linux-arm64-gnu": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.6.tgz", "integrity": "sha512-/UCYIVoGpm2YVvGHZM2QOA3dexa28BjcpLAIYnoCbgH5f7ulDhE8FAIO/9pasj+kixDBsdqewHfsNXFYlgGJjQ==", - "cpu": [ - "arm64" - ], "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/@swc/core-linux-arm64-musl": { + "@swc/core-linux-arm64-musl": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.6.tgz", "integrity": "sha512-LGQsKJ8MA9zZ8xHCkbGkcPSmpkZL2O7drvwsGKynyCttHhpwVjj9lguhD4DWU3+FWIsjvho5Vu0Ggei8OYi/Lw==", - "cpu": [ - "arm64" - ], "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/@swc/core-linux-x64-gnu": { + "@swc/core-linux-x64-gnu": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.6.tgz", "integrity": "sha512-10JL2nLIreMQDKvq2TECnQe5fCuoqBHu1yW8aChqgHUyg9d7gfZX/kppUsuimqcgRBnS0AjTDAA+JF6UsG/2Yg==", - "cpu": [ - "x64" - ], "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/@swc/core-linux-x64-musl": { + "@swc/core-linux-x64-musl": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.6.tgz", "integrity": "sha512-EGyjFVzVY6Do89x8sfah7I3cuP4MwtwzmA6OlfD/KASqfCFf5eIaEBMbajgR41bVfMV7lK72lwAIea5xEyq1AQ==", - "cpu": [ - "x64" - ], "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/@swc/core-win32-arm64-msvc": { + "@swc/core-win32-arm64-msvc": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.6.tgz", "integrity": "sha512-gfW9AuXvwSyK07Vb8Y8E9m2oJZk21WqcD+X4BZhkbKB0TCZK0zk1j/HpS2UFlr1JB2zPKPpSWLU3ll0GEHRG2A==", - "cpu": [ - "arm64" - ], "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/@swc/core-win32-ia32-msvc": { + "@swc/core-win32-ia32-msvc": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.6.tgz", "integrity": "sha512-ZuQm81FhhvNVYtVb9GfZ+Du6e7fZlkisWvuCeBeRiyseNt1tcrQ8J3V67jD2nxje8CVXrwG3oUIbPcybv2rxfQ==", - "cpu": [ - "ia32" - ], "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/@swc/core-win32-x64-msvc": { + "@swc/core-win32-x64-msvc": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.6.tgz", "integrity": "sha512-UagPb7w5V0uzWSjrXwOavGa7s9iv3wrVdEgWy+/inm0OwY4lj3zpK9qDnMWAwYLuFwkI3UG4Q3dH8wD+CUUcjw==", - "cpu": [ - "x64" - ], "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/@swc/counter": { + "@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "dev": true }, - "node_modules/@swc/types": { + "@swc/types": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", "dev": true }, - "node_modules/@types/estree": { + "@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, - "node_modules/@types/google-maps": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@types/google-maps/-/google-maps-3.2.6.tgz", - "integrity": "sha512-ySOadZErcnCnNG+Zkmv5n+QG9DyTt7Mkx5Yk1dTjjNPtD8ByFaf+klZ/CxzgYcweduWEijTP0ASkANl57D0PRQ==", - "peer": true, - "dependencies": { - "@types/google.maps": "*" - } - }, - "node_modules/@types/google.maps": { - "version": "3.55.4", - "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.55.4.tgz", - "integrity": "sha512-Ip3IfRs3RZjeC88V8FGnWQTQXeS5gkJedPSosN6DMi9Xs8buGTpsPq6UhREoZsGH+62VoQ6jiRBUR8R77If69w==", - "peer": true - }, - "node_modules/@types/googlemaps": { - "version": "3.43.3", - "resolved": "https://registry.npmjs.org/@types/googlemaps/-/googlemaps-3.43.3.tgz", - "integrity": "sha512-ZWNoz/O8MPEpiajvj7QiqCY8tTLFNqNZ/a+s+zTV58wFVNAvvqV4bdGfnsjTb5Cs4V6wEsLrX8XRhmnyYJ2Tdg==", - "deprecated": "Types for the Google Maps browser API have moved to @types/google.maps. Note: these types are not for the googlemaps npm package, which is a Node API.", - "peer": true - }, - "node_modules/@types/hoist-non-react-statics": { + "@types/hoist-non-react-statics": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", - "dependencies": { + "requires": { "@types/react": "*", "hoist-non-react-statics": "^3.3.0" } }, - "node_modules/@types/long": { + "@types/long": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, - "node_modules/@types/markerclustererplus": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/@types/markerclustererplus/-/markerclustererplus-2.1.33.tgz", - "integrity": "sha512-ZDxsLUp8BmK9MVZZeQVDDzVrEXgRL0021AQcfXqfreFhdfZ9+PS0P6o4nZBvoIVYTmGSBemdCdI6mL6hf9yWvg==", - "peer": true, - "dependencies": { - "@types/google-maps": "*" - } - }, - "node_modules/@types/node": { + "@types/node": { "version": "20.11.26", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.26.tgz", "integrity": "sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==", - "dependencies": { + "requires": { "undici-types": "~5.26.4" } }, - "node_modules/@types/prop-types": { + "@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, - "node_modules/@types/react": { - "version": "16.14.57", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.57.tgz", - "integrity": "sha512-fuNq/GV1a6GgqSuVuC457vYeTbm4E1CUBQVZwSPxqYnRhIzSXCJ1gGqyv+PKhqLyfbKCga9dXHJDzv+4XE41fw==", - "dependencies": { + "@types/react": { + "version": "18.2.65", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.65.tgz", + "integrity": "sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==", + "requires": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + } } }, - "node_modules/@types/react-redux": { + "@types/react-redux": { "version": "7.1.33", "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", - "dependencies": { + "requires": { "@types/hoist-non-react-statics": "^3.3.0", "@types/react": "*", "hoist-non-react-statics": "^3.3.0", "redux": "^4.0.0" } }, - "node_modules/@types/react-transition-group": { + "@types/react-transition-group": { "version": "4.4.10", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", - "dependencies": { + "requires": { "@types/react": "*" } }, - "node_modules/@types/react/node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/@types/scheduler": { + "@types/scheduler": { "version": "0.16.8", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, - "node_modules/@ungap/structured-clone": { + "@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, - "node_modules/@vitejs/plugin-react-swc": { + "@vitejs/plugin-react-swc": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", "integrity": "sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==", "dev": true, - "dependencies": { + "requires": { "@swc/core": "^1.3.107" - }, - "peerDependencies": { - "vite": "^4 || ^5" } }, - "node_modules/acorn": { + "acorn": { "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } + "dev": true }, - "node_modules/acorn-jsx": { + "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } + "dev": true }, - "node_modules/after": { + "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" }, - "node_modules/ajv": { + "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "dependencies": { + "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { + "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, - "node_modules/ansi-styles": { + "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { + "requires": { "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/argparse": { + "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "node_modules/array-buffer-byte-length": { + "array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-includes": { + "array-includes": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.findlast": { + "array.prototype.findlast": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.4.tgz", "integrity": "sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", "es-abstract": "^1.22.3", "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.flat": { + "array.prototype.flat": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.flatmap": { + "array.prototype.flatmap": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.toreversed": { + "array.prototype.toreversed": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" } }, - "node_modules/array.prototype.tosorted": { + "array.prototype.tosorted": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", "es-abstract": "^1.22.3", @@ -2754,12 +1626,12 @@ "es-shim-unscopables": "^1.0.2" } }, - "node_modules/arraybuffer.prototype.slice": { + "arraybuffer.prototype.slice": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, - "dependencies": { + "requires": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -2768,578 +1640,457 @@ "get-intrinsic": "^1.2.3", "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arraybuffer.slice": { + "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" }, - "node_modules/asap": { + "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, - "node_modules/async": { + "async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, - "node_modules/asynciterator.prototype": { + "asynciterator.prototype": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", "dev": true, - "dependencies": { + "requires": { "has-symbols": "^1.0.3" } }, - "node_modules/available-typed-arrays": { + "available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, - "dependencies": { + "requires": { "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axios": { + "axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { + "requires": { "follow-redirects": "^1.14.0" } }, - "node_modules/babel-plugin-styled-components": { + "babel-plugin-styled-components": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/plugin-syntax-jsx": "^7.22.5", "lodash": "^4.17.21", "picomatch": "^2.3.1" - }, - "peerDependencies": { - "styled-components": ">= 2" } }, - "node_modules/babel-runtime": { + "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dependencies": { + "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } } }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "node_modules/backo2": { + "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" }, - "node_modules/balanced-match": { + "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base64-arraybuffer": { + "base64-arraybuffer": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==", - "engines": { - "node": ">= 0.6.0" - } + "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" }, - "node_modules/blob": { + "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, - "node_modules/blueimp-canvas-to-blob": { + "blueimp-canvas-to-blob": { "version": "3.29.0", "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz", "integrity": "sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==" }, - "node_modules/body-scroll-lock": { + "body-scroll-lock": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz", "integrity": "sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg==" }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" } }, - "node_modules/browserslist": { + "browserslist": { "version": "4.23.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { + "requires": { "caniuse-lite": "^1.0.30001587", "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/btoa": { + "btoa": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", - "bin": { - "btoa": "bin/btoa.js" - }, - "engines": { - "node": ">= 0.4.0" - } + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" }, - "node_modules/call-bind": { + "call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { + "requires": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { + "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, - "node_modules/camelcase": { + "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, - "node_modules/camelize": { + "camelize": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", - "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==" }, - "node_modules/can-use-dom": { + "can-use-dom": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz", "integrity": "sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==" }, - "node_modules/caniuse-lite": { + "caniuse-lite": { "version": "1.0.30001597", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz", - "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] + "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==" }, - "node_modules/chalk": { + "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { + "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/change-emitter": { + "change-emitter": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", "integrity": "sha512-YXzt1cQ4a2jqazhcuSWEOc1K2q8g9H6eWNsyZgi640LDzRWVQ2eDe+Y/kVdftH+vYdPF2rgDb3dLdpxE1jvAxw==" }, - "node_modules/classnames": { + "classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, - "node_modules/clsx": { + "clsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" }, - "node_modules/color-convert": { + "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { + "requires": { "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" } }, - "node_modules/color-name": { + "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/component-bind": { + "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" }, - "node_modules/component-emitter": { + "component-emitter": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==" }, - "node_modules/component-inherit": { + "component-inherit": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" }, - "node_modules/compressorjs": { + "compressorjs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/compressorjs/-/compressorjs-1.2.1.tgz", "integrity": "sha512-+geIjeRnPhQ+LLvvA7wxBQE5ddeLU7pJ3FsKFWirDw6veY3s9iLxAQEw7lXGHnhCJvBujEQWuNnGzZcvCvdkLQ==", - "dependencies": { + "requires": { "blueimp-canvas-to-blob": "^3.29.0", "is-blob": "^2.1.0" } }, - "node_modules/concat-map": { + "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/convert-source-map": { + "convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + }, + "cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "requires": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + } }, - "node_modules/cross-spawn": { + "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "dependencies": { + "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/css-color-keywords": { + "css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", - "engines": { - "node": ">=4" - } + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==" }, - "node_modules/css-to-react-native": { + "css-to-react-native": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.3.2.tgz", "integrity": "sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==", - "dependencies": { + "requires": { "camelize": "^1.0.0", "css-color-keywords": "^1.0.0", "postcss-value-parser": "^3.3.0" } }, - "node_modules/css-vendor": { + "css-vendor": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "dependencies": { + "requires": { "@babel/runtime": "^7.8.3", "is-in-browser": "^1.0.2" } }, - "node_modules/csstype": { + "csstype": { "version": "2.6.21", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" }, - "node_modules/date-fns": { + "date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dependencies": { + "requires": { "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" } }, - "node_modules/debug": { + "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { + "requires": { "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } } }, - "node_modules/deep-diff": { + "deep-diff": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", "integrity": "sha512-yVn6RZmHiGnxRKR9sJb3iVV2XTF1Ghh2DiWRZ3dMnGc43yUdWWF/kX6lQyk3+P84iprfWKU/8zFTrlkvtFm1ug==" }, - "node_modules/deep-equal": { + "deep-equal": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "dependencies": { + "requires": { "is-arguments": "^1.1.1", "is-date-object": "^1.0.5", "is-regex": "^1.1.4", "object-is": "^1.1.5", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.5.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/deep-is": { + "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/deepmerge": { + "deepmerge": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" }, - "node_modules/define-data-property": { + "define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { + "requires": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-properties": { + "define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { + "requires": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/doctrine": { + "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "dependencies": { + "requires": { "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" } }, - "node_modules/dom-helpers": { + "dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dependencies": { + "requires": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + } } }, - "node_modules/dom-helpers/node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/dom-storage": { + "dom-storage": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", - "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==", - "engines": { - "node": "*" - } + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==" }, - "node_modules/dot-case": { + "dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { + "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } } }, - "node_modules/duplexer": { + "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, - "node_modules/ejs": { + "ejs": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", - "dependencies": { + "requires": { "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.701", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.701.tgz", - "integrity": "sha512-K3WPQ36bUOtXg/1+69bFlFOvdSm0/0bGqmsfPDLRXLanoKXdA+pIWuf/VbA9b+2CwBFuONgl4NEz4OEm+OJOKA==" + "electron-to-chromium": { + "version": "1.4.702", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.702.tgz", + "integrity": "sha512-LYLXyEUsZ3nNSwiOWjI88N1PJUAMU2QphQSgGLVkFnb3FxZxNui2Vzi2PaKPgPWbsWbZstZnh6BMf/VQJamjiQ==" }, - "node_modules/emoji-regex": { + "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "node_modules/encoding": { + "encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dependencies": { + "requires": { "iconv-lite": "^0.6.2" } }, - "node_modules/engine.io-client": { + "engine.io-client": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz", "integrity": "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==", - "dependencies": { + "requires": { "component-emitter": "~1.3.0", "component-inherit": "0.0.3", "debug": "~3.1.0", @@ -3351,26 +2102,28 @@ "ws": "~7.4.2", "xmlhttprequest-ssl": "~1.6.2", "yeast": "0.1.2" - } - }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + }, "dependencies": { - "ms": "2.0.0" + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, - "node_modules/engine.io-client/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/engine.io-parser": { + "engine.io-parser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "dependencies": { + "requires": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", "base64-arraybuffer": "0.1.4", @@ -3378,36 +2131,30 @@ "has-binary2": "~1.0.2" } }, - "node_modules/enquire.js": { + "enquire.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz", "integrity": "sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==" }, - "node_modules/entities": { + "entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" }, - "node_modules/error-ex": { + "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { + "requires": { "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { + "es-abstract": { "version": "1.22.5", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", "dev": true, - "dependencies": { + "requires": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", "available-typed-arrays": "^1.0.7", @@ -3449,39 +2196,27 @@ "typed-array-length": "^1.0.5", "unbox-primitive": "^1.0.2", "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-define-property": { + "es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { + "requires": { "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/es-errors": { + "es-errors": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" }, - "node_modules/es-iterator-helpers": { + "es-iterator-helpers": { "version": "1.0.17", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", "dev": true, - "dependencies": { + "requires": { "asynciterator.prototype": "^1.0.0", "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -3497,63 +2232,45 @@ "internal-slot": "^1.0.7", "iterator.prototype": "^1.1.2", "safe-array-concat": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/es-set-tostringtag": { + "es-set-tostringtag": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, - "dependencies": { + "requires": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/es-shim-unscopables": { + "es-shim-unscopables": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, - "dependencies": { + "requires": { "hasown": "^2.0.0" } }, - "node_modules/es-to-primitive": { + "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "dependencies": { + "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esbuild": { + "esbuild": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { + "dev": true, + "requires": { "@esbuild/aix-ppc64": "0.19.12", "@esbuild/android-arm": "0.19.12", "@esbuild/android-arm64": "0.19.12", @@ -3579,37 +2296,28 @@ "@esbuild/win32-x64": "0.19.12" } }, - "node_modules/escalade": { + "escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" }, - "node_modules/escape-html": { + "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, - "node_modules/escape-string-regexp": { + "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true }, - "node_modules/eslint": { + "eslint": { "version": "8.57.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, - "dependencies": { + "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", @@ -3648,23 +2356,14 @@ "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-plugin-react": { + "eslint-plugin-react": { "version": "7.34.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.0.tgz", "integrity": "sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==", "dev": true, - "dependencies": { + "requires": { "array-includes": "^3.1.7", "array.prototype.findlast": "^1.2.4", "array.prototype.flatmap": "^1.3.2", @@ -3684,181 +2383,132 @@ "semver": "^6.3.1", "string.prototype.matchall": "^4.0.10" }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } } }, - "node_modules/eslint-plugin-react-hooks": { + "eslint-plugin-react-hooks": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } + "dev": true }, - "node_modules/eslint-plugin-react-refresh": { + "eslint-plugin-react-refresh": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", - "dev": true, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/eslint-scope": { + "eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "dependencies": { + "requires": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-visitor-keys": { + "eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "dev": true }, - "node_modules/espree": { + "espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, - "dependencies": { + "requires": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, - "node_modules/esquery": { + "esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, - "dependencies": { + "requires": { "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" } }, - "node_modules/esrecurse": { + "esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "dependencies": { + "requires": { "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" } }, - "node_modules/estraverse": { + "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } + "dev": true }, - "node_modules/estree-walker": { + "estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, - "node_modules/esutils": { + "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/fast-deep-equal": { + "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "node_modules/fast-json-stable-stringify": { + "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 }, - "node_modules/fast-levenshtein": { + "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/fastq": { + "fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, - "dependencies": { + "requires": { "reusify": "^1.0.4" } }, - "node_modules/faye-websocket": { + "faye-websocket": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dependencies": { + "requires": { "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" } }, - "node_modules/fbjs": { + "fbjs": { "version": "0.8.18", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==", - "dependencies": { + "requires": { "core-js": "^1.0.0", "isomorphic-fetch": "^2.1.1", "loose-envify": "^1.0.0", @@ -3866,74 +2516,57 @@ "promise": "^7.1.1", "setimmediate": "^1.0.5", "ua-parser-js": "^0.7.30" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==" + } } }, - "node_modules/fbjs/node_modules/core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js." - }, - "node_modules/file-entry-cache": { + "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "dependencies": { + "requires": { "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/filelist": { + "filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dependencies": { + "requires": { "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" }, - "engines": { - "node": ">=10" + "dependencies": { + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, - "node_modules/find-up": { + "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "dependencies": { + "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/firebase": { + "firebase": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.24.0.tgz", "integrity": "sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA==", - "dependencies": { + "requires": { "@firebase/analytics": "0.6.0", "@firebase/app": "0.6.11", "@firebase/app-types": "0.6.1", @@ -3948,78 +2581,49 @@ "@firebase/remote-config": "0.1.28", "@firebase/storage": "0.3.43", "@firebase/util": "0.3.2" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" } }, - "node_modules/flat-cache": { + "flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "dependencies": { + "requires": { "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/flatted": { + "flatted": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, - "node_modules/fn-name": { + "fn-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA==" }, - "node_modules/follow-redirects": { + "follow-redirects": { "version": "1.15.5", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" }, - "node_modules/for-each": { + "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "dependencies": { + "requires": { "is-callable": "^1.1.3" } }, - "node_modules/formik": { + "formik": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.5.tgz", "integrity": "sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==", - "funding": [ - { - "type": "individual", - "url": "https://opencollective.com/formik" - } - ], - "dependencies": { + "requires": { "@types/hoist-non-react-statics": "^3.3.1", "deepmerge": "^2.1.1", "hoist-non-react-statics": "^3.3.0", @@ -4029,313 +2633,223 @@ "tiny-warning": "^1.0.2", "tslib": "^2.0.0" }, - "peerDependencies": { - "react": ">=16.8.0" + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } } }, - "node_modules/fs.realpath": { + "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "node_modules/fsevents": { + "fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "dev": true, + "optional": true }, - "node_modules/function-bind": { + "function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, - "node_modules/function.prototype.name": { + "function.prototype.name": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functions-have-names": { + "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, - "node_modules/gensync": { + "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, - "node_modules/get-caller-file": { + "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "node_modules/get-intrinsic": { + "get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { + "requires": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-symbol-description": { + "get-symbol-description": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { + "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { + "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { + "glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "dependencies": { + "requires": { "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" } }, - "node_modules/globals": { + "globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "dependencies": { + "requires": { "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { + "globalthis": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, - "dependencies": { + "requires": { "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/google-maps-infobox": { + "google-maps-infobox": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/google-maps-infobox/-/google-maps-infobox-2.0.0.tgz", "integrity": "sha512-hTuWmWZZSOxf5D/z7l3/hTF1grgRvLG53BEKMdjiKOG+FcK/kH7vqseUeyIU9Zj2ZIqKTOaro0nknxpAuRq4Vw==" }, - "node_modules/gopd": { + "gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { + "requires": { "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graphemer": { + "graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/gud": { + "gud": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" }, - "node_modules/gzip-size": { + "gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dependencies": { + "requires": { "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-bigints": { + "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "dev": true }, - "node_modules/has-binary2": { + "has-binary2": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dependencies": { + "requires": { "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" + } } }, - "node_modules/has-binary2/node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "node_modules/has-cors": { + "has-cors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" }, - "node_modules/has-flag": { + "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "node_modules/has-property-descriptors": { + "has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { + "requires": { "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { + "has-proto": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" }, - "node_modules/has-symbols": { + "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, - "node_modules/has-tostringtag": { + "has-tostringtag": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { + "requires": { "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hasown": { + "hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { + "requires": { "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/history": { + "history": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "dependencies": { + "requires": { "@babel/runtime": "^7.1.2", "loose-envify": "^1.2.0", "resolve-pathname": "^3.0.0", @@ -4344,547 +2858,389 @@ "value-equal": "^1.0.1" } }, - "node_modules/hoist-non-react-statics": { + "hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { + "requires": { "react-is": "^16.7.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/http-parser-js": { + "http-parser-js": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" }, - "node_modules/hyphenate-style-name": { + "hyphenate-style-name": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" }, - "node_modules/iconv-lite": { + "iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { + "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/idb": { + "idb": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz", "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==" }, - "node_modules/ignore": { + "ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } + "dev": true }, - "node_modules/import-fresh": { + "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { + "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { + "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } + "dev": true }, - "node_modules/indexof": { + "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" }, - "node_modules/inflight": { + "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { + "requires": { "once": "^1.3.0", "wrappy": "1" } }, - "node_modules/inherits": { + "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/internal-slot": { + "internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, - "dependencies": { + "requires": { "es-errors": "^1.3.0", "hasown": "^2.0.0", "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/invariant": { + "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { + "requires": { "loose-envify": "^1.0.0" } }, - "node_modules/is-arguments": { + "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==", - "dependencies": { + "requires": { "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": { + "is-array-buffer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-arrayish": { + "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, - "node_modules/is-async-function": { + "is-async-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, - "dependencies": { + "requires": { "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-bigint": { + "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": { + "requires": { "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-blob": { + "is-blob": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", - "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==" }, - "node_modules/is-boolean-object": { + "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": { + "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-callable": { + "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "dev": true }, - "node_modules/is-core-module": { + "is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "dependencies": { + "requires": { "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { + "is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { + "requires": { "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { + "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" }, - "node_modules/is-extglob": { + "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/is-finalizationregistry": { + "is-finalizationregistry": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-fullwidth-code-point": { + "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, - "node_modules/is-generator-function": { + "is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, - "dependencies": { + "requires": { "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-glob": { + "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "dependencies": { + "requires": { "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/is-in-browser": { + "is-in-browser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" }, - "node_modules/is-map": { + "is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "dev": true }, - "node_modules/is-negative-zero": { + "is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "dev": true }, - "node_modules/is-number-object": { + "is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, - "dependencies": { + "requires": { "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { + "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/is-regex": { + "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { + "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-set": { + "is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "dev": true }, - "node_modules/is-shared-array-buffer": { + "is-shared-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { + "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" }, - "node_modules/is-string": { + "is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "dependencies": { + "requires": { "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-symbol": { + "is-symbol": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "dependencies": { + "requires": { "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typed-array": { + "is-typed-array": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, - "dependencies": { + "requires": { "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakmap": { + "is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "dev": true }, - "node_modules/is-weakref": { + "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakset": { + "is-weakset": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-what": { + "is-what": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" }, - "node_modules/is-wsl": { + "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { + "requires": { "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/isarray": { + "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" }, - "node_modules/isexe": { + "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/isomorphic-fetch": { + "isomorphic-fetch": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", - "dependencies": { + "requires": { "node-fetch": "^1.0.1", "whatwg-fetch": ">=0.10.0" + }, + "dependencies": { + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } } }, - "node_modules/iterator.prototype": { + "iterator.prototype": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, - "dependencies": { + "requires": { "define-properties": "^1.2.1", "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", @@ -4892,811 +3248,654 @@ "set-function-name": "^2.0.1" } }, - "node_modules/jake": { + "jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", - "dependencies": { + "requires": { "async": "^3.2.3", "chalk": "^4.0.2", "filelist": "^1.0.4", "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" } }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "peer": true - }, - "node_modules/js-tokens": { + "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "node_modules/js-yaml": { + "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { + "requires": { "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { + "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, - "node_modules/json-buffer": { + "json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, - "node_modules/json-parse-even-better-errors": { + "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, - "node_modules/json-schema-traverse": { + "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 }, - "node_modules/json-stable-stringify-without-jsonify": { + "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/json2mq": { + "json2mq": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", - "dependencies": { + "requires": { "string-convert": "^0.2.0" } }, - "node_modules/json5": { + "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, - "node_modules/jss": { + "jss": { "version": "10.10.0", "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "csstype": "^3.0.2", "is-in-browser": "^1.1.3", "tiny-warning": "^1.0.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/jss" + "dependencies": { + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + } } }, - "node_modules/jss-plugin-camel-case": { + "jss-plugin-camel-case": { "version": "10.10.0", "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", "jss": "10.10.0" } }, - "node_modules/jss-plugin-default-unit": { + "jss-plugin-default-unit": { "version": "10.10.0", "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0" } }, - "node_modules/jss-plugin-global": { + "jss-plugin-global": { "version": "10.10.0", "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0" } }, - "node_modules/jss-plugin-nested": { + "jss-plugin-nested": { "version": "10.10.0", "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, - "node_modules/jss-plugin-props-sort": { + "jss-plugin-props-sort": { "version": "10.10.0", "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0" } }, - "node_modules/jss-plugin-rule-value-function": { + "jss-plugin-rule-value-function": { "version": "10.10.0", "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "jss": "10.10.0", "tiny-warning": "^1.0.2" } }, - "node_modules/jss-plugin-vendor-prefixer": { + "jss-plugin-vendor-prefixer": { "version": "10.10.0", "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", - "dependencies": { + "requires": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.8", "jss": "10.10.0" } }, - "node_modules/jss/node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/jsx-ast-utils": { + "jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, - "dependencies": { + "requires": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" } }, - "node_modules/just-debounce-it": { + "just-debounce-it": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/just-debounce-it/-/just-debounce-it-3.2.0.tgz", "integrity": "sha512-WXzwLL0745uNuedrCsCs3rpmfD6DBaf7uuVwaq98/8dafURfgQaBsSpjiPp5+CW6Vjltwy9cOGI6qE71b3T8iQ==" }, - "node_modules/keyv": { + "keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "dependencies": { + "requires": { "json-buffer": "3.0.1" } }, - "node_modules/levn": { + "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "dependencies": { + "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" } }, - "node_modules/lines-and-columns": { + "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/locate-path": { + "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "dependencies": { + "requires": { "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { + "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/lodash-es": { + "lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, - "node_modules/lodash.camelcase": { + "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, - "node_modules/lodash.debounce": { + "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, - "node_modules/lodash.merge": { + "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, - "node_modules/loose-envify": { + "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { + "requires": { "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" } }, - "node_modules/lower-case": { + "lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { + "requires": { "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } } }, - "node_modules/lru-cache": { + "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { + "requires": { "yallist": "^3.0.2" } }, - "node_modules/marker-clusterer-plus": { + "marker-clusterer-plus": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/marker-clusterer-plus/-/marker-clusterer-plus-2.1.4.tgz", "integrity": "sha512-4WLZnYCkgsUfSC0pftldd0YrLNupSqVIEdxL979f3sXVMBHTUOF3gDa6cEuOk2z8UGyVGcANiNZgvVc333mrHA==" }, - "node_modules/markerwithlabel": { + "markerwithlabel": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/markerwithlabel/-/markerwithlabel-2.0.2.tgz", "integrity": "sha512-C/cbm1A0h/u54gwHk5ZJNdUU3V3+1BbCpRPMsMyFA7vF4yL+aB4rWpxACz29TpQ+cTg6/iQroExh0PMSRGtQFg==" }, - "node_modules/memoize-one": { + "memoize-one": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" }, - "node_modules/merge-anything": { + "merge-anything": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-2.4.4.tgz", "integrity": "sha512-l5XlriUDJKQT12bH+rVhAHjwIuXWdAIecGwsYjv2LJo+dA1AeRTmeQS+3QBpO6lEthBMDi2IUMpLC1yyRvGlwQ==", - "dependencies": { + "requires": { "is-what": "^3.3.1" } }, - "node_modules/minimatch": { + "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { + "requires": { "brace-expansion": "^1.1.7" }, - "engines": { - "node": "*" + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + } } }, - "node_modules/minimist": { + "minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, - "node_modules/mkdirp": { + "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { + "requires": { "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" } }, - "node_modules/ms": { + "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/nanoid": { + "nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } + "dev": true }, - "node_modules/natural-compare": { + "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/no-case": { + "no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { + "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" - } - }, - "node_modules/node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + }, "dependencies": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } } }, - "node_modules/node-releases": { + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, - "node_modules/object-assign": { + "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, - "node_modules/object-inspect": { + "object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "dev": true }, - "node_modules/object-is": { + "object-is": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dependencies": { + "requires": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-keys": { + "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "node_modules/object.assign": { + "object.assign": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.entries": { + "object.entries": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/object.fromentries": { + "object.fromentries": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.hasown": { + "object.hasown": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, - "dependencies": { + "requires": { "define-properties": "^1.2.0", "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.values": { + "object.values": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/once": { + "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { + "requires": { "wrappy": "1" } }, - "node_modules/open": { + "open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dependencies": { + "requires": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/optionator": { + "optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "dependencies": { + "requires": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" } }, - "node_modules/p-limit": { + "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "dependencies": { + "requires": { "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { + "p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "dependencies": { + "requires": { "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parent-module": { + "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { + "requires": { "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" } }, - "node_modules/parse-json": { + "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { + "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parseqs": { + "parseqs": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" }, - "node_modules/parseuri": { + "parseuri": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" }, - "node_modules/path-exists": { + "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/path-is-absolute": { + "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, - "node_modules/path-key": { + "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/path-parse": { + "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-to-regexp": { + "path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dependencies": { + "requires": { "isarray": "0.0.1" } }, - "node_modules/path-type": { + "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, - "node_modules/perfect-scrollbar": { + "perfect-scrollbar": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz", "integrity": "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==" }, - "node_modules/picocolors": { + "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, - "node_modules/picomatch": { + "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, - "node_modules/popper.js": { + "popper.js": { "version": "1.16.1-lts", "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" }, - "node_modules/possible-typed-array-names": { + "possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } + "dev": true }, - "node_modules/postcss": { + "postcss": { "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { + "dev": true, + "requires": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-value-parser": { + "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" }, - "node_modules/prelude-ls": { + "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } + "dev": true }, - "node_modules/prettier": { + "prettier": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } + "dev": true }, - "node_modules/promise": { + "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dependencies": { + "requires": { "asap": "~2.0.3" } }, - "node_modules/promise-polyfill": { + "promise-polyfill": { "version": "8.1.3", "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz", "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==" }, - "node_modules/prop-types": { + "prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { + "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/property-expr": { + "property-expr": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==" }, - "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "hasInstallScript": true, - "dependencies": { + "protobufjs": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", + "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", + "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", @@ -5707,97 +3906,65 @@ "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" + "long": "^5.0.0" } }, - "node_modules/punycode": { + "punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } + "dev": true }, - "node_modules/queue-microtask": { + "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "dev": true }, - "node_modules/react": { + "react": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "dependencies": { + "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/react-datepicker": { + "react-datepicker": { "version": "2.16.0", "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-2.16.0.tgz", "integrity": "sha512-TvcmSY27rn0JKvuJuIXNNS+niGQNdgtuG/CsBttVYhPOA9KmSw7c2PvQBPVEvzkyV+QPNJ8jN/KVJNj9uvopqA==", - "dependencies": { + "requires": { "classnames": "^2.2.6", "date-fns": "^2.0.1", "prop-types": "^15.7.2", "react-onclickoutside": "^6.9.0", "react-popper": "^1.3.4" - }, - "peerDependencies": { - "react": "^16.9.0", - "react-dom": "^16.9.0" } }, - "node_modules/react-dom": { + "react-dom": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "dependencies": { + "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" } }, - "node_modules/react-fast-compare": { + "react-fast-compare": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" }, - "node_modules/react-google-maps": { + "react-google-maps": { "version": "9.4.5", "resolved": "https://registry.npmjs.org/react-google-maps/-/react-google-maps-9.4.5.tgz", "integrity": "sha512-8z5nX9DxIcBCXuEiurmRT1VXVwnzx0C6+3Es6lxB2/OyY2SLax2/LcDu6Aldxnl3HegefTL7NJzGeaKAJ61pOA==", - "dependencies": { + "requires": { "babel-runtime": "^6.11.6", "can-use-dom": "^0.1.0", "google-maps-infobox": "^2.0.0", @@ -5810,86 +3977,71 @@ "scriptjs": "^2.5.8", "warning": "^3.0.0" }, - "peerDependencies": { - "@types/googlemaps": "^3.0.0", - "@types/markerclustererplus": "^2.1.29", - "@types/react": "^15.0.0 || ^16.0.0", - "react": "^15.0.0 || ^16.0.0", - "react-dom": "^15.0.0 || ^16.0.0" - } - }, - "node_modules/react-google-maps/node_modules/hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" - }, - "node_modules/react-google-maps/node_modules/recompose": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz", - "integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==", "dependencies": { - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^2.3.1", - "symbol-observable": "^1.0.4" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0" + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, + "recompose": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz", + "integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==", + "requires": { + "change-emitter": "^0.1.2", + "fbjs": "^0.8.1", + "hoist-non-react-statics": "^2.3.1", + "symbol-observable": "^1.0.4" + } + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", + "requires": { + "loose-envify": "^1.0.0" + } + } } }, - "node_modules/react-is": { + "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, - "node_modules/react-lifecycles-compat": { + "react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, - "node_modules/react-onclickoutside": { + "react-onclickoutside": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", - "integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==", - "funding": { - "type": "individual", - "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" - }, - "peerDependencies": { - "react": "^15.5.x || ^16.x || ^17.x || ^18.x", - "react-dom": "^15.5.x || ^16.x || ^17.x || ^18.x" - } + "integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==" }, - "node_modules/react-perfect-scrollbar": { + "react-perfect-scrollbar": { "version": "1.5.8", "resolved": "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz", "integrity": "sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==", - "dependencies": { + "requires": { "perfect-scrollbar": "^1.5.0", "prop-types": "^15.6.1" - }, - "peerDependencies": { - "react": ">=16.3.3", - "react-dom": ">=16.3.3" } }, - "node_modules/react-places-autocomplete": { + "react-places-autocomplete": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/react-places-autocomplete/-/react-places-autocomplete-7.3.0.tgz", "integrity": "sha512-86wcHC69JATvWBnIS/yCsBHLtwzOGcnx3Ye94u74yTrz1jLRC/txkVDkf6rvC+Jq3zNe/tAg/W53x0EaH1ZPPw==", - "dependencies": { + "requires": { "lodash.debounce": "^4.0.8", "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": ">=0.14.7" } }, - "node_modules/react-popper": { + "react-popper": { "version": "1.3.11", "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", - "dependencies": { + "requires": { "@babel/runtime": "^7.1.2", "@hypnosphi/create-react-context": "^0.3.1", "deep-equal": "^1.1.1", @@ -5898,57 +4050,32 @@ "typed-styles": "^0.0.7", "warning": "^4.0.2" }, - "peerDependencies": { - "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/react-popper/node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/react-popper/node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", "dependencies": { - "loose-envify": "^1.0.0" + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + } } }, - "node_modules/react-redux": { + "react-redux": { "version": "7.2.9", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", - "dependencies": { + "requires": { "@babel/runtime": "^7.15.4", "@types/react-redux": "^7.1.20", "hoist-non-react-statics": "^3.3.2", "loose-envify": "^1.4.0", "prop-types": "^15.7.2", "react-is": "^17.0.2" - }, - "peerDependencies": { - "react": "^16.8.3 || ^17 || ^18" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } } }, - "node_modules/react-router": { + "react-router": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", - "dependencies": { + "requires": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", "hoist-non-react-statics": "^3.1.0", @@ -5959,15 +4086,19 @@ "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" }, - "peerDependencies": { - "react": ">=15" + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, - "node_modules/react-router-dom": { + "react-router-dom": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", - "dependencies": { + "requires": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", "loose-envify": "^1.3.1", @@ -5975,52 +4106,36 @@ "react-router": "5.3.4", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" } }, - "node_modules/react-router/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-slick": { + "react-slick": { "version": "0.25.2", "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.25.2.tgz", "integrity": "sha512-8MNH/NFX/R7zF6W/w+FS5VXNyDusF+XDW1OU0SzODEU7wqYB+ZTGAiNJ++zVNAVqCAHdyCybScaUB+FCZOmBBw==", - "dependencies": { + "requires": { "classnames": "^2.2.5", "enquire.js": "^2.1.6", "json2mq": "^0.2.0", "lodash.debounce": "^4.0.8", "resize-observer-polyfill": "^1.5.0" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.1 || ^16.0.0", - "react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0" } }, - "node_modules/react-transition-group": { + "react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "dependencies": { + "requires": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", "loose-envify": "^1.4.0", "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" } }, - "node_modules/recompose": { + "recompose": { "version": "0.30.0", "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz", "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==", - "dependencies": { + "requires": { "@babel/runtime": "^7.0.0", "change-emitter": "^0.1.2", "fbjs": "^0.8.1", @@ -6028,53 +4143,46 @@ "react-lifecycles-compat": "^3.0.2", "symbol-observable": "^1.0.4" }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16.0.0" + "dependencies": { + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + } } }, - "node_modules/recompose/node_modules/hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" - }, - "node_modules/redux": { + "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": { + "requires": { "@babel/runtime": "^7.9.2" } }, - "node_modules/redux-logger": { + "redux-logger": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/redux-logger/-/redux-logger-3.0.6.tgz", "integrity": "sha512-JoCIok7bg/XpqA1JqCqXFypuqBbQzGQySrhFzewB7ThcnysTO30l4VCst86AuB9T9tuT03MAA56Jw2PNhRSNCg==", - "dependencies": { + "requires": { "deep-diff": "^0.3.5" } }, - "node_modules/redux-persist": { + "redux-persist": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", - "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", - "peerDependencies": { - "redux": ">4.0.0" - } + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==" }, - "node_modules/redux-thunk": { + "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" - } + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==" }, - "node_modules/reflect.getprototypeof": { + "reflect.getprototypeof": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", "es-abstract": "^1.22.3", @@ -6082,341 +4190,244 @@ "get-intrinsic": "^1.2.3", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regenerator-runtime": { + "regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, - "node_modules/regexp.prototype.flags": { + "regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dependencies": { + "requires": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/require-directory": { + "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==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, - "node_modules/resize-observer-polyfill": { + "resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" }, - "node_modules/resolve": { + "resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, - "dependencies": { + "requires": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-from": { + "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, - "node_modules/resolve-pathname": { + "resolve-pathname": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" }, - "node_modules/reusify": { + "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/rimraf": { + "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "dependencies": { + "requires": { "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rollup": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.1.tgz", - "integrity": "sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==", - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.1", - "@rollup/rollup-android-arm64": "4.12.1", - "@rollup/rollup-darwin-arm64": "4.12.1", - "@rollup/rollup-darwin-x64": "4.12.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.1", - "@rollup/rollup-linux-arm64-gnu": "4.12.1", - "@rollup/rollup-linux-arm64-musl": "4.12.1", - "@rollup/rollup-linux-riscv64-gnu": "4.12.1", - "@rollup/rollup-linux-x64-gnu": "4.12.1", - "@rollup/rollup-linux-x64-musl": "4.12.1", - "@rollup/rollup-win32-arm64-msvc": "4.12.1", - "@rollup/rollup-win32-ia32-msvc": "4.12.1", - "@rollup/rollup-win32-x64-msvc": "4.12.1", + "rollup": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", + "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.13.0", + "@rollup/rollup-android-arm64": "4.13.0", + "@rollup/rollup-darwin-arm64": "4.13.0", + "@rollup/rollup-darwin-x64": "4.13.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", + "@rollup/rollup-linux-arm64-gnu": "4.13.0", + "@rollup/rollup-linux-arm64-musl": "4.13.0", + "@rollup/rollup-linux-riscv64-gnu": "4.13.0", + "@rollup/rollup-linux-x64-gnu": "4.13.0", + "@rollup/rollup-linux-x64-musl": "4.13.0", + "@rollup/rollup-win32-arm64-msvc": "4.13.0", + "@rollup/rollup-win32-ia32-msvc": "4.13.0", + "@rollup/rollup-win32-x64-msvc": "4.13.0", + "@types/estree": "1.0.5", "fsevents": "~2.3.2" } }, - "node_modules/run-parallel": { + "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { + "requires": { "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { + "safe-array-concat": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/safe-buffer": { + "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" - } - ] + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, - "node_modules/safe-regex-test": { + "safe-regex-test": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { + "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/scheduler": { + "scheduler": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dependencies": { + "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, - "node_modules/scriptjs": { + "scriptjs": { "version": "2.5.9", "resolved": "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz", "integrity": "sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==" }, - "node_modules/semver": { + "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, - "node_modules/set-function-length": { + "set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { + "requires": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/set-function-name": { + "set-function-name": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dependencies": { + "requires": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/setimmediate": { + "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, - "node_modules/shebang-command": { + "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "dependencies": { + "requires": { "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/shebang-regex": { + "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } + "dev": true }, - "node_modules/side-channel": { + "side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slick-carousel": { + "slick-carousel": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz", - "integrity": "sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==", - "peerDependencies": { - "jquery": ">=1.8.0" - } + "integrity": "sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==" }, - "node_modules/snake-case": { + "snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dependencies": { + "requires": { "dot-case": "^3.0.4", "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } } }, - "node_modules/socket.io-client": { + "socket.io-client": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz", "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==", - "dependencies": { + "requires": { "backo2": "1.0.2", "component-bind": "1.0.0", "component-emitter": "~1.3.0", @@ -6428,62 +4439,63 @@ "parseuri": "0.0.6", "socket.io-parser": "~3.3.0", "to-array": "0.1.4" - } - }, - "node_modules/socket.io-client/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + }, "dependencies": { - "ms": "2.0.0" + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, - "node_modules/socket.io-client/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/socket.io-parser": { + "socket.io-parser": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz", "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==", - "dependencies": { + "requires": { "component-emitter": "~1.3.0", "debug": "~3.1.0", "isarray": "2.0.1" - } - }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + }, "dependencies": { - "ms": "2.0.0" + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, - "node_modules/socket.io-parser/node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "node_modules/socket.io-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/source-map": { + "source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "engines": { - "node": ">= 8" - } + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" }, - "node_modules/source-map-explorer": { + "source-map-explorer": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.5.3.tgz", "integrity": "sha512-qfUGs7UHsOBE5p/lGfQdaAj/5U/GWYBw2imEpD6UQNkqElYonkow8t+HBL1qqIl3CuGZx7n8/CQo4x1HwSHhsg==", - "dependencies": { + "requires": { "btoa": "^1.2.1", "chalk": "^4.1.0", "convert-source-map": "^1.7.0", @@ -6497,46 +4509,65 @@ "temp": "^0.9.4", "yargs": "^16.2.0" }, - "bin": { - "sme": "bin/cli.js", - "source-map-explorer": "bin/cli.js" - }, - "engines": { - "node": ">=12" + "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } } }, - "node_modules/source-map-js": { + "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } + "dev": true }, - "node_modules/string-convert": { + "string-convert": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==" }, - "node_modules/string-width": { + "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { + "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" } }, - "node_modules/string.prototype.matchall": { + "string.prototype.matchall": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", @@ -6546,85 +4577,60 @@ "regexp.prototype.flags": "^1.5.0", "set-function-name": "^2.0.0", "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trim": { + "string.prototype.trim": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimend": { + "string.prototype.trimend": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimstart": { + "string.prototype.trimstart": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-ansi": { + "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { + "requires": { "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" } }, - "node_modules/strip-json-comments": { + "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true }, - "node_modules/styled-components": { + "styled-components": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-4.4.1.tgz", "integrity": "sha512-RNqj14kYzw++6Sr38n7197xG33ipEOktGElty4I70IKzQF1jzaD1U4xQ+Ny/i03UUhHlC5NWEO+d8olRCDji6g==", - "hasInstallScript": true, - "dependencies": { + "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/traverse": "^7.0.0", "@emotion/is-prop-valid": "^0.8.1", @@ -6639,488 +4645,321 @@ "stylis-rule-sheet": "^0.0.10", "supports-color": "^5.5.0" }, - "peerDependencies": { - "react": ">= 16.3.0", - "react-dom": ">= 16.3.0" - } - }, - "node_modules/styled-components/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/styled-components/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/styled-components/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" + "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==" + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "node_modules/stylis": { + "stylis": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" }, - "node_modules/stylis-rule-sheet": { + "stylis-rule-sheet": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", - "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==", - "peerDependencies": { - "stylis": "^3.5.0" - } + "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==" }, - "node_modules/supports-color": { + "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { + "requires": { "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { + "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "dev": true }, - "node_modules/svg-parser": { + "svg-parser": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" }, - "node_modules/symbol-observable": { + "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, - "node_modules/synchronous-promise": { + "synchronous-promise": { "version": "2.0.17", "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==" }, - "node_modules/temp": { + "temp": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "dependencies": { + "requires": { "mkdirp": "^0.5.1", "rimraf": "~2.6.2" }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + } } }, - "node_modules/text-table": { + "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/tiny-invariant": { + "tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, - "node_modules/tiny-warning": { + "tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, - "node_modules/to-array": { + "to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==" }, - "node_modules/to-fast-properties": { + "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" }, - "node_modules/toposort": { + "toposort": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/type-check": { + "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "dependencies": { + "requires": { "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" } }, - "node_modules/type-fest": { + "type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true }, - "node_modules/typed-array-buffer": { + "typed-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/typed-array-byte-length": { + "typed-array-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-proto": "^1.0.3", "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typed-array-byte-offset": { + "typed-array-byte-offset": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, - "dependencies": { + "requires": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-proto": "^1.0.3", "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typed-array-length": { + "typed-array-length": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typed-styles": { + "typed-styles": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" }, - "node_modules/typescript": { + "typescript": { "version": "3.9.10", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" }, - "node_modules/ua-parser-js": { + "ua-parser-js": { "version": "0.7.37", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", - "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "engines": { - "node": "*" - } + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==" }, - "node_modules/unbox-primitive": { + "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/undici-types": { + "undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, - "node_modules/update-browserslist-db": { + "update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { + "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" } }, - "node_modules/uri-js": { + "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "dependencies": { + "requires": { "punycode": "^2.1.0" } }, - "node_modules/value-equal": { + "value-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" }, - "node_modules/vite": { + "vite": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==", - "dependencies": { + "dev": true, + "requires": { "esbuild": "^0.19.3", + "fsevents": "~2.3.3", "postcss": "^8.4.35", "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } } }, - "node_modules/vite-plugin-svgr": { + "vite-plugin-svgr": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz", "integrity": "sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==", - "dependencies": { + "requires": { "@rollup/pluginutils": "^5.0.5", "@svgr/core": "^8.1.0", "@svgr/plugin-jsx": "^8.1.0" - }, - "peerDependencies": { - "vite": "^2.6.0 || 3 || 4 || 5" } }, - "node_modules/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", - "dependencies": { + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { "loose-envify": "^1.0.0" } }, - "node_modules/websocket-driver": { + "websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dependencies": { + "requires": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" } }, - "node_modules/websocket-extensions": { + "websocket-extensions": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "engines": { - "node": ">=0.8.0" - } + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" }, - "node_modules/which": { + "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "dependencies": { + "requires": { "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { + "which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "dependencies": { + "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", "is-number-object": "^1.0.4", "is-string": "^1.0.5", "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type": { + "which-builtin-type": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", "dev": true, - "dependencies": { + "requires": { "function.prototype.name": "^1.1.5", "has-tostringtag": "^1.0.0", "is-async-function": "^2.0.0", @@ -7134,173 +4973,115 @@ "which-collection": "^1.0.1", "which-typed-array": "^1.1.9" }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/which-collection": { + "which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, - "dependencies": { + "requires": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-typed-array": { + "which-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, - "dependencies": { + "requires": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wrap-ansi": { + "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { + "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrappy": { + "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/ws": { + "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" }, - "node_modules/xmlhttprequest": { + "xmlhttprequest": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", - "engines": { - "node": ">=0.4.0" - } + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==" }, - "node_modules/xmlhttprequest-ssl": { + "xmlhttprequest-ssl": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", - "engines": { - "node": ">=0.4.0" - } + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" }, - "node_modules/y18n": { + "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, - "node_modules/yallist": { + "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "requires": { + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" + "yargs-parser": "^21.1.1" } }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" }, - "node_modules/yeast": { + "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" }, - "node_modules/yocto-queue": { + "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true }, - "node_modules/yup": { + "yup": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/yup/-/yup-0.27.0.tgz", "integrity": "sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==", - "dependencies": { + "requires": { "@babel/runtime": "^7.0.0", "fn-name": "~2.0.1", "lodash": "^4.17.11", From 38e452e0df2c4499fb0a130e3d63d10bac86b901 Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Tue, 12 Mar 2024 18:04:10 -0400 Subject: [PATCH 21/22] remove ineffective env var assignments in script command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 48a4f14..5cf581e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "start": "HTTPS=true && NODE_ENV=production && node --max-old-space-size=4096 app", + "start": "node --max-old-space-size=4096 app", "dev": "NODE_ENV=development run-p api-dev client-dev", "api-dev": "PORT=8081 nodemon app", "client-dev": "cd client && npm run-script dev", From cdb5927ba9bdafa1b366ac8cd3b4eec70bc614eb Mon Sep 17 00:00:00 2001 From: Jay Joo Date: Tue, 12 Mar 2024 18:15:20 -0400 Subject: [PATCH 22/22] refactor prod db url env var name --- app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app.js b/app.js index 8642af5..939e4d2 100644 --- a/app.js +++ b/app.js @@ -15,9 +15,9 @@ require('dotenv').config(); // MONGODB const forceProdDB = false; const isProdDb = forceProdDB - || (process.env.NODE_ENV === 'production' && process.env.VITE_DB_PROD); + || (process.env.NODE_ENV === 'production' && process.env.DB_URI_PROD); const URI = isProdDb - ? process.env.VITE_DB_PROD + ? process.env.DB_URI_PROD : process.env.DB_URI_DEV; mongoose.connect(URI, {