From e9f5fd1613ff2d3c92c9a5f726fbac47f6feeaa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AC=94=E8=AE=B0=E6=9C=AC=E9=87=8C=E7=9A=84=E6=B0=B8?= =?UTF-8?q?=E5=B9=B3?= Date: Thu, 10 Jul 2025 15:05:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9C=AC=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=86=85=E5=AE=B9=E5=A6=82=E4=B8=8B=20?= =?UTF-8?q?=E5=AD=98=E4=B8=80=E7=89=88=E5=9F=BA=E7=A1=80=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nkebao/package-lock.json | 4 +- nkebao/package.json | 2 +- nkebao/src/api/trafficDistribution.ts | 297 ++-- .../traffic-distribution/NewDistribution.tsx | 1288 ++++++++++------- .../TrafficDistribution.tsx | 10 +- nkebao/yarn.lock | 563 ++++--- 6 files changed, 1306 insertions(+), 858 deletions(-) diff --git a/nkebao/package-lock.json b/nkebao/package-lock.json index bd8cbdaa..01161277 100644 --- a/nkebao/package-lock.json +++ b/nkebao/package-lock.json @@ -55,7 +55,7 @@ "clsx": "^2.1.1", "cmdk": "1.0.4", "crypto-js": "^4.2.0", - "date-fns": "latest", + "date-fns": "^4.1.0", "embla-carousel-react": "8.5.1", "input-otp": "1.4.1", "lucide-react": "^0.525.0", @@ -9224,7 +9224,7 @@ }, "node_modules/date-fns": { "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", "funding": { diff --git a/nkebao/package.json b/nkebao/package.json index 5780df46..e9ec387a 100644 --- a/nkebao/package.json +++ b/nkebao/package.json @@ -50,7 +50,7 @@ "clsx": "^2.1.1", "cmdk": "1.0.4", "crypto-js": "^4.2.0", - "date-fns": "latest", + "date-fns": "^4.1.0", "embla-carousel-react": "8.5.1", "input-otp": "1.4.1", "lucide-react": "^0.525.0", diff --git a/nkebao/src/api/trafficDistribution.ts b/nkebao/src/api/trafficDistribution.ts index 06c986c6..02bf2821 100644 --- a/nkebao/src/api/trafficDistribution.ts +++ b/nkebao/src/api/trafficDistribution.ts @@ -1,125 +1,174 @@ -import { get, post, put, del } from './request'; -import type { ApiResponse } from '@/types/common'; - -// 工作台任务类型 -export enum WorkbenchTaskType { - MOMENTS_SYNC = 1, // 朋友圈同步 - GROUP_PUSH = 2, // 社群推送 - AUTO_LIKE = 3, // 自动点赞 - AUTO_GROUP = 4, // 自动建群 - TRAFFIC_DISTRIBUTION = 5, // 流量分发 -} - -// 工作台任务状态 -export enum WorkbenchTaskStatus { - PENDING = 0, // 待处理 - RUNNING = 1, // 运行中 - PAUSED = 2, // 已暂停 - COMPLETED = 3, // 已完成 - FAILED = 4, // 失败 -} - -// 流量分发规则类型 -export interface DistributionRule { - id: string; - name: string; - status: number; - deviceCount: number; - totalTraffic: number; - distributedTraffic: number; - lastDistributionTime: string; - createTime: string; - creator: string; - distributionInterval: number; - maxDistributionPerDay: number; - timeRange: { start: string; end: string }; - targetChannels?: string[]; - distributionRatio?: Record; - priority?: 'high' | 'medium' | 'low'; - filterConditions?: string[]; -} - -// 流量分发列表响应类型 -export interface TrafficDistributionListResponse { - list: DistributionRule[]; - total: number; - page: number; - limit: number; -} - -/** - * 获取流量分发规则列表 - * @param params 查询参数 - * @returns 流量分发规则列表 - */ -export const fetchDistributionRules = async (params: { - page?: number; - limit?: number; - keyword?: string; -} = {}): Promise> => { - const { page = 1, limit = 10, keyword = "" } = params; - - const queryParams = new URLSearchParams(); - queryParams.append('type', WorkbenchTaskType.TRAFFIC_DISTRIBUTION.toString()); - queryParams.append('page', page.toString()); - queryParams.append('limit', limit.toString()); - - if (keyword) { - queryParams.append('keyword', keyword); - } - - return get>(`/v1/workbench/list?${queryParams.toString()}`); -}; - -/** - * 获取流量分发规则详情 - * @param id 规则ID - * @returns 流量分发规则详情 - */ -export const fetchDistributionRuleDetail = async (id: string): Promise> => { - return get>(`/v1/workbench/detail/${id}`); -}; - -/** - * 创建流量分发规则 - * @param params 创建参数 - * @returns 创建结果 - */ -export const createDistributionRule = async (params: any): Promise> => { - return post>('/v1/workbench/create', { - ...params, - type: WorkbenchTaskType.TRAFFIC_DISTRIBUTION - }); -}; - -/** - * 更新流量分发规则 - * @param id 规则ID - * @param params 更新参数 - * @returns 更新结果 - */ -export const updateDistributionRule = async (id: string, params: any): Promise> => { - return put>(`/v1/workbench/update/${id}`, { - ...params, - type: WorkbenchTaskType.TRAFFIC_DISTRIBUTION - }); -}; - -/** - * 删除流量分发规则 - * @param id 规则ID - * @returns 删除结果 - */ -export const deleteDistributionRule = async (id: string): Promise> => { - return del>(`/v1/workbench/delete/${id}`); -}; - -/** - * 启动/暂停流量分发规则 - * @param id 规则ID - * @param status 状态:1-启动,0-暂停 - * @returns 操作结果 - */ -export const toggleDistributionRuleStatus = async (id: string, status: 0 | 1): Promise> => { - return post>('/v1/workbench/update-status', { id, status }); +import { get, post, put, del } from './request'; +import type { ApiResponse } from '@/types/common'; + +// 工作台任务类型 +export enum WorkbenchTaskType { + MOMENTS_SYNC = 1, // 朋友圈同步 + GROUP_PUSH = 2, // 社群推送 + AUTO_LIKE = 3, // 自动点赞 + AUTO_GROUP = 4, // 自动建群 + TRAFFIC_DISTRIBUTION = 5, // 流量分发 +} + +// 工作台任务状态 +export enum WorkbenchTaskStatus { + PENDING = 0, // 待处理 + RUNNING = 1, // 运行中 + PAUSED = 2, // 已暂停 + COMPLETED = 3, // 已完成 + FAILED = 4, // 失败 +} + +// 账号类型 +export interface Account { + id: string; + userName: string; + realName: string; + nickname: string; + memo: string; +} + +// 账号列表响应类型 +export interface AccountListResponse { + list: Account[]; + total: number; + page: number; + limit: number; +} + +// 流量分发规则类型 +export interface DistributionRule { + id: string; + name: string; + status: number; + deviceCount: number; + totalTraffic: number; + distributedTraffic: number; + lastDistributionTime: string; + createTime: string; + creator: string; + distributionInterval: number; + maxDistributionPerDay: number; + timeRange: { start: string; end: string }; + targetChannels?: string[]; + distributionRatio?: Record; + priority?: 'high' | 'medium' | 'low'; + filterConditions?: string[]; + config?: { + total?: { + dailyAverage: number; // 日均分发量 + deviceCount: number; // 分发设备 + poolCount: string; // 流量池 + totalAccounts: number; // 分发账户 + totalUsers: number; // 总用户数 + } + }; +} + +// 流量分发列表响应类型 +export interface TrafficDistributionListResponse { + list: DistributionRule[]; + total: number; + page: number; + limit: number; +} + +/** + * 获取账号列表 + * @param params 查询参数 + * @returns 账号列表 + */ +export const fetchAccountList = async (params: { + page?: number; // 页码 + limit?: number; // 每页数量 + keyword?: string; // 搜索关键词 +} = {}): Promise> => { + const { page = 1, limit = 10, keyword = "" } = params; + + const queryParams = new URLSearchParams(); + queryParams.append('page', page.toString()); + queryParams.append('limit', limit.toString()); + + if (keyword) { + queryParams.append('keyword', keyword); + } + + return get>(`/v1/workbench/account-list?${queryParams.toString()}`); +}; + +/** + * 获取流量分发规则列表 + * @param params 查询参数 + * @returns 流量分发规则列表 + */ +export const fetchDistributionRules = async (params: { + page?: number; + limit?: number; + keyword?: string; +} = {}): Promise> => { + const { page = 1, limit = 10, keyword = "" } = params; + + const queryParams = new URLSearchParams(); + queryParams.append('type', WorkbenchTaskType.TRAFFIC_DISTRIBUTION.toString()); + queryParams.append('page', page.toString()); + queryParams.append('limit', limit.toString()); + + if (keyword) { + queryParams.append('keyword', keyword); + } + + return get>(`/v1/workbench/list?${queryParams.toString()}`); +}; + +/** + * 获取流量分发规则详情 + * @param id 规则ID + * @returns 流量分发规则详情 + */ +export const fetchDistributionRuleDetail = async (id: string): Promise> => { + return get>(`/v1/workbench/detail/${id}`); +}; + +/** + * 创建流量分发规则 + * @param params 创建参数 + * @returns 创建结果 + */ +export const createDistributionRule = async (params: any): Promise> => { + return post>('/v1/workbench/create', { + ...params, + type: WorkbenchTaskType.TRAFFIC_DISTRIBUTION + }); +}; + +/** + * 更新流量分发规则 + * @param id 规则ID + * @param params 更新参数 + * @returns 更新结果 + */ +export const updateDistributionRule = async (id: string, params: any): Promise> => { + return put>(`/v1/workbench/update/${id}`, { + ...params, + type: WorkbenchTaskType.TRAFFIC_DISTRIBUTION + }); +}; + +/** + * 删除流量分发规则 + * @param id 规则ID + * @returns 删除结果 + */ +export const deleteDistributionRule = async (id: string): Promise> => { + return del>(`/v1/workbench/delete/${id}`); +}; + +/** + * 启动/暂停流量分发规则 + * @param id 规则ID + * @param status 状态:1-启动,0-暂停 + * @returns 操作结果 + */ +export const toggleDistributionRuleStatus = async (id: string, status: 0 | 1): Promise> => { + return post>('/v1/workbench/update-status', { id, status }); }; \ No newline at end of file diff --git a/nkebao/src/pages/workspace/traffic-distribution/NewDistribution.tsx b/nkebao/src/pages/workspace/traffic-distribution/NewDistribution.tsx index 9725c1b4..d6f5ddb0 100644 --- a/nkebao/src/pages/workspace/traffic-distribution/NewDistribution.tsx +++ b/nkebao/src/pages/workspace/traffic-distribution/NewDistribution.tsx @@ -1,50 +1,63 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { - ChevronLeft, - Plus, Users, - Database, - Settings, Search, + Database, + Plus, + X, } from 'lucide-react'; -import { Steps, StepItem } from 'tdesign-mobile-react'; // 添加这一行 -import 'tdesign-mobile-react/es/style/index.css'; // 添加这一行 import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; -import { Card, CardContent } from '@/components/ui/card'; -import { Checkbox } from '@/components/ui/checkbox'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; -import { Avatar } from '@/components/ui/avatar'; +import { Checkbox } from '@/components/ui/checkbox'; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'; +import Layout from '@/components/Layout'; +import PageHeader from '@/components/PageHeader'; +import BottomNav from '@/components/BottomNav'; import { useToast } from '@/components/ui/toast'; -import { format } from 'date-fns'; +import { fetchAccountList, Account } from '@/api/trafficDistribution'; +import '@/components/Layout.css'; + +// 步骤指示器组件 +function StepIndicator({ currentStep, steps }: { currentStep: number; steps: Step[] }) { + return ( +
+ {steps.map((step, index) => ( +
+
+ {React.cloneElement(step.icon as React.ReactElement, { className: "w-5 h-5" })} +
+ {index < steps.length - 1 && ( +
+ )} +
+ ))} +
+ ); +} -// 类型定义 interface Step { id: number; title: string; icon: React.ReactNode; } -interface StepIndicatorProps { - currentStep: number; - steps: Step[]; -} - interface BasicInfoData { name: string; - distributionMethod: string; + distributionMethod: 'equal' | 'priority' | 'ratio'; dailyLimit: number; - timeRestriction: string; + timeRestriction: 'allDay' | 'custom'; startTime: string; endTime: string; -} - -interface BasicInfoStepProps { - onNext: (data: BasicInfoData) => void; - initialData?: Partial; + selectedAccounts: string[]; } interface TargetSettingsData { @@ -52,10 +65,14 @@ interface TargetSettingsData { selectedCustomerServices: string[]; } -interface TargetSettingsStepProps { - onNext: (data: TargetSettingsData) => void; - onBack: () => void; - initialData?: Partial; +interface TrafficPoolData { + selectedPools: string[]; +} + +interface FormData { + basicInfo: Partial; + targetSettings: Partial; + trafficPool: Partial; } interface Device { @@ -70,16 +87,6 @@ interface CustomerService { status: 'online' | 'offline'; } -interface TrafficPoolData { - selectedPools: string[]; -} - -interface TrafficPoolStepProps { - onSubmit: (data: TrafficPoolData) => void; - onBack: () => void; - initialData?: Partial; -} - interface TrafficPool { id: string; name: string; @@ -87,439 +94,215 @@ interface TrafficPool { description: string; } -// 步骤指示器组件 -function StepIndicator({ currentStep, steps }: StepIndicatorProps) { - return ( -
- - {steps.map((step, index) => ( - - ))} - -
- ); -} - -// 基本信息步骤组件 -function BasicInfoStep({ onNext, initialData = {} }: BasicInfoStepProps) { - const [formData, setFormData] = useState({ - name: initialData.name || `流量分发 ${format(new Date(), "yyyyMMdd HHmm")}`, - distributionMethod: initialData.distributionMethod || "equal", - dailyLimit: initialData.dailyLimit || 50, - timeRestriction: initialData.timeRestriction || "custom", - startTime: initialData.startTime || "09:00", - endTime: initialData.endTime || "18:00", - }); - - const handleChange = (field: keyof BasicInfoData, value: string | number) => { - setFormData((prev) => ({ ...prev, [field]: value })); - }; - - const handleSubmit = () => { - onNext(formData); - }; - - return ( -
-

