From 6500164bf04c0245e932ecef4c403a05aa08ad35 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 15:55:02 +0530 Subject: [PATCH 01/22] Add @mui/x-data-grid package --- src/ui/package-lock.json | 31 +++++++++++++++++++++++++++++++ src/ui/package.json | 1 + 2 files changed, 32 insertions(+) diff --git a/src/ui/package-lock.json b/src/ui/package-lock.json index 499ab519..72fabfe1 100644 --- a/src/ui/package-lock.json +++ b/src/ui/package-lock.json @@ -13,6 +13,7 @@ "@emotion/styled": "^11.11.0", "@mui/icons-material": "^5.14.19", "@mui/material": "^5.14.19", + "@mui/x-data-grid": "^6.18.7", "@mui/x-date-pickers": "^6.18.2", "@reduxjs/toolkit": "^2.0.1", "@solana/wallet-adapter-base": "^0.9.23", @@ -3384,6 +3385,36 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, + "node_modules/@mui/x-data-grid": { + "version": "6.18.7", + "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-6.18.7.tgz", + "integrity": "sha512-K1A3pMUPxI4/Mt5A4vrK45fBBQK5rZvBVqRMrB5n8zX++Bj+WLWKvLTtfCmlriUtzuadr/Hl7Z+FDRXUJAx6qg==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@mui/utils": "^5.14.16", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "reselect": "^4.1.8" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.4.1", + "@mui/system": "^5.4.1", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@mui/x-data-grid/node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + }, "node_modules/@mui/x-date-pickers": { "version": "6.18.2", "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.18.2.tgz", diff --git a/src/ui/package.json b/src/ui/package.json index 98beb865..3af704b3 100644 --- a/src/ui/package.json +++ b/src/ui/package.json @@ -14,6 +14,7 @@ "@emotion/styled": "^11.11.0", "@mui/icons-material": "^5.14.19", "@mui/material": "^5.14.19", + "@mui/x-data-grid": "^6.18.7", "@mui/x-date-pickers": "^6.18.2", "@reduxjs/toolkit": "^2.0.1", "@solana/wallet-adapter-base": "^0.9.23", From bfdcea45407345c3852fcf9469774abaaf22981a Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 15:55:06 +0530 Subject: [PATCH 02/22] Add new types for Twitter account, influencer, and order item --- src/ui/src/utils/types.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/ui/src/utils/types.ts b/src/ui/src/utils/types.ts index cd50d6e2..28ad2e8d 100644 --- a/src/ui/src/utils/types.ts +++ b/src/ui/src/utils/types.ts @@ -167,4 +167,42 @@ type WalletType = { wallet_network_id: WalletNetworkType; wallet_provider_id: WalletProviderType; is_primary: boolean; +}; + +type TwiiterAccountReadType = { + id: string; + twitter_id: string; + name: string; + user_name: string; +}; + +type InfleuncerType = { + id: string; + first_name: string; + last_name: null; + twitter_account: TwiiterAccountReadType; +}; + +type OrderItemOrderID = { + id: string; + package: PackageType; + service_master: ServiceMasterType; + currency: CurrencyType; + quantity: null; + status: null; + price: string; + created_at: Date; + platform_fee: string; + order_id: string; +}; + +type OrderType = { + id: string; + buyer: UserType; + order_item_order_id: OrderItemOrderID[]; + amount: number; + currency: CurrencyType; + description: null; + status: string; + created_at: Date; }; \ No newline at end of file From 2f56714d81aa4a40a8ee3e2e144e964e8b2b53ed Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 15:55:11 +0530 Subject: [PATCH 03/22] Add dashboard pages for business and influencer --- src/ui/app/business/dashboard/page.tsx | 96 ++++++++++++++++++++++++ src/ui/app/influencer/dashboard/page.tsx | 96 ++++++++++++++++++++++++ 2 files changed, 192 insertions(+) create mode 100644 src/ui/app/business/dashboard/page.tsx create mode 100644 src/ui/app/influencer/dashboard/page.tsx diff --git a/src/ui/app/business/dashboard/page.tsx b/src/ui/app/business/dashboard/page.tsx new file mode 100644 index 00000000..596345a5 --- /dev/null +++ b/src/ui/app/business/dashboard/page.tsx @@ -0,0 +1,96 @@ +"use client"; + +import { notification } from "@/src/components/shared/notification"; +import { postService } from "@/src/services/httpServices"; +import { Box, Grid } from "@mui/material"; +import { DataGrid } from "@mui/x-data-grid/DataGrid"; +import React, { useEffect, useState } from "react"; + +export default function BusinessDashboardPage() { + const [loading, setLoading] = useState(false); + const [orders, setOrders] = useState([]); + + const getOrders = async () => { + try { + setLoading(true); + const { isSuccess, data, message } = await postService( + `orders/order-list/`, + {} + ); + if (isSuccess) { + setOrders(data?.data); + } else { + notification(message ? message : "Something went wrong", "error"); + } + } finally { + setLoading(false); + } + }; + + const columns = [ + { + field: "influencer", + headerName: "Influencer", + flex: 1, + }, + { + field: "services", + headerName: "Services", + flex: 1, + }, + { + field: "amount", + headerName: "Total Amount", + flex: 1, + }, + { + field: "status", + headerName: "Status", + flex: 1, + }, + { + field: "action", + headerName: "Action", + flex: 1, + }, + { + field: "rating", + headerName: "Rating", + flex: 1, + }, + ]; + + useEffect(() => { + getOrders(); + }, []); + + return ( + + + + row?.id} + autoHeight + loading={loading} + rows={orders} + columns={columns} + disableRowSelectionOnClick + disableColumnFilter + initialState={{ + pagination: { + paginationModel: { + pageSize: 10, + }, + }, + }} + pageSizeOptions={[5, 10, 15]} + /> + + + + ); +} diff --git a/src/ui/app/influencer/dashboard/page.tsx b/src/ui/app/influencer/dashboard/page.tsx new file mode 100644 index 00000000..d5b2dc01 --- /dev/null +++ b/src/ui/app/influencer/dashboard/page.tsx @@ -0,0 +1,96 @@ +"use client"; + +import { notification } from "@/src/components/shared/notification"; +import { postService } from "@/src/services/httpServices"; +import { Box, Grid } from "@mui/material"; +import { DataGrid } from "@mui/x-data-grid/DataGrid"; +import React, { useEffect, useState } from "react"; + +export default function InfluencerDashboardPage() { + const [loading, setLoading] = useState(false); + const [orders, setOrders] = useState([]); + + const getOrders = async () => { + try { + setLoading(true); + const { isSuccess, data, message } = await postService( + `orders/order-list/`, + {} + ); + if (isSuccess) { + setOrders(data?.data); + } else { + notification(message ? message : "Something went wrong", "error"); + } + } finally { + setLoading(false); + } + }; + + const columns = [ + { + field: "influencer", + headerName: "Influencer", + flex: 1, + }, + { + field: "services", + headerName: "Services", + flex: 1, + }, + { + field: "amount", + headerName: "Total Amount", + flex: 1, + }, + { + field: "status", + headerName: "Status", + flex: 1, + }, + { + field: "action", + headerName: "Action", + flex: 1, + }, + { + field: "rating", + headerName: "Rating", + flex: 1, + }, + ]; + + useEffect(() => { + getOrders(); + }, []); + + return ( + + + + row?.id} + autoHeight + loading={loading} + rows={orders} + columns={columns} + disableRowSelectionOnClick + disableColumnFilter + initialState={{ + pagination: { + paginationModel: { + pageSize: 10, + }, + }, + }} + pageSizeOptions={[5, 10, 15]} + /> + + + + ); +} From 182c52af48de510021d07dd297a7e4b194aa7722 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 17:47:11 +0530 Subject: [PATCH 04/22] Update types.ts with new type definitions --- src/ui/src/utils/types.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/ui/src/utils/types.ts b/src/ui/src/utils/types.ts index 28ad2e8d..c0ba769c 100644 --- a/src/ui/src/utils/types.ts +++ b/src/ui/src/utils/types.ts @@ -59,7 +59,7 @@ type PackageType = { deleted_at: string | null; status: string; publish_date: string; - influencer: string; + influencer: InfleuncerType; currency: CurrencyType; }; @@ -149,7 +149,7 @@ interface Window { type OrderItemType = { service: ServiceType; orderItemMetaData: ServiceMasterMetaDataType[]; -} +}; type WalletProviderType = { id: string; @@ -205,4 +205,17 @@ type OrderType = { description: null; status: string; created_at: Date; +}; + +type OrderFilterType = { + influencers?: string[]; + buyers?: string[]; + status?: string[]; + service_masters?: string[]; + lt_created_at?: string; + gt_created_at?: string; + lt_rating?: string; + gt_rating?: string; + lt_amount?: string; + gt_amount?: string; }; \ No newline at end of file From c47b7bc113b3b26831f05af528ff4686a24c9242 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 17:47:17 +0530 Subject: [PATCH 05/22] Add StatusChip component --- .../components/shared/statusChip/index.tsx | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/ui/src/components/shared/statusChip/index.tsx diff --git a/src/ui/src/components/shared/statusChip/index.tsx b/src/ui/src/components/shared/statusChip/index.tsx new file mode 100644 index 00000000..a6d5ff20 --- /dev/null +++ b/src/ui/src/components/shared/statusChip/index.tsx @@ -0,0 +1,38 @@ +"use client"; + +import { Chip } from "@mui/material"; +import React from "react"; + +type StatusChipProps = { + status: "accepted" | "rejected" | "pending" | "completed" | "draft"; +}; + +const colorMap = { + accepted: "#D2E1FF", + rejected: "#FDEADC", + pending: "#F5F6C9", + completed: "#CBF8D8", + draft: "#F8F8F8", +}; + +const StatusChip: React.FC = ({ status }) => { + function capitalizeFirstLetter(string: string) { + return string.charAt(0).toUpperCase() + string.slice(1); + } + + return ( + + ); +}; + +export default StatusChip; From 86f019b804e126c828cad87b27490ee9686235fd Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 17:47:28 +0530 Subject: [PATCH 06/22] Add svgs --- src/ui/public/svg/acceptedOrders.svg | 15 +++++++++++++++ src/ui/public/svg/completedOrders.svg | 4 ++++ src/ui/public/svg/pendingOrders.svg | 6 ++++++ src/ui/public/svg/rejectedOrders.svg | 15 +++++++++++++++ src/ui/public/svg/totalOrders.svg | 15 +++++++++++++++ 5 files changed, 55 insertions(+) create mode 100644 src/ui/public/svg/acceptedOrders.svg create mode 100644 src/ui/public/svg/completedOrders.svg create mode 100644 src/ui/public/svg/pendingOrders.svg create mode 100644 src/ui/public/svg/rejectedOrders.svg create mode 100644 src/ui/public/svg/totalOrders.svg diff --git a/src/ui/public/svg/acceptedOrders.svg b/src/ui/public/svg/acceptedOrders.svg new file mode 100644 index 00000000..94f5f9b1 --- /dev/null +++ b/src/ui/public/svg/acceptedOrders.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/ui/public/svg/completedOrders.svg b/src/ui/public/svg/completedOrders.svg new file mode 100644 index 00000000..51bec2ef --- /dev/null +++ b/src/ui/public/svg/completedOrders.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/ui/public/svg/pendingOrders.svg b/src/ui/public/svg/pendingOrders.svg new file mode 100644 index 00000000..ecdef9ed --- /dev/null +++ b/src/ui/public/svg/pendingOrders.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/ui/public/svg/rejectedOrders.svg b/src/ui/public/svg/rejectedOrders.svg new file mode 100644 index 00000000..72c2982e --- /dev/null +++ b/src/ui/public/svg/rejectedOrders.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/ui/public/svg/totalOrders.svg b/src/ui/public/svg/totalOrders.svg new file mode 100644 index 00000000..703e73b1 --- /dev/null +++ b/src/ui/public/svg/totalOrders.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + From e4569a22aa0fea9fcc6bc58a7bb3d96e3b9768b5 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 17:47:34 +0530 Subject: [PATCH 07/22] Add order count endpoint to OrderListView --- src/api/marketplace/orders/views.py | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/api/marketplace/orders/views.py b/src/api/marketplace/orders/views.py index 8232b7b2..0b183e48 100644 --- a/src/api/marketplace/orders/views.py +++ b/src/api/marketplace/orders/views.py @@ -66,6 +66,47 @@ def post(self, request): class OrderListView(APIView): authentication_classes = [JWTAuthentication] + def get(self, request): + # Get the role of the user and get the orders of the users. + # Return the count based on the status of the orders + # Response will be like + try: + user = request.user_account + role = request.user_account.role + if role.name == "business_owner": + orders = Order.objects.filter( + Q(buyer=user) + ).distinct() + elif role.name == "influencer": + # For all the order items, there will be a package in it and the package willl have influencer id + order_items = OrderItem.objects.filter( + Q(package__influencer=user) + ).distinct() + orders = Order.objects.filter( + Q(order_item_order_id__in=order_items) + ).distinct() + + approved = orders.filter(status="accepted").count() + pending = orders.filter(status="pending").count() + completed = orders.filter(status="completed").count() + rejected = orders.filter(status="rejected").count() + + return Response( + { + "isSuccess": True, + "data": { + "approved": approved, + "pending": pending, + "completed": completed, + "rejected": rejected + }, + "message": "All Order Count retrieved successfully", + }, + status=status.HTTP_200_OK, + ) + except Exception as e: + return handleServerException(e) + @swagger_auto_schema(request_body=OrderListFilterSerializer) def post(self, request): try: From d0e715d2801df131881de1ffd855861a46258d56 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 17:47:48 +0530 Subject: [PATCH 08/22] Fix formatting and add default bio for Twitter account --- src/ui/app/business/page.tsx | 2 +- src/ui/app/influencer/profile/[id]/page.tsx | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/ui/app/business/page.tsx b/src/ui/app/business/page.tsx index 90ad9b53..7f57ba65 100644 --- a/src/ui/app/business/page.tsx +++ b/src/ui/app/business/page.tsx @@ -21,7 +21,7 @@ const formatTwitterFollowers = (followersCount: any) => { return `${(followersCount / 1000).toFixed(1)}K`; } else { // Leave as is - return followersCount.toString(); + return followersCount?.toString(); } }; diff --git a/src/ui/app/influencer/profile/[id]/page.tsx b/src/ui/app/influencer/profile/[id]/page.tsx index cc4d320a..1d387979 100644 --- a/src/ui/app/influencer/profile/[id]/page.tsx +++ b/src/ui/app/influencer/profile/[id]/page.tsx @@ -232,7 +232,7 @@ const ProfileLayout = ({ @{currentUser?.twitter_account?.user_name} - {" "} {currentUser?.twitter_account?.location} - - {currentUser?.twitter_account?.url && ( + */} + {/* {currentUser?.twitter_account?.url && ( - )} + )} */} {/* {params?.id !== loggedInUser?.id && ( - {currentUser?.twitter_account?.description} + {currentUser?.twitter_account?.description + ? currentUser?.twitter_account?.description + : "No Bio Added"} From 72bcc9810edfe421286781083c1f92b308a605f0 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 17:47:56 +0530 Subject: [PATCH 09/22] Fix service price calculation and update conditional rendering --- .../profile/[id]/_services/index.tsx | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/ui/app/influencer/profile/[id]/_services/index.tsx b/src/ui/app/influencer/profile/[id]/_services/index.tsx index e8b06ee3..3067836f 100644 --- a/src/ui/app/influencer/profile/[id]/_services/index.tsx +++ b/src/ui/app/influencer/profile/[id]/_services/index.tsx @@ -279,10 +279,10 @@ const Services = ({ // Take care of type conversion let service = { ...serviceItem }; service.platform_price = ( - parseFloat(service.price.toString()) + - parseFloat(service.price.toString()) * - (parseFloat(service.platform_fees.toString()) / 100) - ).toString(); + parseFloat(service?.price?.toString()) + + parseFloat(service?.price?.toString()) * + (parseFloat(service?.platform_fees?.toString()) / 100) + )?.toString(); return ( {service?.package?.name} - {service.package.influencer === loggedInUser?.id && ( + {service?.package?.influencer?.id === + loggedInUser?.id && ( - {service.package.influencer === loggedInUser?.id ? ( + {service?.package?.influencer?.id === + loggedInUser?.id ? ( - {service.package.influencer === loggedInUser?.id ? ( + {service?.package?.influencer?.id === + loggedInUser?.id ? ( Add to Cart @@ -526,7 +530,8 @@ const Services = ({ addItemToCart(service); }} disabled={ - service.package.influencer === loggedInUser?.id + service?.package?.influencer?.id === + loggedInUser?.id } > Buy Now From 40a648a1ff099e962288d6818a32962942cd4ead Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 17:48:39 +0530 Subject: [PATCH 10/22] API integration for dashboard page --- src/ui/app/business/dashboard/page.tsx | 393 ++++++++++++++++++++++++- 1 file changed, 381 insertions(+), 12 deletions(-) diff --git a/src/ui/app/business/dashboard/page.tsx b/src/ui/app/business/dashboard/page.tsx index 596345a5..ef3d50a7 100644 --- a/src/ui/app/business/dashboard/page.tsx +++ b/src/ui/app/business/dashboard/page.tsx @@ -1,24 +1,71 @@ "use client"; import { notification } from "@/src/components/shared/notification"; -import { postService } from "@/src/services/httpServices"; -import { Box, Grid } from "@mui/material"; -import { DataGrid } from "@mui/x-data-grid/DataGrid"; +import { getService, postService } from "@/src/services/httpServices"; +import { + Box, + Grid, + IconButton, + Link, + Pagination, + Rating, + Tooltip, + Typography, +} from "@mui/material"; +import { + DataGrid, + GridRenderCellParams, + GridTreeNodeWithRender, +} from "@mui/x-data-grid"; import React, { useEffect, useState } from "react"; +import NextLink from "next/link"; +import EditNoteIcon from "@mui/icons-material/EditNote"; +import StatusChip from "@/src/components/shared/statusChip"; +import Image from "next/image"; +import totalOrders from "@/public/svg/totalOrders.svg"; +import acceptedOrders from "@/public/svg/acceptedOrders.svg"; +import completedOrders from "@/public/svg/completedOrders.svg"; +import pendingOrders from "@/public/svg/pendingOrders.svg"; +import rejectedOrders from "@/public/svg/rejectedOrders.svg"; export default function BusinessDashboardPage() { const [loading, setLoading] = useState(false); const [orders, setOrders] = useState([]); + const [selectedCard, setSelectedCard] = React.useState(0); + const [filters, setFilters] = React.useState({ + status: ["accepted"], + }); + const [orderCount, setOrderCount] = React.useState({ + approved: 0, + completed: 0, + pending: 0, + rejected: 0, + }); + const [pagination, setPagination] = React.useState({ + total_data_count: 0, + total_page_count: 0, + current_page_number: 1, + current_page_size: 5, + }); const getOrders = async () => { try { setLoading(true); const { isSuccess, data, message } = await postService( `orders/order-list/`, - {} + { + page_number: pagination.current_page_number, + page_size: pagination.current_page_size, + ...filters, + } ); if (isSuccess) { setOrders(data?.data); + setPagination({ + ...pagination, + total_data_count: data?.pagination?.total_data_count, + total_page_count: data?.pagination?.total_page_count, + }); } else { notification(message ? message : "Something went wrong", "error"); } @@ -27,43 +74,268 @@ export default function BusinessDashboardPage() { } }; + const getOrdersCount = async () => { + try { + setLoading(true); + const { isSuccess, data, message } = await getService( + `orders/order-list/` + ); + if (isSuccess) { + setOrderCount({ + approved: data?.data?.approved, + completed: data?.data?.completed, + pending: data?.data?.pending, + rejected: data?.data?.rejected, + }); + } else { + notification(message ? message : "Something went wrong", "error"); + } + } finally { + setLoading(false); + } + }; + + const handlePaginationChange = ( + event: React.ChangeEvent, + page: number + ) => { + setPagination((prev) => ({ + ...prev, + current_page_number: page, + })); + }; + + const statusCards = [ + { + label: "Total Orders", + onClick: () => { + setFilters((prev) => ({ + ...prev, + status: ["accepted", "rejected", "pending", "completed"], + })); + setSelectedCard(0); + }, + value: 0, + icon: totalOrders, + }, + { + label: "Accepted Orders", + onClick: () => { + setFilters((prev) => ({ + ...prev, + status: ["accepted"], + })); + setSelectedCard(1); + }, + value: 1, + icon: acceptedOrders, + }, + { + label: "Completed Orders", + onClick: () => { + setFilters((prev) => ({ + ...prev, + status: ["completed"], + })); + setSelectedCard(2); + }, + value: 2, + icon: completedOrders, + }, + { + label: "Pending Orders", + onClick: () => { + setFilters((prev) => ({ + ...prev, + status: ["pending"], + })); + setSelectedCard(3); + }, + value: 3, + icon: pendingOrders, + }, + { + label: "Rejected Orders", + onClick: () => { + setFilters((prev) => ({ + ...prev, + status: ["rejected"], + })); + setSelectedCard(4); + }, + value: 4, + icon: rejectedOrders, + }, + ]; + const columns = [ { field: "influencer", headerName: "Influencer", flex: 1, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + const influencer = + params?.row?.order_item_order_id[0]?.package?.influencer; + return ( + + + @{influencer?.twitter_account?.user_name} + + + ); + }, }, { field: "services", headerName: "Services", flex: 1, + minWidth: 200, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + const services = params?.row?.order_item_order_id; + // create a string of services + let servicesString = ""; + services?.map((service: ServiceType, index: number) => { + servicesString += service?.service_master?.name; + if (index + 1 !== services?.length) { + servicesString += ", "; + } + }); + return ( + + + {servicesString?.length > 50 + ? `${servicesString?.substring(0, 50)}...` + : servicesString} + + + ); + }, }, { field: "amount", headerName: "Total Amount", flex: 1, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + return ( + + {params?.row?.amount} {params?.row?.currency?.symbol} + + ); + }, }, { field: "status", headerName: "Status", flex: 1, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + return ; + }, }, { field: "action", headerName: "Action", flex: 1, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + return ( + + + + + + + + ); + }, }, { field: "rating", headerName: "Rating", flex: 1, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + return ( + + + + ); + }, }, ]; useEffect(() => { - getOrders(); + getOrdersCount(); }, []); + useEffect(() => { + getOrders(); + }, [pagination.current_page_number, pagination.current_page_size, filters]); + return ( + + + {statusCards.map((card, index) => { + return ( + + + + {card?.value === 0 + ? orderCount?.approved + + orderCount?.completed + + orderCount?.pending + + orderCount?.rejected + : card?.value === 1 + ? orderCount?.approved + : card?.value === 2 + ? orderCount?.completed + : card?.value === 3 + ? orderCount?.pending + : card?.value === 4 + ? orderCount?.rejected + : 0} + + + {card.label} + + {card.label} + + + + + ); + })} + + + + {/* Filters bar */} + row?.id} @@ -80,16 +430,35 @@ export default function BusinessDashboardPage() { columns={columns} disableRowSelectionOnClick disableColumnFilter - initialState={{ - pagination: { - paginationModel: { - pageSize: 10, - }, - }, + hideFooter + getRowHeight={(params) => 100} + sx={{ + backgroundColor: "#fff", }} - pageSizeOptions={[5, 10, 15]} /> + + + + + ); From 07ac782ab39b74d8d288920b3a5a066503ffc449 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 18:33:54 +0530 Subject: [PATCH 11/22] Add StatusCard component --- .../dashboardComponents/statusCard/index.tsx | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/ui/src/components/dashboardComponents/statusCard/index.tsx diff --git a/src/ui/src/components/dashboardComponents/statusCard/index.tsx b/src/ui/src/components/dashboardComponents/statusCard/index.tsx new file mode 100644 index 00000000..4969a0f6 --- /dev/null +++ b/src/ui/src/components/dashboardComponents/statusCard/index.tsx @@ -0,0 +1,94 @@ +"use client"; + +import { Box, Typography } from "@mui/material"; +import React from "react"; +import Image from "next/image"; + +type StatusCardProps = { + card: { + label: string; + value: number; + icon: string; + onClick: () => void; + }; + selectedCard: number; + orderCount: { + accepted: number; + completed: number; + pending: number; + rejected: number; + }; +}; + +export default function StatusCard({ + card, + selectedCard, + orderCount, +}: StatusCardProps) { + return ( + + + {card?.value === 0 + ? orderCount?.accepted + + orderCount?.completed + + orderCount?.pending + + orderCount?.rejected + : card?.value === 1 + ? orderCount?.accepted + : card?.value === 2 + ? orderCount?.completed + : card?.value === 3 + ? orderCount?.pending + : card?.value === 4 + ? orderCount?.rejected + : 0} + + + {card.label} + + {card.label} + + + + ); +} From f844244f8ffa48c27a3fda7568f722002660c7ae Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 18:34:06 +0530 Subject: [PATCH 12/22] Add influencer dashboard page --- src/ui/app/influencer/dashboard/page.tsx | 302 +++++++++++++++++++++-- 1 file changed, 282 insertions(+), 20 deletions(-) diff --git a/src/ui/app/influencer/dashboard/page.tsx b/src/ui/app/influencer/dashboard/page.tsx index d5b2dc01..bd8a8914 100644 --- a/src/ui/app/influencer/dashboard/page.tsx +++ b/src/ui/app/influencer/dashboard/page.tsx @@ -1,24 +1,71 @@ "use client"; +import acceptedOrders from "@/public/svg/acceptedOrders.svg"; +import completedOrders from "@/public/svg/completedOrders.svg"; +import pendingOrders from "@/public/svg/pendingOrders.svg"; +import rejectedOrders from "@/public/svg/rejectedOrders.svg"; +import totalOrders from "@/public/svg/totalOrders.svg"; +import StatusCard from "@/src/components/dashboardComponents/statusCard"; import { notification } from "@/src/components/shared/notification"; -import { postService } from "@/src/services/httpServices"; -import { Box, Grid } from "@mui/material"; -import { DataGrid } from "@mui/x-data-grid/DataGrid"; +import StatusChip from "@/src/components/shared/statusChip"; +import { getService, postService } from "@/src/services/httpServices"; +import EditNoteIcon from "@mui/icons-material/EditNote"; +import { + Box, + Grid, + IconButton, + Link, + Pagination, + Rating, + Tooltip, + Typography, +} from "@mui/material"; +import { + DataGrid, + GridRenderCellParams, + GridTreeNodeWithRender, +} from "@mui/x-data-grid"; +import NextLink from "next/link"; import React, { useEffect, useState } from "react"; -export default function InfluencerDashboardPage() { +export default function BusinessDashboardPage() { const [loading, setLoading] = useState(false); const [orders, setOrders] = useState([]); + const [selectedCard, setSelectedCard] = React.useState(0); + const [filters, setFilters] = React.useState({ + status: ["accepted", "rejected", "completed"], + }); + const [orderCount, setOrderCount] = React.useState({ + accepted: 0, + completed: 0, + pending: 0, + rejected: 0, + }); + const [pagination, setPagination] = React.useState({ + total_data_count: 0, + total_page_count: 0, + current_page_number: 1, + current_page_size: 5, + }); const getOrders = async () => { try { setLoading(true); const { isSuccess, data, message } = await postService( `orders/order-list/`, - {} + { + page_number: pagination.current_page_number, + page_size: pagination.current_page_size, + ...filters, + } ); if (isSuccess) { setOrders(data?.data); + setPagination({ + ...pagination, + total_data_count: data?.pagination?.total_data_count, + total_page_count: data?.pagination?.total_page_count, + }); } else { notification(message ? message : "Something went wrong", "error"); } @@ -27,43 +74,221 @@ export default function InfluencerDashboardPage() { } }; + const getOrdersCount = async () => { + try { + setLoading(true); + const { isSuccess, data, message } = await getService( + `orders/order-list/` + ); + if (isSuccess) { + setOrderCount({ + accepted: data?.data?.accepted, + completed: data?.data?.completed, + pending: data?.data?.pending, + rejected: data?.data?.rejected, + }); + } else { + notification(message ? message : "Something went wrong", "error"); + } + } finally { + setLoading(false); + } + }; + + const handlePaginationChange = ( + event: React.ChangeEvent, + page: number + ) => { + setPagination((prev) => ({ + ...prev, + current_page_number: page, + })); + }; + + const statusCards = [ + { + label: "Total Orders", + onClick: () => { + setFilters((prev) => ({ + ...prev, + status: ["accepted", "rejected", "completed"], + })); + setSelectedCard(0); + }, + value: 0, + icon: totalOrders, + }, + { + label: "Accepted Orders", + onClick: () => { + setFilters((prev) => ({ + ...prev, + status: ["accepted"], + })); + setSelectedCard(1); + }, + value: 1, + icon: acceptedOrders, + }, + { + label: "Completed Orders", + onClick: () => { + setFilters((prev) => ({ + ...prev, + status: ["completed"], + })); + setSelectedCard(2); + }, + value: 2, + icon: completedOrders, + }, + { + label: "Rejected Orders", + onClick: () => { + setFilters((prev) => ({ + ...prev, + status: ["rejected"], + })); + setSelectedCard(4); + }, + value: 4, + icon: rejectedOrders, + }, + ]; + const columns = [ { - field: "influencer", - headerName: "Influencer", + field: "buyer", + headerName: "Business", flex: 1, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + return ( + + + {params?.row?.buyer?.username} + + + ); + }, }, { field: "services", headerName: "Services", flex: 1, + minWidth: 200, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + const services = params?.row?.order_item_order_id; + // create a string of services + let servicesString = ""; + services?.map((service: ServiceType, index: number) => { + servicesString += service?.service_master?.name; + if (index + 1 !== services?.length) { + servicesString += ", "; + } + }); + return ( + + + {servicesString?.length > 50 + ? `${servicesString?.substring(0, 50)}...` + : servicesString} + + + ); + }, }, { field: "amount", headerName: "Total Amount", flex: 1, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + return ( + + {params?.row?.amount} {params?.row?.currency?.symbol} + + ); + }, }, { field: "status", headerName: "Status", flex: 1, - }, - { - field: "action", - headerName: "Action", - flex: 1, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + return ; + }, }, { field: "rating", headerName: "Rating", flex: 1, + renderCell: ( + params: GridRenderCellParams + ): React.ReactNode => { + return ( + + + + ); + }, }, ]; useEffect(() => { - getOrders(); + getOrdersCount(); }, []); + useEffect(() => { + getOrders(); + }, [pagination.current_page_number, pagination.current_page_size, filters]); + return ( + + + {statusCards.map((card, index) => { + return ( + + + + ); + })} + + + + {/* Filters bar */} + row?.id} @@ -80,16 +323,35 @@ export default function InfluencerDashboardPage() { columns={columns} disableRowSelectionOnClick disableColumnFilter - initialState={{ - pagination: { - paginationModel: { - pageSize: 10, - }, - }, + hideFooter + getRowHeight={(params) => 100} + sx={{ + backgroundColor: "#fff", }} - pageSizeOptions={[5, 10, 15]} /> + + + + + ); From 4504fdf806c528ce5823ea730afb377597a92e82 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 18:34:12 +0530 Subject: [PATCH 13/22] Refactor dashboard page component --- src/ui/app/business/dashboard/page.tsx | 92 +++++--------------------- 1 file changed, 16 insertions(+), 76 deletions(-) diff --git a/src/ui/app/business/dashboard/page.tsx b/src/ui/app/business/dashboard/page.tsx index ef3d50a7..643d25f7 100644 --- a/src/ui/app/business/dashboard/page.tsx +++ b/src/ui/app/business/dashboard/page.tsx @@ -1,7 +1,15 @@ "use client"; +import acceptedOrders from "@/public/svg/acceptedOrders.svg"; +import completedOrders from "@/public/svg/completedOrders.svg"; +import pendingOrders from "@/public/svg/pendingOrders.svg"; +import rejectedOrders from "@/public/svg/rejectedOrders.svg"; +import totalOrders from "@/public/svg/totalOrders.svg"; +import StatusCard from "@/src/components/dashboardComponents/statusCard"; import { notification } from "@/src/components/shared/notification"; +import StatusChip from "@/src/components/shared/statusChip"; import { getService, postService } from "@/src/services/httpServices"; +import EditNoteIcon from "@mui/icons-material/EditNote"; import { Box, Grid, @@ -17,16 +25,8 @@ import { GridRenderCellParams, GridTreeNodeWithRender, } from "@mui/x-data-grid"; -import React, { useEffect, useState } from "react"; import NextLink from "next/link"; -import EditNoteIcon from "@mui/icons-material/EditNote"; -import StatusChip from "@/src/components/shared/statusChip"; -import Image from "next/image"; -import totalOrders from "@/public/svg/totalOrders.svg"; -import acceptedOrders from "@/public/svg/acceptedOrders.svg"; -import completedOrders from "@/public/svg/completedOrders.svg"; -import pendingOrders from "@/public/svg/pendingOrders.svg"; -import rejectedOrders from "@/public/svg/rejectedOrders.svg"; +import React, { useEffect, useState } from "react"; export default function BusinessDashboardPage() { const [loading, setLoading] = useState(false); @@ -36,7 +36,7 @@ export default function BusinessDashboardPage() { status: ["accepted"], }); const [orderCount, setOrderCount] = React.useState({ - approved: 0, + accepted: 0, completed: 0, pending: 0, rejected: 0, @@ -82,7 +82,7 @@ export default function BusinessDashboardPage() { ); if (isSuccess) { setOrderCount({ - approved: data?.data?.approved, + accepted: data?.data?.accepted, completed: data?.data?.completed, pending: data?.data?.pending, rejected: data?.data?.rejected, @@ -348,71 +348,11 @@ export default function BusinessDashboardPage() { {statusCards.map((card, index) => { return ( - - - {card?.value === 0 - ? orderCount?.approved + - orderCount?.completed + - orderCount?.pending + - orderCount?.rejected - : card?.value === 1 - ? orderCount?.approved - : card?.value === 2 - ? orderCount?.completed - : card?.value === 3 - ? orderCount?.pending - : card?.value === 4 - ? orderCount?.rejected - : 0} - - - {card.label} - - {card.label} - - - + ); })} From 60fd22f18cd1d67c1bfb6744b43ca5f4b7cc23e3 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 9 Jan 2024 18:34:19 +0530 Subject: [PATCH 14/22] Update variable name in OrderListView --- src/api/marketplace/orders/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/marketplace/orders/views.py b/src/api/marketplace/orders/views.py index 0b183e48..7e068cb4 100644 --- a/src/api/marketplace/orders/views.py +++ b/src/api/marketplace/orders/views.py @@ -86,7 +86,7 @@ def get(self, request): Q(order_item_order_id__in=order_items) ).distinct() - approved = orders.filter(status="accepted").count() + accepted = orders.filter(status="accepted").count() pending = orders.filter(status="pending").count() completed = orders.filter(status="completed").count() rejected = orders.filter(status="rejected").count() @@ -95,7 +95,7 @@ def get(self, request): { "isSuccess": True, "data": { - "approved": approved, + "accepted": accepted, "pending": pending, "completed": completed, "rejected": rejected From 35ed1b996a95aab6e873648d48a809ca9ffdf63e Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 10 Jan 2024 11:07:39 +0530 Subject: [PATCH 15/22] Add order_by field to OrderListFilterSerializer --- src/api/marketplace/orders/serializers.py | 1 + src/api/marketplace/orders/views.py | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/api/marketplace/orders/serializers.py b/src/api/marketplace/orders/serializers.py index ed575bad..1ebb6308 100644 --- a/src/api/marketplace/orders/serializers.py +++ b/src/api/marketplace/orders/serializers.py @@ -40,6 +40,7 @@ class OrderListFilterSerializer(serializers.Serializer): gt_rating = serializers.FloatField(required=False) lt_amount = serializers.FloatField(required=False) gt_amount = serializers.FloatField(required=False) + order_by = serializers.CharField(required=False) class OrderSerializer(serializers.ModelSerializer): diff --git a/src/api/marketplace/orders/views.py b/src/api/marketplace/orders/views.py index 7e068cb4..65618f08 100644 --- a/src/api/marketplace/orders/views.py +++ b/src/api/marketplace/orders/views.py @@ -1,3 +1,4 @@ +from api.marketplace.accounts.models import Wallet from marketplace.authentication import JWTAuthentication from marketplace.services import ( Pagination, @@ -48,6 +49,13 @@ def post(self, request): serializer = CreateOrderSerializer( data=request.data, context={'request': request}) if serializer.is_valid(): + # Check that the requested account has atleast one wallet connected + # If not, then return error + # If yes, then create the order + wallets = Wallet.objects.filter( + user_id=self.request.user_account) + if wallets.count() == 0: + return handleBadRequest({"wallet": "No wallet is connected to the account. Please add a wallet to the account."}) serializer.save() return Response( { @@ -157,6 +165,9 @@ def post(self, request): if 'gt_rating' in filters: orders = orders.filter(review__rating__gt=filters['gt_rating']) + if 'order_by' in filters: + orders = orders.order_by(filters['order_by']) + pagination = Pagination(orders, request) serializer = OrderSerializer(pagination.getData(), many=True) return Response( From 482c190d6261fcf6b94dcd40da4809dad436cebf Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 10 Jan 2024 11:08:03 +0530 Subject: [PATCH 16/22] Add truncateWalletAddress function and use it in serializers and views --- src/api/marketplace/accounts/serializers.py | 3 ++- src/api/marketplace/accounts/views.py | 3 ++- src/api/marketplace/marketplace/services.py | 23 ++++++++++++++++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/api/marketplace/accounts/serializers.py b/src/api/marketplace/accounts/serializers.py index a850592c..0ded4cfb 100644 --- a/src/api/marketplace/accounts/serializers.py +++ b/src/api/marketplace/accounts/serializers.py @@ -1,4 +1,5 @@ from unicodedata import category +from marketplace.services import truncateWalletAddress from rest_framework import serializers from uuid import UUID @@ -237,7 +238,7 @@ class WalletSerializer(serializers.ModelSerializer): def get_wallet_address_id(self, wallet): if wallet.wallet_address_id: - return wallet.wallet_address_id[:4] + "..." + wallet.wallet_address_id[-4:] + return truncateWalletAddress(wallet.wallet_address_id) return None class Meta: diff --git a/src/api/marketplace/accounts/views.py b/src/api/marketplace/accounts/views.py index fbd52ce6..850057bd 100644 --- a/src/api/marketplace/accounts/views.py +++ b/src/api/marketplace/accounts/views.py @@ -12,6 +12,7 @@ handleNotFound, handleDeleteNotAllowed, JWTOperations, + truncateWalletAddress, ) from drf_yasg.utils import swagger_auto_schema from django.core.exceptions import ValidationError @@ -1198,7 +1199,7 @@ def create_wallet(self, wallet_address_id, wallet_provider, wallet_network): def create_user(self, wallet_address_id, role): try: user = User.objects.create( - username=wallet_address_id, + username=truncateWalletAddress(wallet_address_id), role=Role.objects.get(name=role), ) user.save() diff --git a/src/api/marketplace/marketplace/services.py b/src/api/marketplace/marketplace/services.py index 9cdebaba..0c3aae03 100644 --- a/src/api/marketplace/marketplace/services.py +++ b/src/api/marketplace/marketplace/services.py @@ -7,7 +7,7 @@ from rest_framework.response import Response from rest_framework import status from django.core.mail import send_mail -# from .logger import custom_logger +import json # logger = custom_logger() import logging @@ -112,21 +112,32 @@ def getPageInfo(self): def handleServerException(e): logger.error(e) + try: + json.dumps(str(e)) # Try to serialize the error + error = str(e) + except TypeError: + error = 'Non-serializable error' + return Response({ 'isSuccess': False, 'data': None, 'message': 'Internal Server Error', - 'errors': e, + 'errors': error, }, status=status.HTTP_500_INTERNAL_SERVER_ERROR) def handleBadRequest(e): logger.error(e) + try: + json.dumps(str(e)) # Try to serialize the error + error = str(e) + except TypeError: + error = 'Non-serializable error' return Response({ 'isSuccess': False, 'data': None, 'message': 'Bad Request', - 'errors': e, + 'errors': error, }, status=status.HTTP_400_BAD_REQUEST) def handleNotFound(resource_name): @@ -153,3 +164,9 @@ def sendEmail(self, subject, message, from_email, recipient_list): send_mail(subject, message, from_email, recipient_list) except Exception as e: pass + + +def truncateWalletAddress(address): + if address: + return address[:4] + "..." + address[-4:] + return None From 4a12efc5d004e1d4573920645035c95de137d9d9 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 10 Jan 2024 12:30:04 +0530 Subject: [PATCH 17/22] Add @svgr/webpack dependency --- src/ui/package-lock.json | 764 +++++++++++++++++++++++++++++++-------- src/ui/package.json | 1 + 2 files changed, 606 insertions(+), 159 deletions(-) diff --git a/src/ui/package-lock.json b/src/ui/package-lock.json index 72fabfe1..9611f8cf 100644 --- a/src/ui/package-lock.json +++ b/src/ui/package-lock.json @@ -21,6 +21,7 @@ "@solana/wallet-adapter-react": "^0.15.35", "@solana/wallet-adapter-wallets": "^0.19.25", "@solana/web3.js": "^1.88.0", + "@svgr/webpack": "^8.1.0", "axios": "^1.6.1", "dayjs": "^1.11.10", "dotenv": "^16.3.1", @@ -55,7 +56,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -149,7 +149,6 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -158,7 +157,6 @@ "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", @@ -187,14 +185,12 @@ "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==", - "peer": true + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/@babel/core/node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "peer": true, "bin": { "json5": "lib/cli.js" }, @@ -206,7 +202,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -215,7 +210,6 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "peer": true, "dependencies": { "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", @@ -230,7 +224,6 @@ "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==", - "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -242,7 +235,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "peer": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -254,7 +246,6 @@ "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==", - "peer": true, "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-validator-option": "^7.23.5", @@ -270,7 +261,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "peer": true, "dependencies": { "yallist": "^3.0.2" } @@ -279,7 +269,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -287,14 +276,12 @@ "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "peer": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz", "integrity": "sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -317,7 +304,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -326,7 +312,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -343,7 +328,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -352,7 +336,6 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", - "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -368,7 +351,6 @@ "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==", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -377,7 +359,6 @@ "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==", - "peer": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -390,7 +371,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -402,7 +382,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "peer": true, "dependencies": { "@babel/types": "^7.23.0" }, @@ -425,7 +404,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -444,7 +422,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -456,7 +433,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -465,7 +441,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -482,7 +457,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.22.15", @@ -499,7 +473,6 @@ "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==", - "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -511,7 +484,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -523,7 +495,6 @@ "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==", - "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -551,7 +522,6 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -560,7 +530,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "peer": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -574,7 +543,6 @@ "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.7.tgz", "integrity": "sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==", - "peer": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/traverse": "^7.23.7", @@ -665,7 +633,6 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "peer": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -677,7 +644,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -692,7 +658,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -709,7 +674,6 @@ "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", - "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5" @@ -849,7 +813,6 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "peer": true, "engines": { "node": ">=6.9.0" }, @@ -861,7 +824,6 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -873,7 +835,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -885,7 +846,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -900,7 +860,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -927,7 +886,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -954,7 +912,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -969,7 +926,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -984,7 +940,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -996,7 +951,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1008,7 +962,6 @@ "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==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1023,7 +976,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1035,7 +987,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1047,7 +998,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1059,7 +1009,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1071,7 +1020,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1083,7 +1031,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1095,7 +1042,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1110,7 +1056,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1125,7 +1070,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1140,7 +1084,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1156,7 +1099,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1171,7 +1113,6 @@ "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz", "integrity": "sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==", - "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -1189,7 +1130,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", - "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -1206,7 +1146,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1221,7 +1160,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1236,7 +1174,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1252,7 +1189,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -1269,7 +1205,6 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.15", @@ -1292,7 +1227,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "peer": true, "engines": { "node": ">=4" } @@ -1301,7 +1235,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/template": "^7.22.15" @@ -1317,7 +1250,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1332,7 +1264,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1348,7 +1279,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1363,7 +1293,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1379,7 +1308,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", - "peer": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1395,7 +1323,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1427,7 +1354,6 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1443,7 +1369,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", - "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-function-name": "^7.23.0", @@ -1460,7 +1385,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1476,7 +1400,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1491,7 +1414,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1507,7 +1429,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1522,7 +1443,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", - "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -1538,7 +1458,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", - "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", @@ -1555,7 +1474,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", - "peer": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -1573,7 +1491,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", - "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -1589,7 +1506,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1605,7 +1521,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1620,7 +1535,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1636,7 +1550,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1652,7 +1565,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", - "peer": true, "dependencies": { "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", @@ -1671,7 +1583,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20" @@ -1687,7 +1598,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1703,7 +1613,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1720,7 +1629,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1735,7 +1643,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", - "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1751,7 +1658,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", @@ -1769,7 +1675,20 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", - "peer": 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-constant-elements": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz", + "integrity": "sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1784,7 +1703,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1799,7 +1717,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-module-imports": "^7.22.15", @@ -1814,6 +1731,20 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^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", @@ -1844,11 +1775,25 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" @@ -1864,7 +1809,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1908,7 +1852,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1923,7 +1866,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1939,7 +1881,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1954,7 +1895,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1969,7 +1909,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1984,7 +1923,6 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.23.6", @@ -2002,7 +1940,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -2017,7 +1954,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -2033,7 +1969,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -2049,7 +1984,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", - "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -2065,7 +1999,6 @@ "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.7.tgz", "integrity": "sha512-SY27X/GtTz/L4UryMNJ6p4fH4nsgWbz84y9FE0bQeWJP6O5BhgVCt53CotQKHCOeXJel8VyhlhujhlltKms/CA==", - "peer": true, "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", @@ -2159,7 +2092,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -2185,7 +2117,6 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -2195,11 +2126,29 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/preset-react": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/preset-typescript": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.15", @@ -2236,8 +2185,7 @@ "node_modules/@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "peer": true + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { "version": "7.23.5", @@ -2254,7 +2202,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "peer": true, "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -2268,7 +2215,6 @@ "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", - "peer": true, "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", @@ -2289,7 +2235,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "peer": true, "engines": { "node": ">=4" } @@ -2845,7 +2790,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "peer": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2859,7 +2803,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "peer": true, "engines": { "node": ">=6.0.0" } @@ -2868,7 +2811,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "peer": true, "engines": { "node": ">=6.0.0" } @@ -2886,14 +2828,12 @@ "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==", - "peer": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.20", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -5816,6 +5756,307 @@ "@stablelib/wipe": "^1.0.1" } }, + "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/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/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo/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/plugin-svgo/node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@svgr/webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "dependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, "node_modules/@swc/helpers": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", @@ -6252,6 +6493,14 @@ "bs58": "^5.0.0" } }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", @@ -7174,8 +7423,7 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/aria-query": { "version": "5.3.0", @@ -7485,7 +7733,6 @@ "version": "0.4.7", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", - "peer": true, "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.4.4", @@ -7499,7 +7746,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "peer": true, "bin": { "semver": "bin/semver.js" } @@ -7508,7 +7754,6 @@ "version": "0.8.7", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", - "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.4", "core-js-compat": "^3.33.1" @@ -7521,7 +7766,6 @@ "version": "0.5.4", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", - "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.4" }, @@ -7745,6 +7989,11 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, "node_modules/borsh": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", @@ -7881,7 +8130,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001565", "electron-to-chromium": "^1.4.601", @@ -8081,7 +8329,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "peer": true, "engines": { "node": ">=10" }, @@ -8539,7 +8786,6 @@ "version": "3.35.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.0.tgz", "integrity": "sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==", - "peer": true, "dependencies": { "browserslist": "^4.22.2" }, @@ -8698,6 +8944,74 @@ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", "peer": true }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + }, "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", @@ -8966,6 +9280,66 @@ "csstype": "^3.0.2" } }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "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/dotenv": { "version": "16.3.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", @@ -9007,8 +9381,7 @@ "node_modules/electron-to-chromium": { "version": "1.4.623", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.623.tgz", - "integrity": "sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==", - "peer": true + "integrity": "sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -9105,6 +9478,17 @@ "node": ">=10.13.0" } }, + "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/envinfo": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", @@ -9279,7 +9663,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "peer": true, "engines": { "node": ">=6" } @@ -10295,7 +10678,6 @@ "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==", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -11638,7 +12020,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -11724,7 +12105,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "peer": true, "bin": { "jsesc": "bin/jsesc" }, @@ -12024,8 +12404,7 @@ "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==", - "peer": true + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "node_modules/lodash.defaults": { "version": "4.2.0", @@ -12261,6 +12640,14 @@ "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": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -12313,6 +12700,11 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, "node_modules/memoize-one": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", @@ -13461,6 +13853,15 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "peer": 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/nocache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", @@ -13538,8 +13939,7 @@ "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==", - "peer": true + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/node-stream-zip": { "version": "1.15.0", @@ -13612,6 +14012,17 @@ "node": ">=4" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/nullthrows": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", @@ -14872,14 +15283,12 @@ "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "peer": true + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "peer": true, "dependencies": { "regenerate": "^1.4.2" }, @@ -14896,7 +15305,6 @@ "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.8.4" } @@ -14922,7 +15330,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "peer": true, "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -14939,7 +15346,6 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "peer": true, "dependencies": { "jsesc": "~0.5.0" }, @@ -14951,7 +15357,6 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "peer": true, "bin": { "jsesc": "bin/jsesc" } @@ -15613,6 +16018,15 @@ "npm": ">= 3.0.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": "4.7.3", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.3.tgz", @@ -16057,6 +16471,43 @@ "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/svgo": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", + "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -16398,7 +16849,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -16531,7 +16982,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "peer": true, "engines": { "node": ">=4" } @@ -16540,7 +16990,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "peer": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -16553,7 +17002,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "peer": true, "engines": { "node": ">=4" } @@ -16562,7 +17010,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "peer": true, "engines": { "node": ">=4" } @@ -16711,7 +17158,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" diff --git a/src/ui/package.json b/src/ui/package.json index 3af704b3..def0722a 100644 --- a/src/ui/package.json +++ b/src/ui/package.json @@ -22,6 +22,7 @@ "@solana/wallet-adapter-react": "^0.15.35", "@solana/wallet-adapter-wallets": "^0.19.25", "@solana/web3.js": "^1.88.0", + "@svgr/webpack": "^8.1.0", "axios": "^1.6.1", "dayjs": "^1.11.10", "dotenv": "^16.3.1", From 6bfbb2f3aea4f55937088a5ee3681b4cfdff135b Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 10 Jan 2024 12:30:11 +0530 Subject: [PATCH 18/22] Update import statement for Wallet model --- src/api/marketplace/orders/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/marketplace/orders/views.py b/src/api/marketplace/orders/views.py index 65618f08..accb6637 100644 --- a/src/api/marketplace/orders/views.py +++ b/src/api/marketplace/orders/views.py @@ -1,4 +1,4 @@ -from api.marketplace.accounts.models import Wallet +from accounts.models import Wallet from marketplace.authentication import JWTAuthentication from marketplace.services import ( Pagination, From 45e1681c95f9d2d5f0d67e9562115229ca2110a0 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 10 Jan 2024 12:30:19 +0530 Subject: [PATCH 19/22] Add SVG icon support to webpack configuration --- src/ui/next.config.js | 18 ++++++++++++++++++ src/ui/src/utils/types.ts | 10 +++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/ui/next.config.js b/src/ui/next.config.js index 28d65b32..367648df 100644 --- a/src/ui/next.config.js +++ b/src/ui/next.config.js @@ -1,5 +1,23 @@ /** @type {import('next').NextConfig} */ const nextConfig = { + webpack(config) { + // Grab the existing rule that handles SVG imports + const nextImageLoaderRule = config.module.rules.find((rule) => + rule.test?.test?.(".svg"), + ); + + nextImageLoaderRule.resourceQuery = { + not: [...nextImageLoaderRule.resourceQuery.not, /icon/], + }; + + config.module.rules.push({ + issuer: nextImageLoaderRule.issuer, + resourceQuery: /icon/, // *.svg?icon + use: ["@svgr/webpack"], + }); + + return config; + }, } module.exports = nextConfig diff --git a/src/ui/src/utils/types.ts b/src/ui/src/utils/types.ts index c0ba769c..cde137ac 100644 --- a/src/ui/src/utils/types.ts +++ b/src/ui/src/utils/types.ts @@ -218,4 +218,12 @@ type OrderFilterType = { gt_rating?: string; lt_amount?: string; gt_amount?: string; -}; \ No newline at end of file +}; + +interface SVGIcon + extends React.FunctionComponent> {} + +declare module "*.svg?icon" { + const content: SVGIcon; + export default content; +} \ No newline at end of file From 2a340f4af192dcdb3dedcfc6f8345261b9b07d35 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 10 Jan 2024 12:30:30 +0530 Subject: [PATCH 20/22] Remove fill color from SVG rectangles --- src/ui/public/svg/acceptedOrders.svg | 2 +- src/ui/public/svg/completedOrders.svg | 2 +- src/ui/public/svg/pendingOrders.svg | 2 +- src/ui/public/svg/rejectedOrders.svg | 2 +- src/ui/public/svg/totalOrders.svg | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ui/public/svg/acceptedOrders.svg b/src/ui/public/svg/acceptedOrders.svg index 94f5f9b1..60d73ed9 100644 --- a/src/ui/public/svg/acceptedOrders.svg +++ b/src/ui/public/svg/acceptedOrders.svg @@ -1,5 +1,5 @@ - + diff --git a/src/ui/public/svg/completedOrders.svg b/src/ui/public/svg/completedOrders.svg index 51bec2ef..64989ca2 100644 --- a/src/ui/public/svg/completedOrders.svg +++ b/src/ui/public/svg/completedOrders.svg @@ -1,4 +1,4 @@ - + diff --git a/src/ui/public/svg/pendingOrders.svg b/src/ui/public/svg/pendingOrders.svg index ecdef9ed..ec799652 100644 --- a/src/ui/public/svg/pendingOrders.svg +++ b/src/ui/public/svg/pendingOrders.svg @@ -1,5 +1,5 @@ - + diff --git a/src/ui/public/svg/rejectedOrders.svg b/src/ui/public/svg/rejectedOrders.svg index 72c2982e..d4c03294 100644 --- a/src/ui/public/svg/rejectedOrders.svg +++ b/src/ui/public/svg/rejectedOrders.svg @@ -1,5 +1,5 @@ - + diff --git a/src/ui/public/svg/totalOrders.svg b/src/ui/public/svg/totalOrders.svg index 703e73b1..eb41cd80 100644 --- a/src/ui/public/svg/totalOrders.svg +++ b/src/ui/public/svg/totalOrders.svg @@ -1,5 +1,5 @@ - + From f5c6f0fa130f91e61f492a7bd0a62ebab390fcc8 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 10 Jan 2024 12:30:36 +0530 Subject: [PATCH 21/22] Update icon type in StatusCard component --- .../components/dashboardComponents/statusCard/index.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ui/src/components/dashboardComponents/statusCard/index.tsx b/src/ui/src/components/dashboardComponents/statusCard/index.tsx index 4969a0f6..065e8879 100644 --- a/src/ui/src/components/dashboardComponents/statusCard/index.tsx +++ b/src/ui/src/components/dashboardComponents/statusCard/index.tsx @@ -8,7 +8,7 @@ type StatusCardProps = { card: { label: string; value: number; - icon: string; + icon: React.JSX.Element; onClick: () => void; }; selectedCard: number; @@ -69,7 +69,7 @@ export default function StatusCard({ alignItems: "center", }} > - + /> */} + {card.icon} Date: Wed, 10 Jan 2024 12:30:47 +0530 Subject: [PATCH 22/22] Refactor SVG imports and update icons in dashboard page --- src/ui/app/business/dashboard/page.tsx | 50 +++++++++++++++++++----- src/ui/app/influencer/dashboard/page.tsx | 47 ++++++++++++++++------ 2 files changed, 74 insertions(+), 23 deletions(-) diff --git a/src/ui/app/business/dashboard/page.tsx b/src/ui/app/business/dashboard/page.tsx index 643d25f7..2c4d4fd3 100644 --- a/src/ui/app/business/dashboard/page.tsx +++ b/src/ui/app/business/dashboard/page.tsx @@ -1,10 +1,10 @@ "use client"; -import acceptedOrders from "@/public/svg/acceptedOrders.svg"; -import completedOrders from "@/public/svg/completedOrders.svg"; -import pendingOrders from "@/public/svg/pendingOrders.svg"; -import rejectedOrders from "@/public/svg/rejectedOrders.svg"; -import totalOrders from "@/public/svg/totalOrders.svg"; +import AcceptedOrders from "@/public/svg/acceptedOrders.svg?icon"; +import CompletedOrders from "@/public/svg/completedOrders.svg?icon"; +import RejectedOrders from "@/public/svg/rejectedOrders.svg?icon"; +import TotalOrders from "@/public/svg/totalOrders.svg?icon"; +import PendingOrders from "@/public/svg/pendingOrders.svg?icon"; import StatusCard from "@/src/components/dashboardComponents/statusCard"; import { notification } from "@/src/components/shared/notification"; import StatusChip from "@/src/components/shared/statusChip"; @@ -116,7 +116,13 @@ export default function BusinessDashboardPage() { setSelectedCard(0); }, value: 0, - icon: totalOrders, + icon: ( + + ), }, { label: "Accepted Orders", @@ -128,7 +134,13 @@ export default function BusinessDashboardPage() { setSelectedCard(1); }, value: 1, - icon: acceptedOrders, + icon: ( + + ), }, { label: "Completed Orders", @@ -140,7 +152,13 @@ export default function BusinessDashboardPage() { setSelectedCard(2); }, value: 2, - icon: completedOrders, + icon: ( + + ), }, { label: "Pending Orders", @@ -152,7 +170,13 @@ export default function BusinessDashboardPage() { setSelectedCard(3); }, value: 3, - icon: pendingOrders, + icon: ( + + ), }, { label: "Rejected Orders", @@ -164,7 +188,13 @@ export default function BusinessDashboardPage() { setSelectedCard(4); }, value: 4, - icon: rejectedOrders, + icon: ( + + ), }, ]; diff --git a/src/ui/app/influencer/dashboard/page.tsx b/src/ui/app/influencer/dashboard/page.tsx index bd8a8914..5e46bfa6 100644 --- a/src/ui/app/influencer/dashboard/page.tsx +++ b/src/ui/app/influencer/dashboard/page.tsx @@ -1,19 +1,16 @@ "use client"; -import acceptedOrders from "@/public/svg/acceptedOrders.svg"; -import completedOrders from "@/public/svg/completedOrders.svg"; -import pendingOrders from "@/public/svg/pendingOrders.svg"; -import rejectedOrders from "@/public/svg/rejectedOrders.svg"; -import totalOrders from "@/public/svg/totalOrders.svg"; +import AcceptedOrders from "@/public/svg/acceptedOrders.svg?icon"; +import CompletedOrders from "@/public/svg/completedOrders.svg?icon"; +import RejectedOrders from "@/public/svg/rejectedOrders.svg?icon"; +import TotalOrders from "@/public/svg/totalOrders.svg?icon"; import StatusCard from "@/src/components/dashboardComponents/statusCard"; import { notification } from "@/src/components/shared/notification"; import StatusChip from "@/src/components/shared/statusChip"; import { getService, postService } from "@/src/services/httpServices"; -import EditNoteIcon from "@mui/icons-material/EditNote"; import { Box, Grid, - IconButton, Link, Pagination, Rating, @@ -116,7 +113,13 @@ export default function BusinessDashboardPage() { setSelectedCard(0); }, value: 0, - icon: totalOrders, + icon: ( + + ), }, { label: "Accepted Orders", @@ -128,7 +131,13 @@ export default function BusinessDashboardPage() { setSelectedCard(1); }, value: 1, - icon: acceptedOrders, + icon: ( + + ), }, { label: "Completed Orders", @@ -140,7 +149,13 @@ export default function BusinessDashboardPage() { setSelectedCard(2); }, value: 2, - icon: completedOrders, + icon: ( + + ), }, { label: "Rejected Orders", @@ -149,10 +164,16 @@ export default function BusinessDashboardPage() { ...prev, status: ["rejected"], })); - setSelectedCard(4); + setSelectedCard(3); }, - value: 4, - icon: rejectedOrders, + value: 3, + icon: ( + + ), }, ];