基本信息

- -
-
- - handleChange("name", e.target.value)} - placeholder="请输入计划名称" - /> -
- -
- - handleChange("distributionMethod", value)} - className="space-y-2" - > -
- - -
-
- - -
-
- - -
-
-
- -
- - -
-
- 每日最大分配量 - {formData.dailyLimit} 人/天 -
- handleChange("dailyLimit", parseInt(e.target.value))} - className="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer" - /> -

限制每天最多分配的流量数量

-
- -
- - handleChange("timeRestriction", value)} - className="space-y-4" - > -
- - -
-
- - -
-
- - {formData.timeRestriction === "custom" && ( -
-
- -
- handleChange("startTime", e.target.value)} - /> -
-
-
- -
- handleChange("endTime", e.target.value)} - /> -
-
-
- )} -
-
-
- -
- -
-
- ); -} - -// 目标设置步骤组件 -function TargetSettingsStep({ onNext, onBack, initialData = {} }: TargetSettingsStepProps) { - const [selectedDevices, setSelectedDevices] = useState(initialData.selectedDevices || []); - const [selectedCustomerServices, setSelectedCustomerServices] = useState( - initialData.selectedCustomerServices || [] - ); - const [searchTerm, setSearchTerm] = useState(""); - - // 模拟设备数据 - const devices: Device[] = [ - { id: "1", name: "设备 1", status: "online" }, - { id: "2", name: "设备 2", status: "online" }, - { id: "3", name: "设备 3", status: "offline" }, - { id: "4", name: "设备 4", status: "online" }, - { id: "5", name: "设备 5", status: "offline" }, - ]; - - // 模拟客服数据 - const customerServices: CustomerService[] = [ - { id: "1", name: "客服 A", status: "online" }, - { id: "2", name: "客服 B", status: "online" }, - { id: "3", name: "客服 C", status: "offline" }, - { id: "4", name: "客服 D", status: "online" }, - ]; - - const filteredDevices = devices.filter((device) => - device.name.toLowerCase().includes(searchTerm.toLowerCase()) - ); - - const filteredCustomerServices = customerServices.filter((cs) => - cs.name.toLowerCase().includes(searchTerm.toLowerCase()) - ); - - const toggleDevice = (id: string) => { - setSelectedDevices((prev) => - prev.includes(id) ? prev.filter((deviceId) => deviceId !== id) : [...prev, id] - ); - }; - - const toggleCustomerService = (id: string) => { - setSelectedCustomerServices((prev) => - prev.includes(id) ? prev.filter((csId) => csId !== id) : [...prev, id] - ); - }; - - const handleSubmit = () => { - onNext({ - selectedDevices, - selectedCustomerServices, - }); - }; - - return ( -
-

目标设置

- -
-
- - setSearchTerm(e.target.value)} - className="pl-10" - /> -
-
- - - - 设备选择 - 客服选择 - - - -
- {filteredDevices.map((device) => ( - - -
toggleDevice(device.id)}> - -
- - {device.name.substring(0, 1)} - -
-
-
-

{device.name}

-

- {device.status === "online" ? "在线" : "离线"} -

-
-
- toggleDevice(device.id)} - /> -
-
- ))} -
-
- - -
- {filteredCustomerServices.map((cs) => ( - - -
toggleCustomerService(cs.id)}> - -
- - {cs.name.substring(0, 1)} - -
-
-
-

{cs.name}

-

- {cs.status === "online" ? "在线" : "离线"} -

-
-
- toggleCustomerService(cs.id)} - /> -
-
- ))} -
-
-
- -
- - -
-
- ); -} - -// 流量池选择步骤组件 -function TrafficPoolStep({ onSubmit, onBack, initialData = {} }: TrafficPoolStepProps) { - const [selectedPools, setSelectedPools] = useState(initialData.selectedPools || []); - const [searchTerm, setSearchTerm] = useState(""); - const [isSubmitting, setIsSubmitting] = useState(false); - - // 模拟流量池数据 - const trafficPools: TrafficPool[] = [ - { id: "1", name: "新客流量池", count: 1250, description: "新获取的客户流量" }, - { id: "2", name: "高意向流量池", count: 850, description: "有购买意向的客户" }, - { id: "3", name: "复购流量池", count: 620, description: "已购买过产品的客户" }, - { id: "4", name: "活跃流量池", count: 1580, description: "近期活跃的客户" }, - { id: "5", name: "沉睡流量池", count: 2300, description: "长期未活跃的客户" }, - ]; - - const filteredPools = trafficPools.filter( - (pool) => - pool.name.toLowerCase().includes(searchTerm.toLowerCase()) || - pool.description.toLowerCase().includes(searchTerm.toLowerCase()) - ); - - const togglePool = (id: string) => { - setSelectedPools((prev) => - prev.includes(id) ? prev.filter((poolId) => poolId !== id) : [...prev, id] - ); - }; - - const handleSubmit = async () => { - setIsSubmitting(true); +// 账号选择对话框组件 +const AccountSelectionDialog = ({ + open, + onClose, + selectedAccounts, + onConfirm +}: { + open: boolean; + onClose: () => void; + selectedAccounts: string[]; + onConfirm: (accounts: string[]) => void; +}) => { + const [tempSelectedAccounts, setTempSelectedAccounts] = useState(selectedAccounts); + const [accounts, setAccounts] = useState([]); + const [loading, setLoading] = useState(false); + const [page, setPage] = useState(1); + const [hasMore, setHasMore] = useState(true); + const { toast } = useToast(); + // 获取账号列表 + const fetchAccounts = async (pageNum: number = 1, reset: boolean = true) => { + setLoading(true); try { - // 这里可以添加实际的提交逻辑 - await new Promise((resolve) => setTimeout(resolve, 1000)); // 模拟API请求 - - onSubmit({ - selectedPools, + const response = await fetchAccountList({ + page: pageNum, + limit: 10 }); + + if (response.code === 200 && response.data) { + const accountList = response.data.list || []; + const total = response.data.total || 0; + + if (reset) { + setAccounts(accountList); + } else { + setAccounts(prev => [...prev, ...accountList]); + } + + // 计算是否还有更多数据 + const currentTotal = reset ? accountList.length : accounts.length + accountList.length; + setHasMore(currentTotal < total); + } else { + toast({ + title: "获取账号列表失败", + description: response.msg || "请稍后重试", + variant: "destructive" + }); + + // 如果API失败,使用模拟数据作为降级处理 + const mockData = [ + { id: "1", userName: "user_001", realName: "张三", nickname: "游戏", memo: "游戏账号" }, + { id: "2", userName: "user_002", realName: "李四", nickname: "商务4", memo: "商务账号" }, + { id: "3", userName: "user_003", realName: "王五", nickname: "魔兽客服", memo: "客服账号" }, + { id: "4", userName: "user_004", realName: "赵六", nickname: "魔兽世界Kf", memo: "游戏客服" }, + { id: "5", userName: "user_005", realName: "孙七", nickname: "小羊网络", memo: "网络账号" }, + ]; + + if (reset) { + setAccounts(mockData); + } + setHasMore(false); + } } catch (error) { - console.error("提交失败:", error); + console.error('获取账号列表失败:', error); + toast({ + title: "网络错误", + description: "请检查网络连接后重试", + variant: "destructive" + }); + + // 网络错误时使用模拟数据 + const mockData = [ + { id: "1", userName: "user_001", realName: "张三", nickname: "游戏", memo: "游戏账号" }, + { id: "2", userName: "user_002", realName: "李四", nickname: "商务4", memo: "商务账号" }, + { id: "3", userName: "user_003", realName: "王五", nickname: "魔兽客服", memo: "客服账号" }, + { id: "4", userName: "user_004", realName: "赵六", nickname: "魔兽世界Kf", memo: "游戏客服" }, + { id: "5", userName: "user_005", realName: "孙七", nickname: "小羊网络", memo: "网络账号" }, + ]; + + if (reset) { + setAccounts(mockData); + } + setHasMore(false); } finally { - setIsSubmitting(false); + setLoading(false); + } + }; + + useEffect(() => { + if (open) { + setTempSelectedAccounts(selectedAccounts); + fetchAccounts(1, true); + setPage(1); + } + }, [open, selectedAccounts]); + + const toggleAccount = (id: string) => { + setTempSelectedAccounts(prev => + prev.includes(id) ? prev.filter(accountId => accountId !== id) : [...prev, id] + ); + }; + + const handleConfirm = () => { + onConfirm(tempSelectedAccounts); + onClose(); + }; + + const loadMore = () => { + if (!loading && hasMore) { + const nextPage = page + 1; + setPage(nextPage); + fetchAccounts(nextPage, false); } }; return ( -
-

流量池选择

- -
-
- - setSearchTerm(e.target.value)} - className="pl-10" - /> -
-
- -
- {filteredPools.map((pool) => ( -
togglePool(pool.id)} - > -
-
-
- -
-
-

{pool.name}

-

{pool.description}

-
-
-
- {pool.count} 人 - togglePool(pool.id)} - /> -
-
+ + + +
+ 选择账号 +
- ))} -
+ + +
+
+ {accounts.map(account => ( +
toggleAccount(account.id)} + > +
+
+
+ + {(account.nickname || account.realName || account.userName).charAt(0)} + +
+
+

{account.nickname || account.realName || account.userName}

+

账号: {account.userName}

+
+
+
+ toggleAccount(account.id)} + /> +
+
+
+ ))} + + {loading && ( +
+
+
+ 加载中... +
+
+ )} + + {!loading && hasMore && ( +
+ +
+ )} + + {!loading && accounts.length === 0 && ( +
+ +

暂无账号数据

+
+ )} +
+
-
- - -
-
+
+ +
+ + ); -} - -// 主组件 -interface FormData { - basicInfo: Partial; - targetSettings: Partial; - trafficPool: Partial; -} +}; export default function NewDistribution() { const navigate = useNavigate(); @@ -532,18 +315,29 @@ export default function NewDistribution() { }); const steps: Step[] = [ - { id: 1, title: "基本信息", icon: }, - { id: 2, title: "目标设置", icon: }, - { id: 3, title: "流量池选择", icon: }, + { id: 1, title: "基本信息", icon: }, + { id: 2, title: "目标设置", icon: }, + { id: 3, title: "流量池选择", icon: }, ]; + // 生成默认计划名称 + const generateDefaultName = () => { + const now = new Date(); + const year = now.getFullYear(); + const month = String(now.getMonth() + 1).padStart(2, '0'); + const day = String(now.getDate()).padStart(2, '0'); + const hour = String(now.getHours()).padStart(2, '0'); + const minute = String(now.getMinutes()).padStart(2, '0'); + return `流量分发 ${year}${month}${day} ${hour}${minute}`; + }; + const handleBasicInfoNext = (data: BasicInfoData) => { - setFormData((prev) => ({ ...prev, basicInfo: data })); + setFormData(prev => ({ ...prev, basicInfo: data })); setCurrentStep(1); }; const handleTargetSettingsNext = (data: TargetSettingsData) => { - setFormData((prev) => ({ ...prev, targetSettings: data })); + setFormData(prev => ({ ...prev, targetSettings: data })); setCurrentStep(2); }; @@ -562,59 +356,549 @@ export default function NewDistribution() { }; try { - // 这里可以添加实际的API调用 - console.log("提交的数据:", finalData); - + console.log('提交的数据:', finalData); + toast({ title: "创建成功", - description: "流量分发规则已成功创建", + description: "流量分发规则已成功创建" }); - - // 跳转到列表页 - navigate("/workspace/traffic-distribution"); + + navigate('/workspace/traffic-distribution'); } catch (error) { - console.error("提交失败:", error); + console.error('提交失败:', error); toast({ title: "创建失败", description: "请稍后重试", - variant: "destructive", + variant: "destructive" }); } }; - return ( -
-
-
-
- -

新建流量分发

+ // 基本信息步骤组件 + const BasicInfoStep = ({ onNext, initialData = {} }: { onNext: (data: BasicInfoData) => void; initialData?: Partial }) => { + const [formData, setFormData] = useState({ + name: initialData.name || generateDefaultName(), + distributionMethod: initialData.distributionMethod || "equal", + dailyLimit: initialData.dailyLimit || 50, + timeRestriction: initialData.timeRestriction || "custom", + startTime: initialData.startTime || "09:00", + endTime: initialData.endTime || "18:00", + selectedAccounts: initialData.selectedAccounts || [], + }); + + const [accountDialogOpen, setAccountDialogOpen] = useState(false); + + const handleChange = (field: keyof BasicInfoData, value: string | number | string[]) => { + setFormData(prev => ({ ...prev, [field]: value })); + }; + + const handleAccountConfirm = (selectedAccounts: string[]) => { + handleChange("selectedAccounts", selectedAccounts); + }; + + const getSelectedAccountsText = () => { + if (formData.selectedAccounts.length === 0) { + return "请选择账号"; + } + return `已选择 ${formData.selectedAccounts.length} 个账号`; + }; + + const handleSubmit = () => { + if (!formData.name.trim()) { + toast({ + title: "请填写计划名称", + variant: "destructive" + }); + return; + } + if (formData.selectedAccounts.length === 0) { + toast({ + title: "请选择至少一个账号", + variant: "destructive" + }); + return; + } + onNext(formData); + }; + + return ( +
+

基本信息

+ +
+
+ + handleChange("name", e.target.value)} + placeholder="请输入计划名称" + className="h-12" + />
-
+ +
+
- - -
-
- {currentStep === 0 && } - - {currentStep === 1 && ( - - )} - - {currentStep === 2 && ( - - )} + setAccountDialogOpen(false)} + selectedAccounts={formData.selectedAccounts} + onConfirm={handleAccountConfirm} + />
-
+ ); + }; + + // 目标设置步骤组件 + const TargetSettingsStep = ({ onNext, onBack, initialData = {} }: { onNext: (data: TargetSettingsData) => void; onBack: () => void; initialData?: Partial }) => { + const [selectedDevices, setSelectedDevices] = useState(initialData.selectedDevices || []); + const [selectedCustomerServices, setSelectedCustomerServices] = useState(initialData.selectedCustomerServices || []); + const [searchTerm, setSearchTerm] = useState(""); + + // 模拟设备数据 + const devices: Device[] = [ + { id: "1", name: "设备 1", status: "online" }, + { id: "2", name: "设备 2", status: "online" }, + { id: "3", name: "设备 3", status: "offline" }, + { id: "4", name: "设备 4", status: "online" }, + { id: "5", name: "设备 5", status: "offline" }, + ]; + + // 模拟客服数据 + const customerServices: CustomerService[] = [ + { id: "1", name: "客服 A", status: "online" }, + { id: "2", name: "客服 B", status: "online" }, + { id: "3", name: "客服 C", status: "offline" }, + { id: "4", name: "客服 D", status: "online" }, + ]; + + const filteredDevices = devices.filter(device => + device.name.toLowerCase().includes(searchTerm.toLowerCase()) + ); + + const filteredCustomerServices = customerServices.filter(cs => + cs.name.toLowerCase().includes(searchTerm.toLowerCase()) + ); + + const toggleDevice = (id: string) => { + setSelectedDevices(prev => + prev.includes(id) ? prev.filter(deviceId => deviceId !== id) : [...prev, id] + ); + }; + + const toggleCustomerService = (id: string) => { + setSelectedCustomerServices(prev => + prev.includes(id) ? prev.filter(csId => csId !== id) : [...prev, id] + ); + }; + + const handleSubmit = () => { + if (selectedDevices.length === 0 && selectedCustomerServices.length === 0) { + toast({ + title: "请选择至少一个设备或客服", + variant: "destructive" + }); + return; + } + + onNext({ + selectedDevices, + selectedCustomerServices, + }); + }; + + return ( +
+

目标设置

+ +
+
+ + setSearchTerm(e.target.value)} + className="pl-10 h-12" + /> +
+
+ + + + 设备选择 + 客服选择 + + + +
+ {filteredDevices.map(device => ( +
toggleDevice(device.id)} + > +
+
+
+ + {device.name.substring(2, 3)} + +
+
+

{device.name}

+

+ {device.status === "online" ? "在线" : "离线"} +

+
+
+ toggleDevice(device.id)} + /> +
+
+ ))} +
+
+ + +
+ {filteredCustomerServices.map(cs => ( +
toggleCustomerService(cs.id)} + > +
+
+
+ + {cs.name.substring(2, 3)} + +
+
+

{cs.name}

+

+ {cs.status === "online" ? "在线" : "离线"} +

+
+
+ toggleCustomerService(cs.id)} + /> +
+
+ ))} +
+
+
+ +
+ + +
+
+ ); + }; + + // 流量池选择步骤组件 + const TrafficPoolStep = ({ onSubmit, onBack, initialData = {} }: { onSubmit: (data: TrafficPoolData) => void; onBack: () => void; initialData?: Partial }) => { + const [selectedPools, setSelectedPools] = useState(initialData.selectedPools || []); + const [searchTerm, setSearchTerm] = useState(""); + const [isSubmitting, setIsSubmitting] = useState(false); + + // 模拟流量池数据 + const trafficPools: TrafficPool[] = [ + { id: "1", name: "新客流量池", count: 1250, description: "新获取的客户流量" }, + { id: "2", name: "高意向流量池", count: 850, description: "有购买意向的客户" }, + { id: "3", name: "复购流量池", count: 620, description: "已购买过产品的客户" }, + { id: "4", name: "活跃流量池", count: 1580, description: "近期活跃的客户" }, + { id: "5", name: "沉睡流量池", count: 2300, description: "长期未活跃的客户" }, + ]; + + const filteredPools = trafficPools.filter( + pool => + pool.name.toLowerCase().includes(searchTerm.toLowerCase()) || + pool.description.toLowerCase().includes(searchTerm.toLowerCase()) + ); + + const togglePool = (id: string) => { + setSelectedPools(prev => + prev.includes(id) ? prev.filter(poolId => poolId !== id) : [...prev, id] + ); + }; + + const handleSubmit = async () => { + if (selectedPools.length === 0) { + toast({ + title: "请选择至少一个流量池", + variant: "destructive" + }); + return; + } + + setIsSubmitting(true); + + try { + await new Promise(resolve => setTimeout(resolve, 1000)); + onSubmit({ selectedPools }); + } catch (error) { + console.error("提交失败:", error); + toast({ + title: "创建失败", + description: "请稍后重试", + variant: "destructive" + }); + } finally { + setIsSubmitting(false); + } + }; + + return ( +
+

流量池选择

+ +
+
+ + setSearchTerm(e.target.value)} + className="pl-10 h-12" + /> +
+
+ +
+ {filteredPools.map(pool => ( +
togglePool(pool.id)} + > +
+
+
+ +
+
+

{pool.name}

+

{pool.description}

+
+
+
+ {pool.count} 人 + togglePool(pool.id)} + /> +
+
+
+ ))} +
+ +
+ + +
+
+ ); + }; + + const headerRightContent = ( + + ); + + return ( + + } + > +
+
+ + + {currentStep === 0 && ( + + )} + + {currentStep === 1 && ( + + )} + + {currentStep === 2 && ( + + )} +
+
+
); } \ No newline at end of file diff --git a/nkebao/src/pages/workspace/traffic-distribution/TrafficDistribution.tsx b/nkebao/src/pages/workspace/traffic-distribution/TrafficDistribution.tsx index 816e673d..e4dcee76 100644 --- a/nkebao/src/pages/workspace/traffic-distribution/TrafficDistribution.tsx +++ b/nkebao/src/pages/workspace/traffic-distribution/TrafficDistribution.tsx @@ -336,26 +336,26 @@ export default function TrafficDistribution() {
-
{rule.deviceCount || 2}
+
{rule.config?.total?.totalAccounts || 2}
分发账号
-
{rule.totalTraffic || 7}
+
{rule.config?.total?.deviceCount || 7}
分发设备
-
ALL
+
{rule.config?.total?.totalAccounts || "ALL"}
流量池
-
{rule.distributedTraffic || 119}
+
{rule.config?.total?.dailyAverage || 119}
日均分发量
-
{rule.totalTraffic || 2}
+
{rule.config?.total?.totalUsers || 2}
总流量池数量
diff --git a/nkebao/yarn.lock b/nkebao/yarn.lock index 105096fa..1a056ab2 100644 --- a/nkebao/yarn.lock +++ b/nkebao/yarn.lock @@ -217,6 +217,17 @@ "@babel/runtime" "^7.25.6" tslib "^2.5.3" +"@antv/g@^6.1.11", "@antv/g@^6.1.23", "@antv/g@^6.1.7": + version "6.1.26" + resolved "https://registry.npmmirror.com/@antv/g/-/g-6.1.26.tgz" + integrity sha512-+Pf23pz8o/u98pKpb3CqLfz4iJaZh6HIo0Z5FJdSTCZUrMIEgmNMFnZiJf9Ow0mnLA9KVdv5ekF17f82G5TyRw== + dependencies: + "@antv/g-camera-api" "2.0.39" + "@antv/g-dom-mutation-observer-api" "2.0.36" + "@antv/g-lite" "2.3.0" + "@antv/g-web-animations-api" "2.1.26" + "@babel/runtime" "^7.25.6" + "@antv/g2-extension-plot@^0.2.1": version "0.2.2" resolved "https://registry.npmmirror.com/@antv/g2-extension-plot/-/g2-extension-plot-0.2.2.tgz" @@ -244,17 +255,6 @@ flru "^1.0.2" pdfast "^0.2.0" -"@antv/g@^6.1.11", "@antv/g@^6.1.23", "@antv/g@^6.1.7": - version "6.1.26" - resolved "https://registry.npmmirror.com/@antv/g/-/g-6.1.26.tgz" - integrity sha512-+Pf23pz8o/u98pKpb3CqLfz4iJaZh6HIo0Z5FJdSTCZUrMIEgmNMFnZiJf9Ow0mnLA9KVdv5ekF17f82G5TyRw== - dependencies: - "@antv/g-camera-api" "2.0.39" - "@antv/g-dom-mutation-observer-api" "2.0.36" - "@antv/g-lite" "2.3.0" - "@antv/g-web-animations-api" "2.1.26" - "@babel/runtime" "^7.25.6" - "@antv/scale@^0.4.12", "@antv/scale@^0.4.16": version "0.4.16" resolved "https://registry.npmmirror.com/@antv/scale/-/scale-0.4.16.tgz" @@ -351,7 +351,7 @@ resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.28.0.tgz" integrity sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.16.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.28.0" resolved "https://registry.npmmirror.com/@babel/core/-/core-7.28.0.tgz" integrity sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ== @@ -639,11 +639,6 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.npmmirror.com/@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== - "@babel/plugin-proposal-private-property-in-object@^7.16.7": version "7.21.11" resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz" @@ -654,6 +649,11 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.npmmirror.com/@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== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" @@ -689,7 +689,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-flow@^7.27.1": +"@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.27.1": version "7.27.1" resolved "https://registry.npmmirror.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz" integrity sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA== @@ -1139,7 +1139,7 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.27.1" -"@babel/plugin-transform-react-jsx@^7.27.1": +"@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.27.1": version "7.27.1" resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz" integrity sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw== @@ -1901,14 +1901,6 @@ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz" integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": version "0.3.29" resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz" @@ -1917,6 +1909,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@kurkle/color@^0.3.0": version "0.3.4" resolved "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.4.tgz" @@ -1942,7 +1942,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -2100,7 +2100,7 @@ resolved "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.2.tgz" integrity sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA== -"@radix-ui/react-dialog@1.1.14", "@radix-ui/react-dialog@^1.1.1", "@radix-ui/react-dialog@^1.1.2", "@radix-ui/react-dialog@latest": +"@radix-ui/react-dialog@^1.1.1", "@radix-ui/react-dialog@^1.1.2", "@radix-ui/react-dialog@1.1.14", "@radix-ui/react-dialog@latest": version "1.1.14" resolved "https://registry.npmmirror.com/@radix-ui/react-dialog/-/react-dialog-1.1.14.tgz" integrity sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw== @@ -2183,7 +2183,7 @@ resolved "https://registry.npmmirror.com/@radix-ui/react-icons/-/react-icons-1.3.2.tgz" integrity sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g== -"@radix-ui/react-id@1.1.1", "@radix-ui/react-id@^1.1.0": +"@radix-ui/react-id@^1.1.0", "@radix-ui/react-id@1.1.1": version "1.1.1" resolved "https://registry.npmmirror.com/@radix-ui/react-id/-/react-id-1.1.1.tgz" integrity sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg== @@ -2310,7 +2310,7 @@ "@radix-ui/react-compose-refs" "1.1.2" "@radix-ui/react-use-layout-effect" "1.1.1" -"@radix-ui/react-primitive@2.1.3", "@radix-ui/react-primitive@^2.0.0": +"@radix-ui/react-primitive@^2.0.0", "@radix-ui/react-primitive@2.1.3": version "2.1.3" resolved "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz" integrity sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ== @@ -2422,7 +2422,7 @@ "@radix-ui/react-use-previous" "1.1.1" "@radix-ui/react-use-size" "1.1.1" -"@radix-ui/react-slot@1.2.3", "@radix-ui/react-slot@^1.1.1": +"@radix-ui/react-slot@^1.1.1", "@radix-ui/react-slot@1.2.3": version "1.2.3" resolved "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz" integrity sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A== @@ -2487,7 +2487,7 @@ "@radix-ui/react-toggle" "1.1.9" "@radix-ui/react-use-controllable-state" "1.2.2" -"@radix-ui/react-toggle@1.1.9", "@radix-ui/react-toggle@^1.1.1": +"@radix-ui/react-toggle@^1.1.1", "@radix-ui/react-toggle@1.1.9": version "1.1.9" resolved "https://registry.npmmirror.com/@radix-ui/react-toggle/-/react-toggle-1.1.9.tgz" integrity sha512-ZoFkBBz9zv9GWer7wIjvdRxmh2wyc2oKWw6C6CseWd6/yq1DK/l5lJ+wnsmFwJZbBYqr02mrf8A2q/CVCuM3ZA== @@ -2802,7 +2802,7 @@ resolved "https://registry.npmmirror.com/@tanstack/table-core/-/table-core-8.21.3.tgz" integrity sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg== -"@testing-library/dom@^10.4.0": +"@testing-library/dom@^10.4.0", "@testing-library/dom@>=7.21.4": version "10.4.0" resolved "https://registry.npmmirror.com/@testing-library/dom/-/dom-10.4.0.tgz" integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ== @@ -2894,7 +2894,7 @@ resolved "https://registry.npmmirror.com/@types/aria-query/-/aria-query-5.0.4.tgz" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9": version "7.20.5" resolved "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -3238,12 +3238,12 @@ resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.17": +"@types/react-dom@*", "@types/react-dom@^18.0.0", "@types/react-dom@^18.2.17": version "18.3.7" resolved "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.3.7.tgz" integrity sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ== -"@types/react@^18.2.43": +"@types/react@*", "@types/react@^18.0.0", "@types/react@^18.2.25 || ^19", "@types/react@^18.2.43": version "18.3.23" resolved "https://registry.npmmirror.com/@types/react/-/react-18.3.23.tgz" integrity sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w== @@ -3340,7 +3340,7 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.5.0": +"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0": version "5.62.0" resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== @@ -3363,7 +3363,7 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@^5.5.0": +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0": version "5.62.0" resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.62.0.tgz" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -3409,7 +3409,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": +"@typescript-eslint/utils@^5.58.0", "@typescript-eslint/utils@5.62.0": version "5.62.0" resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.62.0.tgz" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -3448,7 +3448,7 @@ dependencies: "@use-gesture/core" "10.3.1" -"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": +"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1": version "1.14.1" resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz" integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== @@ -3549,7 +3549,7 @@ "@webassemblyjs/wasm-gen" "1.14.1" "@webassemblyjs/wasm-parser" "1.14.1" -"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": +"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1": version "1.14.1" resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz" integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== @@ -3617,16 +3617,16 @@ acorn-walk@^8.1.1: dependencies: acorn "^8.11.0" +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.11.0, acorn@^8.14.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + acorn@^7.1.1: version "7.4.1" resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.11.0, acorn@^8.14.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.9.0: - version "8.15.0" - resolved "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== - address@^1.0.1, address@^1.1.2: version "1.2.2" resolved "https://registry.npmmirror.com/address/-/address-1.2.2.tgz" @@ -3686,7 +3686,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3696,7 +3696,27 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: +ajv@^8.0.0: + version "8.17.1" + resolved "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ajv@^8.6.0, ajv@>=8: + version "8.17.1" + resolved "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ajv@^8.8.2, ajv@^8.9.0: version "8.17.1" resolved "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz" integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== @@ -3799,6 +3819,11 @@ aria-hidden@^1.2.4: dependencies: tslib "^2.0.0" +aria-query@^5.0.0, aria-query@^5.3.2: + version "5.3.2" + resolved "https://registry.npmmirror.com/aria-query/-/aria-query-5.3.2.tgz" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== + aria-query@5.1.3: version "5.1.3" resolved "https://registry.npmmirror.com/aria-query/-/aria-query-5.1.3.tgz" @@ -3813,11 +3838,6 @@ aria-query@5.3.0: dependencies: dequal "^2.0.3" -aria-query@^5.0.0, aria-query@^5.3.2: - version "5.3.2" - resolved "https://registry.npmmirror.com/aria-query/-/aria-query-5.3.2.tgz" - integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== - array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz" @@ -4235,7 +4255,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.25.0: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.25.0, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4: version "4.25.1" resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.25.1.tgz" integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== @@ -4516,16 +4536,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-string@^1.5.5: version "1.9.1" resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz" @@ -4551,11 +4571,6 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@7, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - commander@^2.20.0: version "2.20.3" resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz" @@ -4566,11 +4581,21 @@ commander@^4.0.0: resolved "https://registry.npmmirror.com/commander/-/commander-4.1.1.tgz" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commander@^8.3.0: version "8.3.0" resolved "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@7: + version "7.2.0" + resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + common-tags@^1.8.0: version "1.8.2" resolved "https://registry.npmmirror.com/common-tags/-/common-tags-1.8.2.tgz" @@ -4628,7 +4653,17 @@ content-type@~1.0.4, content-type@~1.0.5: resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0: + version "1.9.0" + resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^1.6.0: + version "1.9.0" + resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -4805,6 +4840,22 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz" @@ -4813,14 +4864,6 @@ css-tree@1.0.0-alpha.37: mdn-data "2.0.4" source-map "^0.6.1" -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - css-what@^3.2.1: version "3.4.2" resolved "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz" @@ -4919,12 +4962,12 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -csstype@^3.0.2, csstype@^3.0.8, csstype@^3.1.3: +csstype@^3.0.10, csstype@^3.0.2, csstype@^3.0.8, csstype@^3.1.3: version "3.1.3" resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -"d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@^3.1.6, d3-array@^3.2.4: +d3-array@^3.1.6, d3-array@^3.2.4, "d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3": version "3.2.4" resolved "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz" integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== @@ -4936,17 +4979,17 @@ d3-binarytree@1: resolved "https://registry.npmmirror.com/d3-binarytree/-/d3-binarytree-1.0.2.tgz" integrity sha512-cElUNH+sHu95L04m92pG73t2MEJXKu+GeKUN1TJkFsu93E5W8E9Sc3kHEGJKgenGvj19m6upSn2EunvMgMD2Yw== -"d3-color@1 - 3", d3-color@^3.1.0: +d3-color@^3.1.0, "d3-color@1 - 3": version "3.1.0" resolved "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== -"d3-dispatch@1 - 3", d3-dispatch@^3.0.1: +d3-dispatch@^3.0.1, "d3-dispatch@1 - 3": version "3.0.1" resolved "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz" integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== -"d3-dsv@1 - 3", d3-dsv@^3.0.1: +d3-dsv@^3.0.1, "d3-dsv@1 - 3": version "3.0.1" resolved "https://registry.npmmirror.com/d3-dsv/-/d3-dsv-3.0.1.tgz" integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== @@ -4987,7 +5030,7 @@ d3-force@^3.0.0: d3-quadtree "1 - 3" d3-timer "1 - 3" -"d3-format@1 - 3", d3-format@^3.1.0: +d3-format@^3.1.0, "d3-format@1 - 3": version "3.1.0" resolved "https://registry.npmmirror.com/d3-format/-/d3-format-3.1.0.tgz" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== @@ -5001,7 +5044,7 @@ d3-geo-projection@^4.0.0: d3-array "1 - 3" d3-geo "1.12.0 - 3" -"d3-geo@1.12.0 - 3", d3-geo@^3.1.1: +d3-geo@^3.1.1, "d3-geo@1.12.0 - 3": version "3.1.1" resolved "https://registry.npmmirror.com/d3-geo/-/d3-geo-3.1.1.tgz" integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== @@ -5013,7 +5056,7 @@ d3-hierarchy@^3.1.2: resolved "https://registry.npmmirror.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz" integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== -"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@^3.0.1: +d3-interpolate@^3.0.1, "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3": version "3.0.1" resolved "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== @@ -5030,7 +5073,7 @@ d3-path@^3.1.0: resolved "https://registry.npmmirror.com/d3-path/-/d3-path-3.1.0.tgz" integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== -"d3-quadtree@1 - 3", d3-quadtree@^3.0.1: +d3-quadtree@^3.0.1, "d3-quadtree@1 - 3": version "3.0.1" resolved "https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz" integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== @@ -5078,14 +5121,14 @@ d3-shape@^3.1.0, d3-shape@^3.2.0: dependencies: d3-time "1 - 3" -"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@^3.0.0, d3-time@^3.1.0: +d3-time@^3.0.0, d3-time@^3.1.0, "d3-time@1 - 3", "d3-time@2.1.1 - 3": version "3.1.0" resolved "https://registry.npmmirror.com/d3-time/-/d3-time-3.1.0.tgz" integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== dependencies: d3-array "2 - 3" -"d3-timer@1 - 3", d3-timer@^3.0.1: +d3-timer@^3.0.1, "d3-timer@1 - 3": version "3.0.1" resolved "https://registry.npmmirror.com/d3-timer/-/d3-timer-3.0.1.tgz" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== @@ -5136,9 +5179,9 @@ date-fns-jalali@4.1.0-0: resolved "https://registry.npmmirror.com/date-fns-jalali/-/date-fns-jalali-4.1.0-0.tgz" integrity sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg== -date-fns@4.1.0, date-fns@latest: +date-fns@^4.1.0, date-fns@4.1.0: version "4.1.0" - resolved "https://registry.npmmirror.com/date-fns/-/date-fns-4.1.0.tgz" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz" integrity sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg== dayjs@^1.11.13, dayjs@^1.9.1: @@ -5146,20 +5189,13 @@ dayjs@^1.11.13, dayjs@^1.9.1: resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz" integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== -debug@2.6.9, debug@^2.6.0: +debug@^2.6.0: version "2.6.9" resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.1: - version "4.4.1" - resolved "https://registry.npmmirror.com/debug/-/debug-4.4.1.tgz" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== - dependencies: - ms "^2.1.3" - debug@^3.2.7: version "3.2.7" resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz" @@ -5167,6 +5203,20 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.1, debug@4: + version "4.4.1" + resolved "https://registry.npmmirror.com/debug/-/debug-4.4.1.tgz" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + decimal.js-light@^2.5.1: version "2.5.1" resolved "https://registry.npmmirror.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz" @@ -5251,16 +5301,16 @@ delayed-stream@~1.0.0: resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + dequal@^2.0.3: version "2.0.3" resolved "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz" @@ -5367,14 +5417,6 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz" @@ -5384,16 +5426,24 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -domelementtype@1: - version "1.3.1" - resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + domexception@^2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/domexception/-/domexception-2.0.1.tgz" @@ -5895,7 +5945,7 @@ eslint-plugin-testing-library@^5.0.1: dependencies: "@typescript-eslint/utils" "^5.58.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5911,6 +5961,14 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" @@ -5932,7 +5990,7 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.3.0: +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0 || ^9.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, "eslint@>= 6": version "8.57.1" resolved "https://registry.npmmirror.com/eslint/-/eslint-8.57.1.tgz" integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== @@ -5985,16 +6043,16 @@ espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@1.2.2: - version "1.2.2" - resolved "https://registry.npmmirror.com/esprima/-/esprima-1.2.2.tgz" - integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== - esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esprima@1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/esprima/-/esprima-1.2.2.tgz" + integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== + esquery@^1.4.2: version "1.6.0" resolved "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz" @@ -6009,7 +6067,12 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^4.2.0: version "4.3.0" resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -6365,7 +6428,17 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -6385,11 +6458,6 @@ fs.realpath@^1.0.0: resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz" @@ -6480,7 +6548,7 @@ gl-matrix@^3.3.0, gl-matrix@^3.4.3: resolved "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz" integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -6494,6 +6562,13 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" @@ -6734,6 +6809,16 @@ http-deceiver@^1.2.7: resolved "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz" @@ -6745,16 +6830,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: version "0.5.10" resolved "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.10.tgz" @@ -6802,6 +6877,13 @@ human-signals@^2.1.0: resolved "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +iconv-lite@^0.6.3, iconv-lite@0.6: + version "0.6.3" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -6809,13 +6891,6 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.6, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz" @@ -6838,7 +6913,12 @@ ignore@^5.2.0: resolved "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -immer@^10.0.3, immer@^10.1.1: +immer@^10.0.3: + version "10.1.1" + resolved "https://registry.npmmirror.com/immer/-/immer-10.1.1.tgz" + integrity sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw== + +immer@^10.1.1: version "10.1.1" resolved "https://registry.npmmirror.com/immer/-/immer-10.1.1.tgz" integrity sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw== @@ -6882,7 +6962,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6921,16 +7001,16 @@ intersection-observer@^0.12.0: resolved "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.12.2.tgz" integrity sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg== -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - ipaddr.js@^2.0.1: version "2.2.0" resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-arguments@^1.1.1: version "1.2.0" resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.2.0.tgz" @@ -7568,7 +7648,7 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve@^27.4.2, jest-resolve@^27.5.1: +jest-resolve@*, jest-resolve@^27.4.2, jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.npmmirror.com/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== @@ -7778,7 +7858,7 @@ jest-worker@^28.0.2: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.4.3: +"jest@^27.0.0 || ^28.0.0", jest@^27.4.3: version "27.5.1" resolved "https://registry.npmmirror.com/jest/-/jest-27.5.1.tgz" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== @@ -8003,7 +8083,12 @@ lilconfig@^2.0.3: resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== -lilconfig@^3.0.0, lilconfig@^3.1.3: +lilconfig@^3.0.0: + version "3.1.3" + resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.3.tgz" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== + +lilconfig@^3.1.3: version "3.1.3" resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.3.tgz" integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== @@ -8213,7 +8298,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: braces "^3.0.3" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -8291,16 +8376,16 @@ mkdirp@~0.5.1: dependencies: minimist "^1.2.6" +ms@^2.1.1, ms@^2.1.3, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + ms@2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.3, ms@^2.1.1, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - multicast-dns@^7.2.5: version "7.2.5" resolved "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz" @@ -8333,16 +8418,16 @@ natural-compare@^1.4.0: resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - negotiator@~0.6.4: version "0.6.4" resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.4.tgz" integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz" @@ -9313,15 +9398,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^7.0.35: - version "7.0.39" - resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8, postcss@^8.3.5, postcss@^8.4.33, postcss@^8.4.4, postcss@^8.4.47: +"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.1.4, postcss@^8.2, postcss@^8.2.14, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3, postcss@^8.3.5, postcss@^8.4, postcss@^8.4.21, postcss@^8.4.33, postcss@^8.4.4, postcss@^8.4.47, postcss@^8.4.6, "postcss@>= 8", postcss@>=8, postcss@>=8.0.9: version "8.5.6" resolved "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz" integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== @@ -9330,6 +9407,14 @@ postcss@^8, postcss@^8.3.5, postcss@^8.4.33, postcss@^8.4.4, postcss@^8.4.47: picocolors "^1.1.1" source-map-js "^1.2.1" +postcss@^7.0.35: + version "7.0.39" + resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -9540,7 +9625,7 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^18.2.0: +"react-dom@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^16.8 || ^17.0 || ^18.0", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18 || ^19 || ^19.0.0-rc", react-dom@^18.0.0, "react-dom@^18.0.0 || ^19.0.0 || ^19.0.0-rc", react-dom@^18.2.0, react-dom@>=16, react-dom@>=16.13.1, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0, react-dom@>=16.8.4, react-dom@>=18.0.0: version "18.3.1" resolved "https://registry.npmmirror.com/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -9558,7 +9643,7 @@ react-fast-compare@^3.2.2: resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz" integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== -react-hook-form@^7.54.1: +react-hook-form@^7.0.0, react-hook-form@^7.54.1: version "7.59.0" resolved "https://registry.npmmirror.com/react-hook-form/-/react-hook-form-7.59.0.tgz" integrity sha512-kmkek2/8grqarTJExFNjy+RXDIP8yM+QTl3QL6m6Q8b2bih4ltmiXxH7T9n+yXNK477xPh5yZT/6vD8sYGzJTA== @@ -9571,12 +9656,17 @@ react-hot-toast@^2.5.2: csstype "^3.1.3" goober "^2.1.16" -react-is@^16.13.1, react-is@^16.7.0: +react-is@^16.13.1: version "16.13.1" resolved "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1: +react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +"react-is@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", react-is@^17.0.1: version "17.0.2" resolved "https://registry.npmmirror.com/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -9586,7 +9676,7 @@ react-is@^18.0.0: resolved "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -"react-redux@8.x.x || 9.x.x": +"react-redux@^7.2.1 || ^8.1.3 || ^9.0.0", "react-redux@8.x.x || 9.x.x": version "9.2.0" resolved "https://registry.npmmirror.com/react-redux/-/react-redux-9.2.0.tgz" integrity sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g== @@ -9594,7 +9684,7 @@ react-is@^18.0.0: "@types/use-sync-external-store" "^0.0.6" use-sync-external-store "^1.4.0" -react-refresh@^0.11.0: +react-refresh@^0.11.0, "react-refresh@>=0.10.0 <1.0.0": version "0.11.0" resolved "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.11.0.tgz" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== @@ -9638,7 +9728,7 @@ react-router@6.30.1: dependencies: "@remix-run/router" "1.23.0" -react-scripts@5.0.1: +react-scripts@^5.0.0, react-scripts@5.0.1: version "5.0.1" resolved "https://registry.npmmirror.com/react-scripts/-/react-scripts-5.0.1.tgz" integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== @@ -9711,7 +9801,7 @@ react-transition-group@^4.4.2: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^18.2.0: +"react@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8 || ^17.0 || ^18.0", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.9.0 || ^17.0.0 || ^18 || ^19", "react@^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc", "react@^18 || ^19 || ^19.0.0-rc", "react@^18.0 || ^19", react@^18.0.0, "react@^18.0.0 || ^19.0.0 || ^19.0.0-rc", react@^18.2.0, react@^18.3.1, "react@>= 16", "react@>= 16.8.0", react@>=16, react@>=16.13.1, react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=16.8.4, react@>=18.0.0: version "18.3.1" resolved "https://registry.npmmirror.com/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -9791,7 +9881,7 @@ redux-thunk@^3.1.0: resolved "https://registry.npmmirror.com/redux-thunk/-/redux-thunk-3.1.0.tgz" integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== -redux@^5.0.1: +redux@^5.0.0, redux@^5.0.1: version "5.0.1" resolved "https://registry.npmmirror.com/redux/-/redux-5.0.1.tgz" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== @@ -9899,7 +9989,7 @@ requires-port@^1.0.0: resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -reselect@5.1.1, reselect@^5.1.0: +reselect@^5.1.0, reselect@5.1.1: version "5.1.1" resolved "https://registry.npmmirror.com/reselect/-/reselect-5.1.1.tgz" integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== @@ -9987,7 +10077,7 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup@^2.43.1: +"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: version "2.79.2" resolved "https://registry.npmmirror.com/rollup/-/rollup-2.79.2.tgz" integrity sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ== @@ -10017,7 +10107,7 @@ safe-array-concat@^1.1.2, safe-array-concat@^1.1.3: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -10081,15 +10171,6 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.0.tgz" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz" @@ -10118,6 +10199,15 @@ schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3 ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + screenfull@^5.0.0: version "5.2.0" resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz" @@ -10136,7 +10226,17 @@ selfsigned@^2.1.1: "@types/node-forge" "^1.3.0" node-forge "^1" -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.0.0: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.1: version "6.3.1" resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -10385,7 +10485,12 @@ source-map-support@^0.5.6, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.6.1, source-map@0.6.1: version "0.6.1" resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -10402,6 +10507,16 @@ source-map@^0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" @@ -10466,16 +10581,16 @@ static-eval@2.0.2: dependencies: escodegen "^1.8.1" -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + stop-iteration-iterator@^1.0.0, stop-iteration-iterator@^1.1.0: version "1.1.0" resolved "https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz" @@ -10484,6 +10599,20 @@ stop-iteration-iterator@^1.0.0, stop-iteration-iterator@^1.1.0: es-errors "^1.3.0" internal-slot "^1.1.0" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmmirror.com/string-length/-/string-length-4.0.2.tgz" @@ -10600,20 +10729,6 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.npmmirror.com/stringify-object/-/stringify-object-3.3.0.tgz" @@ -10793,7 +10908,7 @@ tailwindcss-animate@^1.0.7: resolved "https://registry.npmmirror.com/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz" integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== -tailwindcss@^3.0.2, tailwindcss@^3.4.17: +tailwindcss@^3.0.2, tailwindcss@^3.4.17, "tailwindcss@>=3.0.0 || insiders": version "3.4.17" resolved "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.4.17.tgz" integrity sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og== @@ -10999,7 +11114,7 @@ ts-interface-checker@^0.1.9: resolved "https://registry.npmmirror.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -ts-node@^10.7.0: +ts-node@^10.7.0, ts-node@>=9.0.0: version "10.9.2" resolved "https://registry.npmmirror.com/ts-node/-/ts-node-10.9.2.tgz" integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== @@ -11069,7 +11184,7 @@ type-fest@^0.16.0: resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.16.0.tgz" integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== -type-fest@^0.20.2: +type-fest@^0.20.2, "type-fest@>=0.17.0 <5.0.0": version "0.20.2" resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== @@ -11139,7 +11254,7 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.9.5: +"typescript@^3.2.1 || ^4", typescript@^4.9.5, "typescript@>= 2.7", typescript@>=2.7, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=3: version "4.9.5" resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -11204,7 +11319,7 @@ universalify@^2.0.0: resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -11405,7 +11520,7 @@ webpack-dev-middleware@^5.3.4: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.6.0: +webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x || 5.x": version "4.15.2" resolved "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz" integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== @@ -11479,7 +11594,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.3.3.tgz" integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== -webpack@^5.64.4: +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": version "5.99.9" resolved "https://registry.npmmirror.com/webpack/-/webpack-5.99.9.tgz" integrity sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg== @@ -11509,7 +11624,7 @@ webpack@^5.64.4: watchpack "^2.4.1" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==