diff --git a/.woodpecker/.woodpecker.yml b/.woodpecker/.woodpecker.yml
index 94ea84d..6a4f719 100644
--- a/.woodpecker/.woodpecker.yml
+++ b/.woodpecker/.woodpecker.yml
@@ -1,20 +1,142 @@
-when:
- event: manual
-
steps:
checkout:
image: debian:latest
environment:
- FORGEJO_TOKEN:
- from_secret: forgejo_token
+ GONETS:
+ from_secret: GONETS
commands:
# ПОДГОТОВКА ГИТА И КЛОНИРОВАНИЕ GONETS
- apt update
- apt install -y git git-lfs
- git lfs install
- - git config --global user.email "s.galanskiy@gossys.dev"
- - git config --global user.name "s.galanskiy"
- - touch file
- - git add .
- - git commit -m "commit"
- - git push https://$FORGEJO_TOKEN@dev.gossys.dev/s.galanskiy/gonets.git
\ No newline at end of file
+
+ # УСТАНОВКА НЕОБХОДИМЫХ ЗАВИСИМОСТЕЙ НА СИСТЕМЕ
+ - apt update
+ - apt install -y python3 curl findutils grep sed openssh-server tree libnss3 libnss3-dev libnspr4 libnspr4-dev libasound2 libasound2-dev python3.11-venv python3-pip python3-poetry nodejs npm debhelper devscripts build-essential fakeroot dh-make dpkg-dev cmake libgirepository1.0-dev gobject-introspection libcairo2-dev pkg-config python3-dev libdbus-1-dev
+ - python3 --version
+ - node -v
+ - npm -v
+
+ # ПОДГОТОВКА СПИСКА PYTHON ЗАВИСИМОСТЕЙ GONETS
+ - rm -rf /usr/lib/python3.11/EXTERNALLY-MANAGED
+ - rm -rf /root/.local/share/pypoetry
+ - rm -rf /root/.poetry
+ - rm -rf /usr/bin/poetry
+ - pip install pipx
+ - pipx ensurepath
+ - pipx install poetry
+ - echo 'export PATH="$HOME/.local/bin:$PATH"' >> /root/.bashrc
+ - . /root/.bashrc
+ - poetry --version
+ - cd SRV
+ - poetry env activate
+ - poetry add poetry-plugin-export
+ - poetry install
+ - poetry self update
+ - rm -f requirements.txt
+ - poetry run poetry export -f requirements.txt --output requirements.txt --without-hashes
+
+ # ПОДГОТОВКА И СБОРКА FRONTEND ЧАСТИ GONETS
+ - pwd
+ - cd ..
+ - pwd
+ - cd FRONT/DEV
+ - pwd
+ - npm install
+ - npm run package
+ - cd dist/gonets-linux-x64/resources/app
+ - pwd
+ - npm run build
+ - sed -i 's#href="/assets/#href="./assets/#g' dist/index.html
+ - sed -i 's#src="/assets/#src="./assets/#g' dist/index.html
+ - cd ../../../../..
+ - pwd
+ - rm -rf BUILD/*
+ - cp -r DEV/dist/gonets-linux-x64/* BUILD/
+ - rm -rf DEV
+
+ # ИНИЦИАЛИЗАЦИЯ DEBIAN КОНФИГУРАЦИЙ ДЛЯ СБОРКИ
+ - cd ..
+ - pwd
+ - cd ..
+ - pwd
+ - mv gonets gonets-0.1
+ - cd gonets-0.1
+ - pwd
+ - ls
+ - DEBEMAIL="devteam@gossys.dev" DEBFULLNAME="GOSSYS LLC" dh_make --single -y --createorig
+ - cd debian/
+ - rm -f *.ex
+ - rm -f README.*
+
+ # КЛОНИРОВАНИЕ НЕОБХОДИМЫХ ШАБЛОНОВ КОНФИГОВ ДЕБИАНА ДЛЯ СБОРКИ
+ - mkdir -p /woodpecker/src/dev.gossys.dev/s.galanskiy/templates
+ - git clone https://s.galanskiy:${GONETS}@dev.gossys.dev/s.galanskiy/gonets-debian-template.git /woodpecker/src/dev.gossys.dev/s.galanskiy/templates
+ - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/changelog /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/
+ - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/control /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/
+ - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/copyright /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/
+ - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/install /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/
+ - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/postinst /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/
+ - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/postrm /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/
+ - mv /woodpecker/src/dev.gossys.dev/s.galanskiy/templates/rules /woodpecker/src/dev.gossys.dev/s.galanskiy/gonets-0.1/debian/
+
+ # СБОРКА ДЕБИАН ПАКЕТА
+ - cd ..
+ - pwd
+ - dpkg-buildpackage -us -uc -b
+
+ # ИЗВЛЕЧЕНИЕ ВЕРСИИ ПАКЕТА ДЛЯ КОММИТА
+ - VERSION=$(dpkg-parsechangelog -l./debian/changelog --show-field Version)
+ - echo "VERSION=$VERSION" > version.env
+
+ # КОММИТ И ТЕГ НА ВЕТКУ DEVELOP
+ - . ./version.env
+ - git config user.name "s.galanskiy"
+ - git config user.email "s.galanskiy@gossys.dev"
+ - git fetch --all --prune
+ - git branch -r
+ - git checkout -b "release/$VERSION"
+ - git commit -am "Релиз $VERSION"
+ - git tag -f "v$VERSION"
+ - git push "https://s.galanskiy:b4785198d18200dfed812dc4299575f736255bd7@dev.gossys.dev/s.galanskiy/gonets.git" "release/$VERSION"
+ - git push -f https://s.galanskiy:b4785198d18200dfed812dc4299575f736255bd7@dev.gossys.dev/s.galanskiy/gonets.git "v$VERSION"
+
+ # СОЗДАНИЕ И ЗАГРУЗКА РЕЛИЗА ЧЕРЕЗ API
+ - |
+ VERSION=$(dpkg-parsechangelog -l./debian/changelog --show-field Version)
+ echo "VERSION=$VERSION" > version.env
+
+ # Задать переменные
+ . ./version.env
+ TAG="v$VERSION"
+
+ # Найти .deb файл в родительской директории
+ DEB_PATH=$(find .. -maxdepth 1 -type f -name "gonets_${VERSION}_amd64.deb" | head -n 1)
+
+ # Проверка наличия файла
+ if [ ! -f "$DEB_PATH" ]; then
+ echo "❌ .deb файл не найден по пути: $DEB_PATH"
+ exit 1
+ fi
+
+ # Создание релиза
+ RELEASE_JSON=$(curl -s -X POST "https://dev.gossys.dev/api/v1/repos/s.galanskiy/gonets/releases" \
+ -H "Authorization: token b4785198d18200dfed812dc4299575f736255bd7" \
+ -H "Content-Type: application/json" \
+ -d "{\"tag_name\": \"$TAG\", \"name\": \"Релиз $TAG\", \"body\": \"Сборка .deb пакета для версии $TAG\", \"draft\": false, \"prerelease\": true}")
+
+ # Извлечение ID релиза
+ RELEASE_ID=$(echo "$RELEASE_JSON" | grep '"id":' | head -n1 | sed 's/[^0-9]*\([0-9]*\).*/\1/')
+
+ # Проверка ID
+ if [ -z "$RELEASE_ID" ]; then
+ echo "❌ Не удалось получить ID релиза из ответа:"
+ echo "$RELEASE_JSON"
+ exit 1
+ fi
+
+ # Загрузка .deb файла как asset
+ curl -s -X POST \
+ -H "Authorization: token b4785198d18200dfed812dc4299575f736255bd7" \
+ -F "attachment=@$DEB_PATH" \
+ "https://dev.gossys.dev/api/v1/repos/s.galanskiy/gonets/releases/$RELEASE_ID/assets" || echo "❌ Ошибка загрузки файла"
\ No newline at end of file
diff --git a/FRONT/BUILD/index.html b/FRONT/BUILD/index.html
deleted file mode 100644
index 8f4d4d1..0000000
--- a/FRONT/BUILD/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- GoNets
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/FRONT/BUILD/resources/app/src/api/request.ts b/FRONT/BUILD/resources/app/src/api/request.ts
index 27dafd1..99f1f22 100644
--- a/FRONT/BUILD/resources/app/src/api/request.ts
+++ b/FRONT/BUILD/resources/app/src/api/request.ts
@@ -1,13 +1,13 @@
import axios, { AxiosResponse } from "axios";
const axiosWithoutCredentials = axios.create({
- baseURL: `https://localhost:8001`,
+ baseURL: `http://localhost:8001`,
})
export class NetworkService {
static createAxiosInstance(ipAddress: string) {
return axios.create({
- baseURL: `https://${ipAddress}:8001`,
+ baseURL: `http://${ipAddress}:8001`,
});
}
diff --git a/FRONT/BUILD/resources/app/src/components/UI/Dropdown/DeviceCard.tsx b/FRONT/BUILD/resources/app/src/components/UI/Dropdown/DeviceCard.tsx
index cfed6c4..0345346 100644
--- a/FRONT/BUILD/resources/app/src/components/UI/Dropdown/DeviceCard.tsx
+++ b/FRONT/BUILD/resources/app/src/components/UI/Dropdown/DeviceCard.tsx
@@ -100,7 +100,7 @@ const DeviceCard: React.FC = ({ device, status }) => {
Имя:
- {device.hostname || 'Неизвестно'}
+ {device.hostname || device.ip}
diff --git a/FRONT/BUILD/resources/app/src/components/UI/tables/TableScanner.tsx b/FRONT/BUILD/resources/app/src/components/UI/tables/TableScanner.tsx
index e1b8c6f..8657a17 100644
--- a/FRONT/BUILD/resources/app/src/components/UI/tables/TableScanner.tsx
+++ b/FRONT/BUILD/resources/app/src/components/UI/tables/TableScanner.tsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, {useState} from 'react';
import { DeviceUser } from '../../../store/useDeviceStore';
interface TableScannerProps {
@@ -9,18 +9,19 @@ import {IconComponent} from "../../../const/buttons/icons";
import {buttonNames} from "../../../const/buttons/names";
import {ModalMap} from "../../modalwindows/windowsType";
import {useModalContext} from "../../../store";
+import Pagination from "../Pagination";
const TableContainer = styled.div`
width: 100%;
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
- background: ${({ theme }) => theme.primary};
margin: 24px 0;
`;
const StyledTable = styled.table`
- width: 100%;
- border-collapse: separate;
- border-spacing: 0;
+ width: 100%;
+ border-collapse: separate;
+ border-spacing: 0;
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
+ background: ${({ theme }) => theme.primary};
`;
const TableHeaderCell = styled.th<{ sortable?: boolean }>`
@@ -28,7 +29,7 @@ const TableHeaderCell = styled.th<{ sortable?: boolean }>`
text-align: left;
font-weight: 600;
font-size: 14px;
- color: ${({ theme }) => theme.textSecondary};
+ color: ${({ theme }) => theme.textColor};
background: ${({ theme }) => theme.primary};
border-bottom: 1px solid ${({ theme }) => theme.borderColor};
transition: all 0.2s ease;
@@ -47,6 +48,11 @@ const TableCell = styled.td`
color: ${({ theme }) => theme.text};
border-bottom: 1px solid ${({ theme }) => theme.borderColor};
transition: all 0.2s ease;
+ button{
+ background-color: transparent;
+ border: none;
+ cursor: pointer;
+ }
`;
const StatusBadge = styled.span<{ status:string }>`
@@ -68,7 +74,23 @@ const TableScanner = ({devices}:TableScannerProps) => {
});
};
- return (
+ // Пагинация
+ const [currentPage, setCurrentPage] = useState(1);
+ const [devicesPerPage] = useState(10);
+
+ const indexOfLastDevice = currentPage * devicesPerPage;
+ const indexOfFirstDevice = indexOfLastDevice - devicesPerPage;
+ const currentDevices = devices.slice(indexOfFirstDevice, indexOfLastDevice);
+ const totalPages = Math.ceil(devices.length / devicesPerPage);
+
+ const handlePrevPage = () => {
+ if(currentPage > 1) setCurrentPage(currentPage - 1);
+ }
+ const handleNextPage = () => {
+ if(currentPage < totalPages) setCurrentPage(currentPage + 1);
+ }
+
+ return (
@@ -84,24 +106,30 @@ const TableScanner = ({devices}:TableScannerProps) => {
- {devices.map((item, i) => (
+ {currentDevices.map((item, i) => (
- {item.hostname || 'Неизвестен'}
+ {item.hostname || item.ip}
{item.vendor}
{item.ip}
{item.open_ports.join(', ') || '-'}
{item.last_seen}
{item.note || '-'}
- openModalNote(e, item)}>
+ openModalNote(e, item)}>
-
+
))}
+
);
};
diff --git a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/about.tsx b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/about.tsx
index 57207b9..59a4c39 100644
--- a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/about.tsx
+++ b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/about.tsx
@@ -2,8 +2,10 @@
import { MainButton } from "../../../UI/buttons/mainButton"
import { workSpaceNames } from "../../../../const/workspace/names"
import { useWorkSpaceStore } from "../../../../store"
-import styled from "styled-components"
+import styled, {useTheme} from "styled-components"
import ThemeButton from "../../../UI/buttons/toggletheme"
+import {buttonNames} from "../../../../const/buttons/names";
+import {IconComponent} from "../../../../const/buttons/icons";
type Props = {
from: 'reg' | 'helloWindow' | 'workSpace'
@@ -29,23 +31,41 @@ const Content = styled.div`
justify-content: space-between;
height: 100%;
box-sizing: border-box;
- padding: 25px 50px;
- background: ${(props => props.theme.secondary)};
+ padding: 40px 50px;
+ background: ${(props => props.theme.primary)};
border-radius: 18px;
+ position: relative;
`
const Listing = styled.div`
display: flex;
flex-direction: column;
- gap: 15px;
-
+ background-color: ${(props => props.theme.secondary)};
+ border-radius: 10px;
+ padding: 24px 20px;
+ p{
+ font-weight: bold;
+ font-size: 24px;
+ }
`
-const List = styled.div`
+const List = styled.ul`
display: flex;
flex-direction: column;
- gap: 15px;
- margin-left: 10px;
+ margin: 10px 0;
+ padding: 0;
+ list-style-type: none;
+ font-size: 18px;
+ gap: 4px;
+ & li:before {
+ color: ${(props => props.theme.accent)};
+ content: "•";
+ font-size: 28px;
+ width: .8em;
+ display: inline-block;
+ position: relative;
+ top: 2px;
+ }
`
const Title = styled.div`
@@ -55,43 +75,55 @@ const Title = styled.div`
const SubTitle = styled.div`
display: flex;
flex-direction: column;
- gap: 10px;
-
+ gap: 24px;
+ background-color:rgba(255, 248, 225, 0.6);
+ border-left: #ff9800 solid 4px;
+ border-radius: 0 8px 8px 0;
+ padding: 20px 12px;
+
+ a{
+ text-decoration: none;
+ color: ${(props => props.theme.errorColor)};
+ font-weight: 500;
+ font-size: 18px;
+ width: max-content;
+ }
p{
font-size: 18px;
+ color: ${(props=>props.theme.textColor)};
+ }
+ .icon{
+ width: 32px;
+ height: 32px;
+ fill: #ff9800;
}
-
`
const Links = styled.div`
display: flex;
- flex-direction: column;
+ justify-content: start;
gap: 20px;
`
-const LinkColumn = styled.div`
- display: flex;
- flex-direction: column;
- gap: 10px;
-`
-
-
-const LinkBlock = styled.div`
- display: flex;
- gap: 5px;
+const LinkBlock = styled.a`
+ text-decoration: none;
+ color: ${(props => props.theme.accent)};;
`
const Copyright = styled.div`
width: 100%;
- text-align: center;
- margin-top: 50px;
+ text-align: start;
+ color: ${(props => props.theme.offlineColor)};
`
const ButtonContainer = styled.div`
+ position: absolute;
+ top: 12px;
+ right: 14px;
+`
+const AboutLine = styled.hr`
+ border: ${(props => props.theme.hoverBtn)} 1px solid;
width: 100%;
- display: flex;
- justifi-content: flex-start;
- align-items: center;
`
const MainTitle = styled.div`
@@ -99,24 +131,33 @@ const MainTitle = styled.div`
display: flex;
gap: 15px;
align-items: center;
- justify-content: center;
- padding-top: 50px;
+ justify-content: space-between;
+ padding-top: 10px;
box-sizing: border-box;
img{
- width: 40px;
- height: 40px;
+ width: 50px;
+ height: 50px;
+ }
+ .version{
+ text-wrap: nowrap;
+ background-color: ${(props => props.theme.hoverBtn)};
+ color: ${(props => props.theme.borderColor)};
+ border-radius: 20px;
+ font-size: 18px;
+ padding: 10px 18px;
+ line-height: 1;
+ }
+ .title{
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 24px;
}
-`
-const Text = styled.div`
- display: flex;
- flex-direction: column;
- gap: 30px;
`
export default function About({ from, onBack }: Props) {
const { setWorkModule } = useWorkSpaceStore()
-
const getBackHandler = () => {
switch (from) {
case 'reg':
@@ -138,68 +179,63 @@ export default function About({ from, onBack }: Props) {
-
-
О приложении
-
+
+
+
О приложении
+
+ v 0.0.3
+
-
+
+ ГоNets — минимально работоспособный кроссплатформенный продукт (MVP) для демонстрации нашего подхода к управлению настройками ПК в корпоративной среде.
+
-
- Приложение ГоNets является минимально работоспособным кроссплатформенным продуктом (MVP) для демонстрации нашего подхода к управлению настройками ПК в корпоративной среде.
-
+
+ Возможности:
+
+ Визуализация активных сетевых ресурсов
+ Настройка параметров локальных и удалённых сетевых ресурсов
+ Управление взаимодействием ресурсов с Клиентом ГoNets
+
+
+
+
+
+
+ Программное обеспечение исключительно для ознакомления и домашнего использования.
+ Перейти на ГоNets-PRO
+
-
- Данное приложение умеет:
-
- - Отображать в графическом виде активные сетевые ресурсы
- - Настраивать сетевые параметры локального и удаленных сетевых ресурсов
- - Отображать и изменять взаимодействие сетевых ресурсов с установленным Клиентом ГоNets
-
-
+
+
+ Домашняя страницa
+
-
- Программное обеспечение исключительно для ознакомления и домашнего использования.
- Для коммерческого использования приобретите версию ГоNets-PRO (Подробная информация на странице продукта)
-
+
+ Документация
+
-
-
- Ссылка на домашнюю страницу:
- https://gossys.dev/pages/projects/gonets
-
-
-
- Инструкции и информация:
- https://wiki.gossys.dev/ru/gonets
-
-
-
- Распространяется под лицензией GosysPUB текущей версии.
-
- Полный текст актуальной лицензии:
- https://wiki.gossys.dev/ru/lic/GosysPUB
-
-
-
-
-
-
- Разработано и поддерживается ООО «Гибридные Офисные Системы» 2024-2025 г. Все права защищены.
-
-
-
+
+ Лицензия
+
+
+
+ Разработано и поддерживается ООО «Гибридные Офисные Системы» 2024-2025 г. Все права защищены.
+
{showBackButton && backHandler && (
-
+
)}
{from == 'reg' &&
diff --git a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/modules/ListUsers.tsx b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/modules/ListUsers.tsx
index 1075a09..52f146e 100644
--- a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/modules/ListUsers.tsx
+++ b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/modules/ListUsers.tsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useState } from 'react';
import styled from 'styled-components';
import DeviceCard from "../../../../../UI/Dropdown/DeviceCard";
import {DeviceUser} from "../../../../../../store/useDeviceStore";
@@ -28,10 +28,15 @@ const ListUsers = ({loading, handleScan, devices, scanInitiated}: ListUsersProps
const activeDevices = devices.filter(device => device.status === 'online');
const inactiveDevices = devices.filter(device => device.status !== 'online');
+ // Пагинация
+ const [currentPage, setCurrentPage] = useState(1);
+ const [devicesPerPage] = useState(10);
+
+
return (
<>
- {devices.length > 0 ? 'Обновить список' : 'Сканировать сеть'}
+ {devices.length > 0 ? 'Обновить список' : 'Сканировать узлы'}
{devices.length > 0 ? (
@@ -42,7 +47,7 @@ const ListUsers = ({loading, handleScan, devices, scanInitiated}: ListUsersProps
}}>
{/* Колонка активных устройств */}
-
Активные устройства ({activeDevices.length})
+
Активные узлы ({activeDevices.length})
{activeDevices.map((device, index) => (
{/* Колонка неактивных устройств */}
-
Неактивные устройства ({inactiveDevices.length})
+ Неактивные узлы ({inactiveDevices.length})
{inactiveDevices.map((device, index) => (
) : scanInitiated ? (
- Устройства не найдены
+ Узлы не найдены
) : null}
>
);
diff --git a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/modules/TableUsers.tsx b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/modules/TableUsers.tsx
index ebe71a9..77e064c 100644
--- a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/modules/TableUsers.tsx
+++ b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/modules/TableUsers.tsx
@@ -30,13 +30,13 @@ const ListUsers = ({loading, handleScan, devices, scanInitiated}: ListUsersProps
return (
<>
- {devices.length > 0 ? 'Обновить список' : 'Сканировать сеть'}
+ {devices.length > 0 ? 'Обновить список' : 'Сканировать узлы'}
{devices.length > 0 ? (
) : scanInitiated ? (
- Устройства не найдены
+ Узлы не найдены
) : null}
>
);
diff --git a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/userScanner.tsx b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/userScanner.tsx
index cb816ca..19ca497 100644
--- a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/userScanner.tsx
+++ b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/usersScanner/userScanner.tsx
@@ -77,7 +77,7 @@ const UserLocate = styled.div<{ loading: boolean, scanInitiated: boolean }>`
span {
position: absolute;
display: inline-block;
- background: ${(props) => props.theme.accent};
+ background: ${(props) => props.theme.scannerColor};
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
@@ -163,7 +163,7 @@ export default function UserScanner() {
return (
- {(!scanInitiated || loading) && (Сканирование пользователей в сети )}
+ {(!scanInitiated || loading) && (Сканирование узлов подсети )}
@@ -177,7 +177,7 @@ export default function UserScanner() {
{loading ? (
- Сканирование сети
+ Сканирование узлов
) : selectedView.value == 1 ? (
diff --git a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/wifiScanner/WifiScanner.tsx b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/wifiScanner/WifiScanner.tsx
index b24e367..25000eb 100644
--- a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/wifiScanner/WifiScanner.tsx
+++ b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/wifiScanner/WifiScanner.tsx
@@ -136,7 +136,8 @@ const ScanBtn = styled.button<{scanInitiated: boolean}>`
`
export function WifiScanner() {
- const { ipAddress } = useIpStore();
+ //const { ipAddress } = useIpStore();
+ const ipAddress = '192.168.1.147'
const [loading, setLoading] = useState(false);
const [scanInitiated, setScanInitiated] = useState(false);
const { wifiNetworks, setWifiNetworks } = useNetworkStore();
@@ -161,17 +162,19 @@ export function WifiScanner() {
return (
- Сканирование Wi-Fi сети
+ Сканирование точек доступа Wi-Fi сети
- {wifiNetworks.map((network) => (
+ {wifiNetworks.map((network, index) => (
))}
@@ -186,11 +189,11 @@ export function WifiScanner() {
{loading ? (
- Сканирование сети
+ Сканирование точек доступа
) : (
0 }>
- {wifiNetworks.length > 0 ? 'Обновить список' : 'Сканировать сеть'}
+ {wifiNetworks.length > 0 ? 'Обновить список' : 'Сканировать точки доступа'}
)}
diff --git a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/wifiScanner/modules/WifiDot.tsx b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/wifiScanner/modules/WifiDot.tsx
index eccd601..54fee2b 100644
--- a/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/wifiScanner/modules/WifiDot.tsx
+++ b/FRONT/BUILD/resources/app/src/components/workSpace/modules/appModules/wifiScanner/modules/WifiDot.tsx
@@ -31,43 +31,45 @@ const Dot = styled.div<{ top: string; left: string }>`
}
`;
-const WifiDot = ({ network, onSelect }: { network: WifiNetworkScanner, onSelect: (n: WifiNetworkScanner) => void }) => {
- const getPositionInRing = (bssid: string, ringSize: number) => {
- const hash = bssid.split('').reduce((acc, char) => acc + char.charCodeAt(0), 0);
- const randomAngle = (hash % 360) * (Math.PI / 180);
- const innerRadius = ringSize * 0.4;
- const outerRadius = ringSize * 0.5;
- const randomValue = (hash % 1000) / 1000;
- const randomRadius = Math.sqrt(innerRadius * innerRadius + randomValue * (outerRadius * outerRadius - innerRadius * innerRadius));
+const getPositionInRing = (index: number, total: number, ringSize: number) => {
+ const angle = (index * (2 * Math.PI / total)) + (Math.PI / total * (index % 2));
+ const innerRadius = ringSize * 0.4;
+ const outerRadius = ringSize * 0.5;
+ const radius = innerRadius + (outerRadius - innerRadius) * (0.3 + 0.7 * (index % 10) / 10);
- return {
- x: Math.cos(randomAngle) * randomRadius,
- y: Math.sin(randomAngle) * randomRadius
- };
+ return {
+ x: Math.cos(angle) * radius,
+ y: Math.sin(angle) * radius
};
+};
- const getPosition = (signal: number, bssid: string) => {
+const WifiDot = ({ network, index, total, onSelect }: {
+ network: WifiNetworkScanner,
+ index: number,
+ total: number,
+ onSelect: (n: WifiNetworkScanner) => void
+}) => {
+ const getPosition = (signal: number, index: number, total: number) => {
let strength: 1 | 2 | 3;
if (signal >= -50) {
strength = 3;
} else if (signal >= -70) {
strength = 2;
- } else if (signal >= -90) {
- strength = 1;
} else {
strength = 1;
}
+
const ringSizes = { 1: 550, 2: 400, 3: 250 };
const ringSize = ringSizes[strength];
- const offset = getPositionInRing(bssid, ringSize);
+ const offset = getPositionInRing(index, total, ringSize);
return {
- top: `calc(50% - ${offset.y}px)`,
- left: `calc(50% - ${offset.x}px)`
+ top: `calc(50% + ${offset.y}px)`,
+ left: `calc(50% + ${offset.x}px)`
};
};
- const position = getPosition(network.signal, network.bssid);
+ const position = getPosition(network.signal, index, total);
return (
onSelect(network)}>
diff --git a/FRONT/BUILD/resources/app/src/components/workSpace/modules/workModules/networkInterfaces.tsx b/FRONT/BUILD/resources/app/src/components/workSpace/modules/workModules/networkInterfaces.tsx
index 1996ddd..d0325ef 100644
--- a/FRONT/BUILD/resources/app/src/components/workSpace/modules/workModules/networkInterfaces.tsx
+++ b/FRONT/BUILD/resources/app/src/components/workSpace/modules/workModules/networkInterfaces.tsx
@@ -76,7 +76,7 @@ export const NetworkInterfaces = ({ startConnection, ws }: Props) => {
setHasInited(false)
initializationAttempt.current = 0;
- const newSocket = new WebSocket(`wss://${ws}:8001/api/v1`);
+ const newSocket = new WebSocket(`ws://${ws}:8001/api/v1`);
let connectionTimeout;
setSocket(newSocket);
diff --git a/FRONT/BUILD/resources/app/src/components/workSpace/sideBar/toolSpace/devicesBar.tsx b/FRONT/BUILD/resources/app/src/components/workSpace/sideBar/toolSpace/devicesBar.tsx
index 8b919f4..dd5ca2b 100644
--- a/FRONT/BUILD/resources/app/src/components/workSpace/sideBar/toolSpace/devicesBar.tsx
+++ b/FRONT/BUILD/resources/app/src/components/workSpace/sideBar/toolSpace/devicesBar.tsx
@@ -115,7 +115,7 @@ export const DevicesBar = () => {
const checkWebSocketAvailability = async (ip: string): Promise => {
return new Promise((resolve) => {
- const testSocket = new WebSocket(`wss://${ip}:8001/api/v1`);
+ const testSocket = new WebSocket(`ws://${ip}:8001/api/v1`);
const timeout = setTimeout(() => {
testSocket.close();
resolve(false);
diff --git a/FRONT/BUILD/resources/app/src/const/buttons/icons.tsx b/FRONT/BUILD/resources/app/src/const/buttons/icons.tsx
index 301b1d6..9cab629 100644
--- a/FRONT/BUILD/resources/app/src/const/buttons/icons.tsx
+++ b/FRONT/BUILD/resources/app/src/const/buttons/icons.tsx
@@ -9,6 +9,7 @@ import settings from '@iconify/icons-ic/baseline-settings';
import info from '@iconify/icons-ic/baseline-info';
import arrowDown from '@iconify/icons-ic/baseline-keyboard-arrow-down';
import arrowRight from '@iconify/icons-ic/baseline-keyboard-arrow-right';
+import arrowLeft from '@iconify/icons-ic/baseline-keyboard-arrow-left';
import edit from '@iconify/icons-ic/baseline-edit';
import checkCircle from '@iconify/icons-ic/round-check-circle';
import cancel from '@iconify/icons-ic/baseline-cancel';
@@ -37,6 +38,7 @@ export const ICONS = {
[buttonNames[14]]: userSearch,
[buttonNames[15]]: wifiFind,
[buttonNames[16]]: noteEdit,
+ [buttonNames[17]]: arrowLeft,
} as const;
type IconName = keyof typeof ICONS;
diff --git a/FRONT/BUILD/resources/app/src/const/buttons/names.ts b/FRONT/BUILD/resources/app/src/const/buttons/names.ts
index 54c1d40..052321e 100644
--- a/FRONT/BUILD/resources/app/src/const/buttons/names.ts
+++ b/FRONT/BUILD/resources/app/src/const/buttons/names.ts
@@ -16,5 +16,6 @@ export const buttonNames: names ={
13: 'noAdmin',
14: 'userSearch',
15: 'wifiFind',
- 16: 'noteEdit'
+ 16: 'noteEdit',
+ 17: 'arrowLeft',
}
\ No newline at end of file
diff --git a/FRONT/BUILD/resources/app/src/const/menus/sideBar/icons.tsx b/FRONT/BUILD/resources/app/src/const/menus/sideBar/icons.tsx
index 1d80d6b..b5560ce 100644
--- a/FRONT/BUILD/resources/app/src/const/menus/sideBar/icons.tsx
+++ b/FRONT/BUILD/resources/app/src/const/menus/sideBar/icons.tsx
@@ -3,7 +3,7 @@ import { toolBarNames } from "./names"
import { useTheme } from "styled-components"
import { Icon } from '@iconify/react';
-import desktop from '@iconify/icons-ic/round-desktop-windows';
+import desktop from '@iconify/icons-ic/baseline-menu';
export const ICONS = {
[toolBarNames[1]]: desktop,
diff --git a/FRONT/BUILD/resources/app/src/const/theme/theme.ts b/FRONT/BUILD/resources/app/src/const/theme/theme.ts
index aab3658..dbf1cb3 100644
--- a/FRONT/BUILD/resources/app/src/const/theme/theme.ts
+++ b/FRONT/BUILD/resources/app/src/const/theme/theme.ts
@@ -24,7 +24,7 @@ export const dark = {
background: '#3A3A3A',
textColor: '#FFFFFF',
borderColor: '#b6b6b6',
- scannerColor: '#0E9C9D',
+ scannerColor: '#00E5FF',
offlineColor: '#656565',
hoverBtn: '#4a4a4a',
};
\ No newline at end of file
diff --git a/FRONT/DEV/.gitignore b/FRONT/DEV/.gitignore
deleted file mode 100644
index b2d59d1..0000000
--- a/FRONT/DEV/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/node_modules
-/dist
\ No newline at end of file
diff --git a/FRONT/DEV/assets/icon.png b/FRONT/DEV/assets/icon.png
deleted file mode 100644
index b39bc87..0000000
Binary files a/FRONT/DEV/assets/icon.png and /dev/null differ
diff --git a/FRONT/DEV/eslint.config.js b/FRONT/DEV/eslint.config.js
deleted file mode 100644
index 092408a..0000000
--- a/FRONT/DEV/eslint.config.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import js from '@eslint/js'
-import globals from 'globals'
-import reactHooks from 'eslint-plugin-react-hooks'
-import reactRefresh from 'eslint-plugin-react-refresh'
-import tseslint from 'typescript-eslint'
-
-export default tseslint.config(
- { ignores: ['dist'] },
- {
- extends: [js.configs.recommended, ...tseslint.configs.recommended],
- files: ['**/*.{ts,tsx}'],
- languageOptions: {
- ecmaVersion: 2020,
- globals: globals.browser,
- },
- plugins: {
- 'react-hooks': reactHooks,
- 'react-refresh': reactRefresh,
- },
- rules: {
- ...reactHooks.configs.recommended.rules,
- 'react-refresh/only-export-components': [
- 'warn',
- { allowConstantExport: true },
- ],
- },
- },
-)
diff --git a/FRONT/DEV/index.html b/FRONT/DEV/index.html
deleted file mode 100644
index 7e0fab5..0000000
--- a/FRONT/DEV/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- GoNets
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/FRONT/DEV/index.tsx b/FRONT/DEV/index.tsx
deleted file mode 100644
index eeb0635..0000000
--- a/FRONT/DEV/index.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import React from 'react';
-import { createRoot } from 'react-dom/client';
-import { HashRouter } from 'react-router-dom';
-import { useIpStore } from './src/store';
-import { useEffect } from 'react';
-import {useCheckAdmin} from './src/utils/checkAdmin.ts'
-
-import {
- ModalProvider,
- useModalContext,
- ThemeProvider
-} from './src/store';
-
-import WindowComponent from './src/components/modalwindows/modalWindow.tsx';
-import Router from './src/router.tsx';
-
-const MainComponent = () => {
-
- const checkAdmin = useCheckAdmin()
- const {ipAddress} = useIpStore()
-
- useEffect(() => {
- const checkAdminStatus = async () => {
- await checkAdmin()
- }
- checkAdminStatus()
- }, [ipAddress])
-
-
- const { isOpen, modalType, modalData } = useModalContext();
- return (
- <>
-
-
- >
- );
-};
-
-const container = document.getElementById('root');
-if (!container) {
- throw new Error('Root element with id "root" not found');
-}
-const root = createRoot(container);
-root.render(
-
-
-
-
-
-
-
-);
\ No newline at end of file
diff --git a/FRONT/DEV/main.js b/FRONT/DEV/main.js
deleted file mode 100644
index df09e91..0000000
--- a/FRONT/DEV/main.js
+++ /dev/null
@@ -1,61 +0,0 @@
-const { app, BrowserWindow, session, Menu, ipcMain } = require('electron');
-const path = require('path');
-
-ipcMain.on('quit-app', () => {
- app.quit();
-});
-
-app.commandLine.appendSwitch('ignore-certificate-errors');
-
-function createWindow() {
- const win = new BrowserWindow({
- icon: path.join(__dirname, 'assets/icon.png'),
- webPreferences: {
- preload: path.join(__dirname, 'preload.js'),
- contextIsolation: true,
- },
- show: false
- });
-
- win.maximize();
- win.show();
-
- if (process.env.NODE_ENV === 'development') {
- win.loadURL('https://localhost:8001');
- win.webContents.openDevTools();
- } else {
- win.loadFile(path.join(__dirname, 'dist/index.html'));
- }
-}
-
-app.whenReady().then(() => {
- session.defaultSession.setCertificateVerifyProc((request, callback) => {
- // Разрешаем для:
- // 1. localhost
- // 2. Всех IP в локальной сети (192.168.x.x, 10.x.x.x и т.д.)
- // 3. Конкретного домена (если есть)
- if (
- request.hostname === 'localhost' ||
- request.hostname === '127.0.0.1' ||
- request.hostname === '0.0.0.0' ||
- /^(192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)/.test(request.hostname)
- ) {
- return callback(0);
- }
- callback(-2);
- });
- Menu.setApplicationMenu(null);
- createWindow();
-});
-
-app.on('window-all-closed', () => {
- if (process.platform !== 'darwin') {
- app.quit();
- }
-});
-
-app.on('activate', () => {
- if (BrowserWindow.getAllWindows().length === 0) {
- createWindow();
- }
-});
\ No newline at end of file
diff --git a/FRONT/DEV/package-lock.json b/FRONT/DEV/package-lock.json
deleted file mode 100644
index d77a3e1..0000000
--- a/FRONT/DEV/package-lock.json
+++ /dev/null
@@ -1,4845 +0,0 @@
-{
- "name": "gonets",
- "version": "0.0.2",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "gonets",
- "version": "0.0.2",
- "dependencies": {
- "@iconify/icons-ic": "^1.2.13",
- "@iconify/icons-ph": "^1.2.5",
- "@iconify/react": "^5.2.0",
- "@reduxjs/toolkit": "^2.6.0",
- "@xyflow/react": "^12.3.5",
- "axios": "^1.7.9",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
- "react-flow-renderer": "^10.3.17",
- "react-redux": "^9.2.0",
- "react-router-dom": "^7.0.2",
- "styled-components": "^6.1.13",
- "zustand": "^5.0.3"
- },
- "devDependencies": {
- "@iconify-json/ic": "^1.2.2",
- "@types/react": "^18.0.28",
- "@types/react-dom": "^18.0.11",
- "@vitejs/plugin-basic-ssl": "^2.0.0",
- "@vitejs/plugin-react": "^4.4.1",
- "electron": "^34.0.2",
- "electron-packager": "^17.1.2",
- "esbuild-wasm": "^0.17.12",
- "typescript": "^4.9.5",
- "vite": "^6.3.4"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
- "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
- "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.25.9",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.26.8",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
- "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.26.10",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
- "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.26.2",
- "@babel/generator": "^7.26.10",
- "@babel/helper-compilation-targets": "^7.26.5",
- "@babel/helper-module-transforms": "^7.26.0",
- "@babel/helpers": "^7.26.10",
- "@babel/parser": "^7.26.10",
- "@babel/template": "^7.26.9",
- "@babel/traverse": "^7.26.10",
- "@babel/types": "^7.26.10",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
- "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.27.0",
- "@babel/types": "^7.27.0",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^3.0.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
- "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.26.8",
- "@babel/helper-validator-option": "^7.25.9",
- "browserslist": "^4.24.0",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
- "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.25.9",
- "@babel/types": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.26.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
- "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9",
- "@babel/traverse": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
- "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
- "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
- "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.26.10",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz",
- "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.26.9",
- "@babel/types": "^7.26.10"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
- "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.27.0"
- },
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
- "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
- "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/runtime": {
- "version": "7.26.10",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz",
- "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
- "license": "MIT",
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
- "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.26.2",
- "@babel/parser": "^7.27.0",
- "@babel/types": "^7.27.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
- "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.26.2",
- "@babel/generator": "^7.27.0",
- "@babel/parser": "^7.27.0",
- "@babel/template": "^7.27.0",
- "@babel/types": "^7.27.0",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
- "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@electron/asar": {
- "version": "3.2.18",
- "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.18.tgz",
- "integrity": "sha512-2XyvMe3N3Nrs8cV39IKELRHTYUWFKrmqqSY1U+GMlc0jvqjIVnoxhNd2H4JolWQncbJi1DCvb5TNxZuI2fEjWg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "commander": "^5.0.0",
- "glob": "^7.1.6",
- "minimatch": "^3.0.4"
- },
- "bin": {
- "asar": "bin/asar.js"
- },
- "engines": {
- "node": ">=10.12.0"
- }
- },
- "node_modules/@electron/get": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz",
- "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^4.1.1",
- "env-paths": "^2.2.0",
- "fs-extra": "^8.1.0",
- "got": "^11.8.5",
- "progress": "^2.0.3",
- "semver": "^6.2.0",
- "sumchecker": "^3.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "global-agent": "^3.0.0"
- }
- },
- "node_modules/@electron/notarize": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.4.tgz",
- "integrity": "sha512-W5GQhJEosFNafewnS28d3bpQ37/s91CDWqxVchHfmv2dQSTWpOzNlUVQwYzC1ay5bChRV/A9BTL68yj0Pa+TSg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^4.1.1",
- "fs-extra": "^9.0.1"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@electron/notarize/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@electron/notarize/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@electron/notarize/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@electron/osx-sign": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.2.tgz",
- "integrity": "sha512-KqVlm9WMWq19lBpCXQoThC/Koaiji2zotUDYwZDaZlZZym+FXY9mQW8wN6sUQ93nkVc42f3TQ1S/XN9S1kjM5Q==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "compare-version": "^0.1.2",
- "debug": "^4.3.4",
- "fs-extra": "^10.0.0",
- "isbinaryfile": "^4.0.8",
- "minimist": "^1.2.6",
- "plist": "^3.0.5"
- },
- "bin": {
- "electron-osx-flat": "bin/electron-osx-flat.js",
- "electron-osx-sign": "bin/electron-osx-sign.js"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/@electron/osx-sign/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@electron/osx-sign/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@electron/osx-sign/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@electron/universal": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz",
- "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@electron/asar": "^3.2.1",
- "@malept/cross-spawn-promise": "^1.1.0",
- "debug": "^4.3.1",
- "dir-compare": "^3.0.0",
- "fs-extra": "^9.0.1",
- "minimatch": "^3.0.4",
- "plist": "^3.0.4"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/@electron/universal/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@electron/universal/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@electron/universal/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@emotion/is-prop-valid": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
- "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
- "license": "MIT",
- "dependencies": {
- "@emotion/memoize": "^0.8.1"
- }
- },
- "node_modules/@emotion/memoize": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
- "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==",
- "license": "MIT"
- },
- "node_modules/@emotion/unitless": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
- "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==",
- "license": "MIT"
- },
- "node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz",
- "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz",
- "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz",
- "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz",
- "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz",
- "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz",
- "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz",
- "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz",
- "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz",
- "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz",
- "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz",
- "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz",
- "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz",
- "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz",
- "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz",
- "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz",
- "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz",
- "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/netbsd-arm64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz",
- "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz",
- "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/openbsd-arm64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz",
- "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz",
- "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz",
- "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz",
- "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz",
- "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz",
- "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@iconify-json/ic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@iconify-json/ic/-/ic-1.2.2.tgz",
- "integrity": "sha512-QmjwS3lYiOmVWgTCEOTFyGODaR/+689+ajep/VsrCcsUN0Gdle5PmIcibDsdmRyrOsW/E77G41UUijdbjQUofw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@iconify/types": "*"
- }
- },
- "node_modules/@iconify/icons-ic": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/@iconify/icons-ic/-/icons-ic-1.2.13.tgz",
- "integrity": "sha512-TphrhwOvgd7CTmUhz6jgXF+SPnMtvTm03bZsAYbny2kwq4zlkhr9e16YEyPGMvKhjtTqNooA3iZ9Wa+pZ8moXQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@iconify/types": "*"
- }
- },
- "node_modules/@iconify/icons-ph": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/@iconify/icons-ph/-/icons-ph-1.2.5.tgz",
- "integrity": "sha512-ewrnpL0u3MAP0wLDnXb/39W9W71ObyY8DNig6rYj7NEwcndWWlrGHt1RxEGYE3eqILl/IUcNIQQF1CXZAhwr/w==",
- "license": "MIT",
- "dependencies": {
- "@iconify/types": "*"
- }
- },
- "node_modules/@iconify/react": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@iconify/react/-/react-5.2.0.tgz",
- "integrity": "sha512-7Sdjrqq3fkkQNks9SY3adGC37NQTHsBJL2PRKlQd455PoDi9s+Es9AUTY+vGLFOYs5yO9w9yCE42pmxCwG26WA==",
- "license": "MIT",
- "dependencies": {
- "@iconify/types": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/cyberalien"
- },
- "peerDependencies": {
- "react": ">=16"
- }
- },
- "node_modules/@iconify/types": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
- "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
- "license": "MIT"
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@malept/cross-spawn-promise": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz",
- "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/malept"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund"
- }
- ],
- "license": "Apache-2.0",
- "dependencies": {
- "cross-spawn": "^7.0.1"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@reduxjs/toolkit": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.6.0.tgz",
- "integrity": "sha512-mWJCYpewLRyTuuzRSEC/IwIBBkYg2dKtQas8mty5MaV2iXzcmicS3gW554FDeOvLnY3x13NIk8MB1e8wHO7rqQ==",
- "license": "MIT",
- "dependencies": {
- "immer": "^10.0.3",
- "redux": "^5.0.1",
- "redux-thunk": "^3.1.0",
- "reselect": "^5.1.0"
- },
- "peerDependencies": {
- "react": "^16.9.0 || ^17.0.0 || ^18 || ^19",
- "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0"
- },
- "peerDependenciesMeta": {
- "react": {
- "optional": true
- },
- "react-redux": {
- "optional": true
- }
- }
- },
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz",
- "integrity": "sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.1.tgz",
- "integrity": "sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.1.tgz",
- "integrity": "sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.1.tgz",
- "integrity": "sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.1.tgz",
- "integrity": "sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
- },
- "node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.1.tgz",
- "integrity": "sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.1.tgz",
- "integrity": "sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.1.tgz",
- "integrity": "sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.1.tgz",
- "integrity": "sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.1.tgz",
- "integrity": "sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.1.tgz",
- "integrity": "sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.1.tgz",
- "integrity": "sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.1.tgz",
- "integrity": "sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.1.tgz",
- "integrity": "sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.1.tgz",
- "integrity": "sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.1.tgz",
- "integrity": "sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.1.tgz",
- "integrity": "sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.1.tgz",
- "integrity": "sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.1.tgz",
- "integrity": "sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.1.tgz",
- "integrity": "sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@sindresorhus/is": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
- "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/is?sponsor=1"
- }
- },
- "node_modules/@szmarczak/http-timer": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
- "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "defer-to-connect": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
- "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
- "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.20.7"
- }
- },
- "node_modules/@types/cacheable-request": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
- "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/http-cache-semantics": "*",
- "@types/keyv": "^3.1.4",
- "@types/node": "*",
- "@types/responselike": "^1.0.0"
- }
- },
- "node_modules/@types/d3": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
- "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-array": "*",
- "@types/d3-axis": "*",
- "@types/d3-brush": "*",
- "@types/d3-chord": "*",
- "@types/d3-color": "*",
- "@types/d3-contour": "*",
- "@types/d3-delaunay": "*",
- "@types/d3-dispatch": "*",
- "@types/d3-drag": "*",
- "@types/d3-dsv": "*",
- "@types/d3-ease": "*",
- "@types/d3-fetch": "*",
- "@types/d3-force": "*",
- "@types/d3-format": "*",
- "@types/d3-geo": "*",
- "@types/d3-hierarchy": "*",
- "@types/d3-interpolate": "*",
- "@types/d3-path": "*",
- "@types/d3-polygon": "*",
- "@types/d3-quadtree": "*",
- "@types/d3-random": "*",
- "@types/d3-scale": "*",
- "@types/d3-scale-chromatic": "*",
- "@types/d3-selection": "*",
- "@types/d3-shape": "*",
- "@types/d3-time": "*",
- "@types/d3-time-format": "*",
- "@types/d3-timer": "*",
- "@types/d3-transition": "*",
- "@types/d3-zoom": "*"
- }
- },
- "node_modules/@types/d3-array": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
- "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==",
- "license": "MIT"
- },
- "node_modules/@types/d3-axis": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz",
- "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/d3-brush": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz",
- "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/d3-chord": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz",
- "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==",
- "license": "MIT"
- },
- "node_modules/@types/d3-color": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
- "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
- "license": "MIT"
- },
- "node_modules/@types/d3-contour": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz",
- "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-array": "*",
- "@types/geojson": "*"
- }
- },
- "node_modules/@types/d3-delaunay": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
- "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==",
- "license": "MIT"
- },
- "node_modules/@types/d3-dispatch": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz",
- "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==",
- "license": "MIT"
- },
- "node_modules/@types/d3-drag": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz",
- "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/d3-dsv": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz",
- "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==",
- "license": "MIT"
- },
- "node_modules/@types/d3-ease": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz",
- "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==",
- "license": "MIT"
- },
- "node_modules/@types/d3-fetch": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz",
- "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-dsv": "*"
- }
- },
- "node_modules/@types/d3-force": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz",
- "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==",
- "license": "MIT"
- },
- "node_modules/@types/d3-format": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz",
- "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==",
- "license": "MIT"
- },
- "node_modules/@types/d3-geo": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz",
- "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==",
- "license": "MIT",
- "dependencies": {
- "@types/geojson": "*"
- }
- },
- "node_modules/@types/d3-hierarchy": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz",
- "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==",
- "license": "MIT"
- },
- "node_modules/@types/d3-interpolate": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
- "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-color": "*"
- }
- },
- "node_modules/@types/d3-path": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz",
- "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==",
- "license": "MIT"
- },
- "node_modules/@types/d3-polygon": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz",
- "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==",
- "license": "MIT"
- },
- "node_modules/@types/d3-quadtree": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz",
- "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==",
- "license": "MIT"
- },
- "node_modules/@types/d3-random": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz",
- "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==",
- "license": "MIT"
- },
- "node_modules/@types/d3-scale": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
- "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-time": "*"
- }
- },
- "node_modules/@types/d3-scale-chromatic": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
- "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==",
- "license": "MIT"
- },
- "node_modules/@types/d3-selection": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz",
- "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==",
- "license": "MIT"
- },
- "node_modules/@types/d3-shape": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz",
- "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-path": "*"
- }
- },
- "node_modules/@types/d3-time": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz",
- "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==",
- "license": "MIT"
- },
- "node_modules/@types/d3-time-format": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz",
- "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==",
- "license": "MIT"
- },
- "node_modules/@types/d3-timer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
- "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
- "license": "MIT"
- },
- "node_modules/@types/d3-transition": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz",
- "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/d3-zoom": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz",
- "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-interpolate": "*",
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/estree": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
- "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/geojson": {
- "version": "7946.0.14",
- "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
- "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==",
- "license": "MIT"
- },
- "node_modules/@types/http-cache-semantics": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
- "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/keyv": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
- "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/node": {
- "version": "20.17.17",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.17.tgz",
- "integrity": "sha512-/WndGO4kIfMicEQLTi/mDANUu/iVUhT7KboZPdEqqHQ4aTS+3qT3U5gIqWDFV+XouorjfgGqvKILJeHhuQgFYg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "undici-types": "~6.19.2"
- }
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.13",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
- "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
- "devOptional": true,
- "license": "MIT"
- },
- "node_modules/@types/react": {
- "version": "18.3.12",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz",
- "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==",
- "devOptional": true,
- "license": "MIT",
- "dependencies": {
- "@types/prop-types": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz",
- "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/resize-observer-browser": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.11.tgz",
- "integrity": "sha512-cNw5iH8JkMkb3QkCoe7DaZiawbDQEUX8t7iuQaRTyLOyQCR2h+ibBD4GJt7p5yhUHrlOeL7ZtbxNHeipqNsBzQ==",
- "license": "MIT"
- },
- "node_modules/@types/responselike": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
- "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/stylis": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz",
- "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==",
- "license": "MIT"
- },
- "node_modules/@types/use-sync-external-store": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz",
- "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==",
- "license": "MIT"
- },
- "node_modules/@types/yauzl": {
- "version": "2.10.3",
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
- "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@vitejs/plugin-basic-ssl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.0.0.tgz",
- "integrity": "sha512-gc9Tjg8bUxBVSTzeWT3Njc0Cl3PakHFKdNfABnZWiUgbxqmHDEn7uECv3fHVylxoYgNzAcmU7ZrILz+BwSo3sA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
- },
- "peerDependencies": {
- "vite": "^6.0.0"
- }
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz",
- "integrity": "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.26.10",
- "@babel/plugin-transform-react-jsx-self": "^7.25.9",
- "@babel/plugin-transform-react-jsx-source": "^7.25.9",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.17.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
- }
- },
- "node_modules/@xmldom/xmldom": {
- "version": "0.8.10",
- "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
- "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/@xyflow/react": {
- "version": "12.3.5",
- "resolved": "https://registry.npmjs.org/@xyflow/react/-/react-12.3.5.tgz",
- "integrity": "sha512-wAYqpicdrVo1rxCu0X3M9s3YIF45Agqfabw0IBryTGqjWvr2NyfciI8gIP4MB+NKpWWN5kxZ9tiZ9u8lwC7iAg==",
- "license": "MIT",
- "dependencies": {
- "@xyflow/system": "0.0.46",
- "classcat": "^5.0.3",
- "zustand": "^4.4.0"
- },
- "peerDependencies": {
- "react": ">=17",
- "react-dom": ">=17"
- }
- },
- "node_modules/@xyflow/react/node_modules/zustand": {
- "version": "4.5.6",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.6.tgz",
- "integrity": "sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==",
- "license": "MIT",
- "dependencies": {
- "use-sync-external-store": "^1.2.2"
- },
- "engines": {
- "node": ">=12.7.0"
- },
- "peerDependencies": {
- "@types/react": ">=16.8",
- "immer": ">=9.0.6",
- "react": ">=16.8"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "immer": {
- "optional": true
- },
- "react": {
- "optional": true
- }
- }
- },
- "node_modules/@xyflow/system": {
- "version": "0.0.46",
- "resolved": "https://registry.npmjs.org/@xyflow/system/-/system-0.0.46.tgz",
- "integrity": "sha512-bmFXvboVdiydIFZmDCjrbBCYgB0d5pYdkcZPWbAxGmhMRUZ+kW3CksYgYxWabrw51rwpWitLEadvLrivG0mVfA==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-drag": "^3.0.7",
- "@types/d3-selection": "^3.0.10",
- "@types/d3-transition": "^3.0.8",
- "@types/d3-zoom": "^3.0.8",
- "d3-drag": "^3.0.0",
- "d3-selection": "^3.0.0",
- "d3-zoom": "^3.0.0"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "license": "MIT"
- },
- "node_modules/at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/author-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz",
- "integrity": "sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/axios": {
- "version": "1.8.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
- "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.15.6",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/boolean": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
- "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "license": "MIT",
- "optional": true
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/browserslist": {
- "version": "4.24.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
- "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "caniuse-lite": "^1.0.30001688",
- "electron-to-chromium": "^1.5.73",
- "node-releases": "^2.0.19",
- "update-browserslist-db": "^1.1.1"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/buffer-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
- "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/cacheable-lookup": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
- "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10.6.0"
- }
- },
- "node_modules/cacheable-request": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
- "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^4.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^6.0.1",
- "responselike": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/camelize": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
- "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001716",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001716.tgz",
- "integrity": "sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
- "node_modules/classcat": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz",
- "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==",
- "license": "MIT"
- },
- "node_modules/clone-response": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
- "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-response": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "license": "MIT",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/compare-version": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
- "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cookie": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
- "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/cross-spawn": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/cross-spawn-windows-exe": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/cross-spawn-windows-exe/-/cross-spawn-windows-exe-1.2.0.tgz",
- "integrity": "sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/malept"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/subscription/pkg/npm-cross-spawn-windows-exe?utm_medium=referral&utm_source=npm_fund"
- }
- ],
- "license": "Apache-2.0",
- "dependencies": {
- "@malept/cross-spawn-promise": "^1.1.0",
- "is-wsl": "^2.2.0",
- "which": "^2.0.2"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/css-color-keywords": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
- "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
- "license": "ISC",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/css-to-react-native": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
- "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
- "license": "MIT",
- "dependencies": {
- "camelize": "^1.0.0",
- "css-color-keywords": "^1.0.0",
- "postcss-value-parser": "^4.0.2"
- }
- },
- "node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
- "license": "MIT"
- },
- "node_modules/d3-color": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
- "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-dispatch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
- "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-drag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
- "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
- "license": "ISC",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-selection": "3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-ease": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
- "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-interpolate": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
- "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
- "license": "ISC",
- "dependencies": {
- "d3-color": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-selection": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
- "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-timer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
- "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-transition": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
- "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
- "license": "ISC",
- "dependencies": {
- "d3-color": "1 - 3",
- "d3-dispatch": "1 - 3",
- "d3-ease": "1 - 3",
- "d3-interpolate": "1 - 3",
- "d3-timer": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "d3-selection": "2 - 3"
- }
- },
- "node_modules/d3-zoom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
- "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
- "license": "ISC",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-drag": "2 - 3",
- "d3-interpolate": "1 - 3",
- "d3-selection": "2 - 3",
- "d3-transition": "2 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/debug": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
- "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-response": "^3.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/decompress-response/node_modules/mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/defer-to-connect": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
- "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/define-data-property": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/define-properties": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "define-data-property": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/detect-node": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
- "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
- "dev": true,
- "license": "MIT",
- "optional": true
- },
- "node_modules/dir-compare": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz",
- "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "buffer-equal": "^1.0.0",
- "minimatch": "^3.0.4"
- }
- },
- "node_modules/electron": {
- "version": "34.0.2",
- "resolved": "https://registry.npmjs.org/electron/-/electron-34.0.2.tgz",
- "integrity": "sha512-u3F+DSUlg9NaGS+9qnYmSRN8VjAnc3LJDDk1ye1uISJnh4gjG76y3681qLowsPMx4obvCP2eBINnmbLo0yT5WA==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "dependencies": {
- "@electron/get": "^2.0.0",
- "@types/node": "^20.9.0",
- "extract-zip": "^2.0.1"
- },
- "bin": {
- "electron": "cli.js"
- },
- "engines": {
- "node": ">= 12.20.55"
- }
- },
- "node_modules/electron-packager": {
- "version": "17.1.2",
- "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-17.1.2.tgz",
- "integrity": "sha512-XofXdikjYI7MVBcnXeoOvRR+yFFFHOLs3J7PF5KYQweigtgLshcH4W660PsvHr4lYZ03JBpLyEcUB8DzHZ+BNw==",
- "deprecated": "Please use @electron/packager moving forward. There is no API change, just a package name change",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@electron/asar": "^3.2.1",
- "@electron/get": "^2.0.0",
- "@electron/notarize": "^1.2.3",
- "@electron/osx-sign": "^1.0.5",
- "@electron/universal": "^1.3.2",
- "cross-spawn-windows-exe": "^1.2.0",
- "debug": "^4.0.1",
- "extract-zip": "^2.0.0",
- "filenamify": "^4.1.0",
- "fs-extra": "^11.1.0",
- "galactus": "^1.0.0",
- "get-package-info": "^1.0.0",
- "junk": "^3.1.0",
- "parse-author": "^2.0.0",
- "plist": "^3.0.0",
- "rcedit": "^3.0.1",
- "resolve": "^1.1.6",
- "semver": "^7.1.3",
- "yargs-parser": "^21.1.1"
- },
- "bin": {
- "electron-packager": "bin/electron-packager.js"
- },
- "engines": {
- "node": ">= 14.17.5"
- },
- "funding": {
- "url": "https://github.com/electron/electron-packager?sponsor=1"
- }
- },
- "node_modules/electron-packager/node_modules/fs-extra": {
- "version": "11.3.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
- "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/electron-packager/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/electron-packager/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/electron-packager/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/electron-to-chromium": {
- "version": "1.5.145",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.145.tgz",
- "integrity": "sha512-pZ5EcTWRq/055MvSBgoFEyKf2i4apwfoqJbK/ak2jnFq8oHjZ+vzc3AhRcz37Xn+ZJfL58R666FLJx0YOK9yTw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es6-error": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
- "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
- "dev": true,
- "license": "MIT",
- "optional": true
- },
- "node_modules/esbuild": {
- "version": "0.25.3",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz",
- "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=18"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.25.3",
- "@esbuild/android-arm": "0.25.3",
- "@esbuild/android-arm64": "0.25.3",
- "@esbuild/android-x64": "0.25.3",
- "@esbuild/darwin-arm64": "0.25.3",
- "@esbuild/darwin-x64": "0.25.3",
- "@esbuild/freebsd-arm64": "0.25.3",
- "@esbuild/freebsd-x64": "0.25.3",
- "@esbuild/linux-arm": "0.25.3",
- "@esbuild/linux-arm64": "0.25.3",
- "@esbuild/linux-ia32": "0.25.3",
- "@esbuild/linux-loong64": "0.25.3",
- "@esbuild/linux-mips64el": "0.25.3",
- "@esbuild/linux-ppc64": "0.25.3",
- "@esbuild/linux-riscv64": "0.25.3",
- "@esbuild/linux-s390x": "0.25.3",
- "@esbuild/linux-x64": "0.25.3",
- "@esbuild/netbsd-arm64": "0.25.3",
- "@esbuild/netbsd-x64": "0.25.3",
- "@esbuild/openbsd-arm64": "0.25.3",
- "@esbuild/openbsd-x64": "0.25.3",
- "@esbuild/sunos-x64": "0.25.3",
- "@esbuild/win32-arm64": "0.25.3",
- "@esbuild/win32-ia32": "0.25.3",
- "@esbuild/win32-x64": "0.25.3"
- }
- },
- "node_modules/esbuild-wasm": {
- "version": "0.17.19",
- "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.17.19.tgz",
- "integrity": "sha512-X9UQEMJMZXwlGCfqcBmJ1jEa+KrLfd+gCBypO/TSzo5hZvbVwFqpxj1YCuX54ptTF75wxmrgorR4RL40AKtLVg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/extract-zip": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
- "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "debug": "^4.1.1",
- "get-stream": "^5.1.0",
- "yauzl": "^2.10.0"
- },
- "bin": {
- "extract-zip": "cli.js"
- },
- "engines": {
- "node": ">= 10.17.0"
- },
- "optionalDependencies": {
- "@types/yauzl": "^2.9.1"
- }
- },
- "node_modules/fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pend": "~1.2.0"
- }
- },
- "node_modules/fdir": {
- "version": "6.4.4",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
- "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "picomatch": "^3 || ^4"
- },
- "peerDependenciesMeta": {
- "picomatch": {
- "optional": true
- }
- }
- },
- "node_modules/filename-reserved-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
- "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/filenamify": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz",
- "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "filename-reserved-regex": "^2.0.0",
- "strip-outer": "^1.0.1",
- "trim-repeated": "^1.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/flora-colossus": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz",
- "integrity": "sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^4.3.4",
- "fs-extra": "^10.1.0"
- },
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/flora-colossus/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/flora-colossus/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/flora-colossus/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/follow-redirects": {
- "version": "1.15.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
- "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/form-data": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
- "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/galactus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz",
- "integrity": "sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^4.3.4",
- "flora-colossus": "^2.0.0",
- "fs-extra": "^10.1.0"
- },
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/galactus/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/galactus/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/galactus/node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-package-info": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz",
- "integrity": "sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bluebird": "^3.1.1",
- "debug": "^2.2.0",
- "lodash.get": "^4.0.0",
- "read-pkg-up": "^2.0.0"
- },
- "engines": {
- "node": ">= 4.0"
- }
- },
- "node_modules/get-package-info/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/get-package-info/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/global-agent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
- "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
- "dev": true,
- "license": "BSD-3-Clause",
- "optional": true,
- "dependencies": {
- "boolean": "^3.0.1",
- "es6-error": "^4.1.1",
- "matcher": "^3.0.0",
- "roarr": "^2.15.3",
- "semver": "^7.3.2",
- "serialize-error": "^7.0.1"
- },
- "engines": {
- "node": ">=10.0"
- }
- },
- "node_modules/global-agent/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
- "dev": true,
- "license": "ISC",
- "optional": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/globalthis": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
- "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "define-properties": "^1.2.1",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gopd": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/got": {
- "version": "11.8.6",
- "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
- "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@sindresorhus/is": "^4.0.0",
- "@szmarczak/http-timer": "^4.0.5",
- "@types/cacheable-request": "^6.0.1",
- "@types/responselike": "^1.0.0",
- "cacheable-lookup": "^5.0.3",
- "cacheable-request": "^7.0.2",
- "decompress-response": "^6.0.0",
- "http2-wrapper": "^1.0.0-beta.5.2",
- "lowercase-keys": "^2.0.0",
- "p-cancelable": "^2.0.0",
- "responselike": "^2.0.0"
- },
- "engines": {
- "node": ">=10.19.0"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/got?sponsor=1"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "es-define-property": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/http-cache-semantics": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
- "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
- "dev": true,
- "license": "BSD-2-Clause"
- },
- "node_modules/http2-wrapper": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
- "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "quick-lru": "^5.1.1",
- "resolve-alpn": "^1.0.0"
- },
- "engines": {
- "node": ">=10.19.0"
- }
- },
- "node_modules/immer": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz",
- "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/immer"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/is-core-module": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
- "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-docker": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/isbinaryfile": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
- "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/gjtorikian/"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "license": "MIT"
- },
- "node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
- "dev": true,
- "license": "ISC",
- "optional": true
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "dev": true,
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/junk": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz",
- "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
- "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lowercase-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
- "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/matcher": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
- "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "escape-string-regexp": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-response": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/nanoid": {
- "version": "3.3.8",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
- "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
- "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/normalize-url": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
- "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/p-cancelable": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
- "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/parse-author": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz",
- "integrity": "sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "author-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "error-ex": "^1.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pify": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "license": "ISC"
- },
- "node_modules/picomatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/plist": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz",
- "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@xmldom/xmldom": "^0.8.8",
- "base64-js": "^1.5.1",
- "xmlbuilder": "^15.1.1"
- },
- "engines": {
- "node": ">=10.4.0"
- }
- },
- "node_modules/postcss": {
- "version": "8.4.38",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
- "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.2.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "license": "MIT"
- },
- "node_modules/progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "license": "MIT"
- },
- "node_modules/pump": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
- "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/quick-lru": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/rcedit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-3.1.0.tgz",
- "integrity": "sha512-WRlRdY1qZbu1L11DklT07KuHfRk42l0NFFJdaExELEu4fEQ982bP5Z6OWGPj/wLLIuKRQDCxZJGAwoFsxhZhNA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn-windows-exe": "^1.1.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/react": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
- "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
- "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.2"
- },
- "peerDependencies": {
- "react": "^18.3.1"
- }
- },
- "node_modules/react-flow-renderer": {
- "version": "10.3.17",
- "resolved": "https://registry.npmjs.org/react-flow-renderer/-/react-flow-renderer-10.3.17.tgz",
- "integrity": "sha512-bywiqVErlh5kCDqw3x0an5Ur3mT9j9CwJsDwmhmz4i1IgYM1a0SPqqEhClvjX+s5pU4nHjmVaGXWK96pwsiGcQ==",
- "deprecated": "react-flow-renderer has been renamed to reactflow, please use this package from now on https://reactflow.dev/docs/guides/migrate-to-v11/",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.18.9",
- "@types/d3": "^7.4.0",
- "@types/resize-observer-browser": "^0.1.7",
- "classcat": "^5.0.3",
- "d3-drag": "^3.0.0",
- "d3-selection": "^3.0.0",
- "d3-zoom": "^3.0.0",
- "zustand": "^3.7.2"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "react": "16 || 17 || 18",
- "react-dom": "16 || 17 || 18"
- }
- },
- "node_modules/react-flow-renderer/node_modules/zustand": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz",
- "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==",
- "license": "MIT",
- "engines": {
- "node": ">=12.7.0"
- },
- "peerDependencies": {
- "react": ">=16.8"
- },
- "peerDependenciesMeta": {
- "react": {
- "optional": true
- }
- }
- },
- "node_modules/react-redux": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz",
- "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==",
- "license": "MIT",
- "dependencies": {
- "@types/use-sync-external-store": "^0.0.6",
- "use-sync-external-store": "^1.4.0"
- },
- "peerDependencies": {
- "@types/react": "^18.2.25 || ^19",
- "react": "^18.0 || ^19",
- "redux": "^5.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "redux": {
- "optional": true
- }
- }
- },
- "node_modules/react-redux/node_modules/use-sync-external-store": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz",
- "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==",
- "license": "MIT",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
- }
- },
- "node_modules/react-refresh": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
- "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-router": {
- "version": "7.5.2",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.5.2.tgz",
- "integrity": "sha512-9Rw8r199klMnlGZ8VAsV/I8WrIF6IyJ90JQUdboupx1cdkgYqwnrYjH+I/nY/7cA1X5zia4mDJqH36npP7sxGQ==",
- "license": "MIT",
- "dependencies": {
- "cookie": "^1.0.1",
- "set-cookie-parser": "^2.6.0",
- "turbo-stream": "2.4.0"
- },
- "engines": {
- "node": ">=20.0.0"
- },
- "peerDependencies": {
- "react": ">=18",
- "react-dom": ">=18"
- },
- "peerDependenciesMeta": {
- "react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/react-router-dom": {
- "version": "7.5.2",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.5.2.tgz",
- "integrity": "sha512-yk1XW8Fj7gK7flpYBXF3yzd2NbX6P7Kxjvs2b5nu1M04rb5pg/Zc4fGdBNTeT4eDYL2bvzWNyKaIMJX/RKHTTg==",
- "license": "MIT",
- "dependencies": {
- "react-router": "7.5.2"
- },
- "engines": {
- "node": ">=20.0.0"
- },
- "peerDependencies": {
- "react": ">=18",
- "react-dom": ">=18"
- }
- },
- "node_modules/read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/redux": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
- "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==",
- "license": "MIT"
- },
- "node_modules/redux-thunk": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz",
- "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==",
- "license": "MIT",
- "peerDependencies": {
- "redux": "^5.0.0"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
- "license": "MIT"
- },
- "node_modules/reselect": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz",
- "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==",
- "license": "MIT"
- },
- "node_modules/resolve": {
- "version": "1.22.10",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
- "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.16.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-alpn": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
- "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/responselike": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
- "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lowercase-keys": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/roarr": {
- "version": "2.15.4",
- "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
- "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
- "dev": true,
- "license": "BSD-3-Clause",
- "optional": true,
- "dependencies": {
- "boolean": "^3.0.1",
- "detect-node": "^2.0.4",
- "globalthis": "^1.0.1",
- "json-stringify-safe": "^5.0.1",
- "semver-compare": "^1.0.0",
- "sprintf-js": "^1.1.2"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/rollup": {
- "version": "4.40.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.1.tgz",
- "integrity": "sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "1.0.7"
- },
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.40.1",
- "@rollup/rollup-android-arm64": "4.40.1",
- "@rollup/rollup-darwin-arm64": "4.40.1",
- "@rollup/rollup-darwin-x64": "4.40.1",
- "@rollup/rollup-freebsd-arm64": "4.40.1",
- "@rollup/rollup-freebsd-x64": "4.40.1",
- "@rollup/rollup-linux-arm-gnueabihf": "4.40.1",
- "@rollup/rollup-linux-arm-musleabihf": "4.40.1",
- "@rollup/rollup-linux-arm64-gnu": "4.40.1",
- "@rollup/rollup-linux-arm64-musl": "4.40.1",
- "@rollup/rollup-linux-loongarch64-gnu": "4.40.1",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.40.1",
- "@rollup/rollup-linux-riscv64-gnu": "4.40.1",
- "@rollup/rollup-linux-riscv64-musl": "4.40.1",
- "@rollup/rollup-linux-s390x-gnu": "4.40.1",
- "@rollup/rollup-linux-x64-gnu": "4.40.1",
- "@rollup/rollup-linux-x64-musl": "4.40.1",
- "@rollup/rollup-win32-arm64-msvc": "4.40.1",
- "@rollup/rollup-win32-ia32-msvc": "4.40.1",
- "@rollup/rollup-win32-x64-msvc": "4.40.1",
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/scheduler": {
- "version": "0.23.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
- "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/semver-compare": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
- "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
- "dev": true,
- "license": "MIT",
- "optional": true
- },
- "node_modules/serialize-error": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
- "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "type-fest": "^0.13.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/set-cookie-parser": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
- "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
- "license": "MIT"
- },
- "node_modules/shallowequal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
- "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
- "license": "MIT"
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/spdx-correct": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
- "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
- "dev": true,
- "license": "CC-BY-3.0"
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.21",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz",
- "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==",
- "dev": true,
- "license": "CC0-1.0"
- },
- "node_modules/sprintf-js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
- "dev": true,
- "license": "BSD-3-Clause",
- "optional": true
- },
- "node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/strip-outer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
- "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "escape-string-regexp": "^1.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-outer/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/styled-components": {
- "version": "6.1.13",
- "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz",
- "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==",
- "license": "MIT",
- "dependencies": {
- "@emotion/is-prop-valid": "1.2.2",
- "@emotion/unitless": "0.8.1",
- "@types/stylis": "4.2.5",
- "css-to-react-native": "3.2.0",
- "csstype": "3.1.3",
- "postcss": "8.4.38",
- "shallowequal": "1.1.0",
- "stylis": "4.3.2",
- "tslib": "2.6.2"
- },
- "engines": {
- "node": ">= 16"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/styled-components"
- },
- "peerDependencies": {
- "react": ">= 16.8.0",
- "react-dom": ">= 16.8.0"
- }
- },
- "node_modules/stylis": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
- "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==",
- "license": "MIT"
- },
- "node_modules/sumchecker": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
- "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "debug": "^4.1.0"
- },
- "engines": {
- "node": ">= 8.0"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/tinyglobby": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
- "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/SuperchupuDev"
- }
- },
- "node_modules/trim-repeated": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
- "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "escape-string-regexp": "^1.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/trim-repeated/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
- "license": "0BSD"
- },
- "node_modules/turbo-stream": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz",
- "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==",
- "license": "ISC"
- },
- "node_modules/type-fest": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
- "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "optional": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/undici-types": {
- "version": "6.19.8",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
- "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
- "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.2.0",
- "picocolors": "^1.1.1"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/use-sync-external-store": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
- "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==",
- "license": "MIT",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/vite": {
- "version": "6.3.4",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.4.tgz",
- "integrity": "sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.25.0",
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2",
- "postcss": "^8.5.3",
- "rollup": "^4.34.9",
- "tinyglobby": "^0.2.13"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
- "jiti": ">=1.21.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.16.0",
- "tsx": "^4.8.1",
- "yaml": "^2.4.2"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "jiti": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- },
- "tsx": {
- "optional": true
- },
- "yaml": {
- "optional": true
- }
- }
- },
- "node_modules/vite/node_modules/postcss": {
- "version": "8.5.3",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
- "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.8",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/xmlbuilder": {
- "version": "15.1.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
- "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "node_modules/zustand": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.3.tgz",
- "integrity": "sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==",
- "license": "MIT",
- "engines": {
- "node": ">=12.20.0"
- },
- "peerDependencies": {
- "@types/react": ">=18.0.0",
- "immer": ">=9.0.6",
- "react": ">=18.0.0",
- "use-sync-external-store": ">=1.2.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "immer": {
- "optional": true
- },
- "react": {
- "optional": true
- },
- "use-sync-external-store": {
- "optional": true
- }
- }
- }
- }
-}
diff --git a/FRONT/DEV/package.json b/FRONT/DEV/package.json
deleted file mode 100644
index 304540a..0000000
--- a/FRONT/DEV/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "gonets",
- "version": "0.0.2",
- "main": "main.js",
- "scripts": {
- "dev": "vite",
- "build": "tsc && vite build",
- "preview": "vite preview",
- "start": "electron .",
- "package": "vite build && electron-packager . --out=dist --overwrite --icon=assets/icon"
- },
- "dependencies": {
- "@iconify/icons-ic": "^1.2.13",
- "@iconify/icons-ph": "^1.2.5",
- "@iconify/react": "^5.2.0",
- "@reduxjs/toolkit": "^2.6.0",
- "@xyflow/react": "^12.3.5",
- "axios": "^1.7.9",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
- "react-flow-renderer": "^10.3.17",
- "react-redux": "^9.2.0",
- "react-router-dom": "^7.0.2",
- "styled-components": "^6.1.13",
- "zustand": "^5.0.3"
- },
- "devDependencies": {
- "@iconify-json/ic": "^1.2.2",
- "@types/react": "^18.0.28",
- "@types/react-dom": "^18.0.11",
- "@vitejs/plugin-basic-ssl": "^2.0.0",
- "@vitejs/plugin-react": "^4.4.1",
- "electron": "^34.0.2",
- "electron-packager": "^17.1.2",
- "esbuild-wasm": "^0.17.12",
- "typescript": "^4.9.5",
- "vite": "^6.3.4"
- }
-}
diff --git a/FRONT/DEV/preload.js b/FRONT/DEV/preload.js
deleted file mode 100644
index 3e21ba6..0000000
--- a/FRONT/DEV/preload.js
+++ /dev/null
@@ -1,19 +0,0 @@
-const { contextBridge, ipcRenderer } = require('electron');
-
-contextBridge.exposeInMainWorld('electron', {
- send: (channel, data) => {
- ipcRenderer.send(channel, data);
- },
- on: (channel, func) => {
- ipcRenderer.on(channel, (event, ...args) => func(...args));
- },
- quitApp: () => {
- ipcRenderer.send('quit-app');
- },
-
- onThemeChange: (callback) => {
- ipcRenderer.on('theme-update', (event, theme) => {
- callback(theme);
- });
- }
-});
\ No newline at end of file
diff --git a/FRONT/DEV/public/assets/images/back1.svg b/FRONT/DEV/public/assets/images/back1.svg
deleted file mode 100644
index 6c1ae68..0000000
--- a/FRONT/DEV/public/assets/images/back1.svg
+++ /dev/null
@@ -1,836 +0,0 @@
-
-
- Created with Pixso.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/FRONT/DEV/public/assets/images/bigLogo.svg b/FRONT/DEV/public/assets/images/bigLogo.svg
deleted file mode 100644
index fbc2512..0000000
--- a/FRONT/DEV/public/assets/images/bigLogo.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
- Created with Pixso.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/FRONT/DEV/public/assets/images/bukvi.svg b/FRONT/DEV/public/assets/images/bukvi.svg
deleted file mode 100644
index 88ba39c..0000000
--- a/FRONT/DEV/public/assets/images/bukvi.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/FRONT/DEV/public/assets/images/cancel.svg b/FRONT/DEV/public/assets/images/cancel.svg
deleted file mode 100644
index a39ab7f..0000000
--- a/FRONT/DEV/public/assets/images/cancel.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/FRONT/DEV/public/assets/images/check.svg b/FRONT/DEV/public/assets/images/check.svg
deleted file mode 100644
index a91a6c0..0000000
--- a/FRONT/DEV/public/assets/images/check.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/FRONT/DEV/public/assets/images/edit.svg b/FRONT/DEV/public/assets/images/edit.svg
deleted file mode 100644
index f3f1b8e..0000000
--- a/FRONT/DEV/public/assets/images/edit.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/FRONT/DEV/public/assets/images/ethernet.svg b/FRONT/DEV/public/assets/images/ethernet.svg
deleted file mode 100644
index ef4cdcd..0000000
--- a/FRONT/DEV/public/assets/images/ethernet.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/FRONT/DEV/public/assets/images/gossys.png b/FRONT/DEV/public/assets/images/gossys.png
deleted file mode 100644
index 5b01b0e..0000000
Binary files a/FRONT/DEV/public/assets/images/gossys.png and /dev/null differ
diff --git a/FRONT/DEV/public/assets/images/logo.svg b/FRONT/DEV/public/assets/images/logo.svg
deleted file mode 100644
index 4f3a4dd..0000000
--- a/FRONT/DEV/public/assets/images/logo.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/FRONT/DEV/public/assets/images/signal.svg b/FRONT/DEV/public/assets/images/signal.svg
deleted file mode 100644
index a589c67..0000000
--- a/FRONT/DEV/public/assets/images/signal.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/FRONT/DEV/public/assets/images/vite.svg b/FRONT/DEV/public/assets/images/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/FRONT/DEV/public/assets/images/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/FRONT/DEV/public/assets/images/vpn.svg b/FRONT/DEV/public/assets/images/vpn.svg
deleted file mode 100644
index 8999c36..0000000
--- a/FRONT/DEV/public/assets/images/vpn.svg
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/FRONT/DEV/public/assets/images/wifi.svg b/FRONT/DEV/public/assets/images/wifi.svg
deleted file mode 100644
index dad2dd2..0000000
--- a/FRONT/DEV/public/assets/images/wifi.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/FRONT/DEV/src/api/request.ts b/FRONT/DEV/src/api/request.ts
deleted file mode 100644
index 99f1f22..0000000
--- a/FRONT/DEV/src/api/request.ts
+++ /dev/null
@@ -1,160 +0,0 @@
-import axios, { AxiosResponse } from "axios";
-
-const axiosWithoutCredentials = axios.create({
- baseURL: `http://localhost:8001`,
-})
-
-export class NetworkService {
- static createAxiosInstance(ipAddress: string) {
- return axios.create({
- baseURL: `http://${ipAddress}:8001`,
- });
- }
-
- static async checkIp(ipAddress: string, data: any): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.post('/ip/check_ip', data);
- } catch (error: any) {
- return error.response;
- }
- }
-
- static async saveIp(ipAddress: string, data: any): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.post('/ip/apply_ip', data);
- } catch (error: any) {
- return error.response;
- }
- }
-
- static async getHostname(): Promise{
- try{
- const response = await axiosWithoutCredentials.get('/network/get_hostname')
- return response
- } catch (error: any){
- return error.response
- }
- }
-
- static async createUser(ipAddress: string, data: any): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.post('/auth/register', data);
- } catch (error: any) {
- return error.response;
- }
- }
-
- static async login(ipAddress: string, data: any): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.post('/auth/login', data);
- } catch (error: any) {
- return error.response;
- }
- }
-
- static async logout(ipAddress: string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.get('/auth/logout');
- } catch (error: any) {
- return error.response;
- }
- }
-
- static async checkServerConf(ipAddress: string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.get('/auth/check_json');
- } catch (error: any) {
- return error.response;
- }
- }
-
- static async whoami(ipAddress: string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.get('/auth/me');
- } catch (error: any) {
- return error.response;
- }
- }
-
- static async scanUser(ipAddress: string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.get('/subnet/devices');
- } catch (error: any) {
- return error.response;
- }
- }
-
- static async scanWifi(ipAddress: string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.get('/subnet/wifi');
- } catch (error: any) {
- return error.response;
- }
- }
- static async addNote(ipAddress: string, address:string, note: string,type:string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.post(`/subnet/${type}/${address}/note`, {
- note: note
- });
- } catch (error: any) {
- return error.response;
- }
- }
- static async editNote(ipAddress: string, address:string, note: string,type:string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.put(`/subnet/${type}/${address}/note`, {
- note: note
- });
- } catch (error: any) {
- return error.response;
- }
- }
- static async deleteNote(ipAddress: string, address:string, type:string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.delete(`/subnet/${type}/${address}/note`);
- } catch (error: any) {
- return error.response;
- }
- }
- static async statusNetwork(ipAddress: string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.get(`/subnet/wifi/status`);
- } catch (error: any) {
- return error.response;
- }
- }
- static async connectNetwork(ipAddress: string, password:string, address: string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.post(`/subnet/wifi/connect`, {
- ssid: address,
- password: password,
- });
- } catch (error: any) {
- return error.response;
- }
- }
- static async disconnectNetwork(ipAddress: string, ssid: string): Promise {
- try {
- const axiosInstance = this.createAxiosInstance(ipAddress);
- return await axiosInstance.post(`/subnet/wifi/disconnect`, {
- ssid: ssid,
- });
- } catch (error: any) {
- return error.response;
- }
- }
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/assets/css/flow.css b/FRONT/DEV/src/assets/css/flow.css
deleted file mode 100644
index 0a79079..0000000
--- a/FRONT/DEV/src/assets/css/flow.css
+++ /dev/null
@@ -1,108 +0,0 @@
-.react-flow {
- /* Custom Variables */
- --xy-theme-selected: #F57DBD;
- --xy-theme-hover: #C5C5C5;
- --xy-theme-edge-hover: black;
- --xy-theme-color-focus: #E8E8E8;
-
- /* Built-in Variables see https://reactflow.dev/learn/customization/theming */
- --xy-node-border-default: 1px solid #EDEDED;
-
- /* --xy-node-boxshadow-default:
- 0px 3.54px 4.55px 0px #00000005,
- 0px 3.54px 4.55px 0px #0000000D,
- 0px 0.51px 1.01px 0px #0000001A; */
-
- --xy-node-border-radius-default: 8px;
-
- --xy-handle-background-color-default: #ffffff;
- --xy-handle-border-color-default: #AAAAAA;
-
- --xy-edge-label-color-default: #505050;
-}
-
-.react-flow.dark {
- --xy-node-boxshadow-default:
- 0px 3.54px 4.55px 0px rgba(255, 255, 255, 0.05), /* light shadow */
- 0px 3.54px 4.55px 0px rgba(255, 255, 255, 0.13), /* medium shadow */
- 0px 0.51px 1.01px 0px rgba(255, 255, 255, 0.2); /* smallest shadow */
- --xy-theme-color-focus: #535353;
-}
-
-/* Customizing Default Theming */
-
-.react-flow__node {
- /* box-shadow: var(--xy-node-boxshadow-default);
- border-radius: var(--xy-node-border-radius-default);
- background-color: var(--xy-node-background-color-default); */
- display: flex;
- justify-content: center;
- align-items: center;
- text-align: center;
- font-size: 12px;
- flex-direction: column;
- /* border: var(--xy-node-border-default);
- color: var(--xy-node-color, var(--xy-node-color-default)); */
- pointer-events: all;
- user-select: none;
-}
-
-.react-flow__node.selectable:focus {
- box-shadow: 0px 0px 0px 4px var(--xy-theme-color-focus);
- border-color: #d9d9d9;
-}
-
-.react-flow__node.selectable:focus:active {
- box-shadow: var(--xy-node-boxshadow-default);
-}
-
-
-.react-flow__node.selectable:hover,
-.react-flow__node.draggable:hover {
- border-color: var(--xy-theme-hover);
-}
-
-.react-flow__node.selectable.selected {
- border-color: var(--xy-theme-selected);
- box-shadow: var(--xy-node-boxshadow-default);
-}
-
-.react-flow__node-group {
- background-color: rgba(207, 182, 255, 0.4);
- border-color: #9E86ED;
-}
-
-.react-flow__edge.selectable:hover .react-flow__edge-path,
-.react-flow__edge.selectable.selected .react-flow__edge-path {
- stroke: var(--xy-theme-edge-hover);
-}
-
-.react-flow__handle {
- width: 15px;
- height: 15px;
-}
-
-.react-flow__handle.connectionindicator:hover {
- pointer-events: all;
- border-color: var(--xy-theme-edge-hover);
- background-color: white;
-}
-
-.react-flow__handle.connectionindicator:focus ,
-.react-flow__handle.connectingfrom,
-.react-flow__handle.connectingto {
- border-color: var(--xy-theme-edge-hover);
-}
-
-.react-flow__node-resizer {
- border-radius: 0;
- border: none;
-}
-
-.react-flow__resize-control.handle {
- background-color: #ffffff;
- border-color: #9E86ED;
- border-radius: 0;
- width: 5px;
- height: 5px;
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/assets/css/index.css b/FRONT/DEV/src/assets/css/index.css
deleted file mode 100644
index c597aa3..0000000
--- a/FRONT/DEV/src/assets/css/index.css
+++ /dev/null
@@ -1,36 +0,0 @@
-html,
-body {
- margin: 0;
- font-family: sans-serif;
- box-sizing: border-box;
- min-height: 100%;
- height: 100%;
-}
-
-#root{
- width: 100%;
- height: 100%;
- margin: 0;
- padding: 0;
-}
-
-#app {
- width: 100%;
- height: 100%;
- margin: 0;
- padding: 0;
-}
-
-button{
- background-color: #006666;
- border: none;
- padding: 6px 10px;
- border-radius: 8px;
- color: white;
- font-size: 14px;
- cursor: pointer;
-
- &:hover{
- background-color: #255252;
- }
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/Dropdown/DeviceCard.tsx b/FRONT/DEV/src/components/UI/Dropdown/DeviceCard.tsx
deleted file mode 100644
index 0345346..0000000
--- a/FRONT/DEV/src/components/UI/Dropdown/DeviceCard.tsx
+++ /dev/null
@@ -1,137 +0,0 @@
-import React, {useState} from 'react';
-import styled, { css } from 'styled-components';
-import { DeviceUser } from "../../../store/useDeviceStore";
-import {buttonNames} from "../../../const/buttons/names";
-import {ModalMap} from "../../modalwindows/windowsType";
-import {IconComponent} from "../../../const/buttons/icons";
-import {useModalContext} from "../../../store";
-
-interface DeviceCardProps {
- device: DeviceUser;
- status: 'online' | 'offline';
-}
-
-const CardWrapper = styled.div<{ status: 'online' | 'offline' }>`
- background: white;
- border-radius: 12px;
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- overflow: hidden;
- transition: all 0.3s ease;
- cursor: pointer;
- margin-bottom: 16px;
-
- &:hover {
- transform: translateY(-2px);
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
- }
-`;
-
-const CardHeader = styled.div<{ status: 'online' | 'offline' }>`
- background: ${({ status, theme }) =>
- status === 'online' ? theme.successColor : theme.offlineColor};
- color: white;
- padding: 16px;
- font-size: 18px;
- font-weight: 500;
- display: flex;
- justify-content: space-between;
- align-items: center;
-`;
-
-
-const CardContent = styled.div<{ isExpanded: boolean }>`
- max-height: 0;
- opacity: 0;
- padding: 0 16px;
- transition: all 0.3s ease;
- color: #333;
- font-size: 14px;
- display: grid;
- gap: 12px;
-
- ${({ isExpanded }) => isExpanded && css`
- max-height: 500px;
- opacity: 1;
- padding: 16px;
- `}
-`;
-
-const InfoRow = styled.div`
- display: flex;
- justify-content: space-between;
- align-items: center;
-`;
-
-const Label = styled.span`
- font-weight: 500;
- color: #666;
-`;
-
-const Value = styled.span`
- color: #333;
-`;
-
-
-const DeviceCard: React.FC = ({ device, status }) => {
- const [isExpanded, setIsExpanded] = useState(false);
- const toggleExpanded = () => setIsExpanded(!isExpanded);
- const { openModal } = useModalContext();
-
- const openModalNote = (e: React.MouseEvent) => {
- e.stopPropagation();
- openModal(ModalMap['6'], {
- address: device.mac,
- currentNote: device.note || ''
- });
- };
-
-
- return (
-
-
-
- MAC: {device.mac}
-
-
-
-
-
-
-
-
- Имя:
- {device.hostname || device.ip}
-
-
-
- Производитель:
- {device.vendor || 'Неизвестно'}
-
-
-
- IP адрес:
- {device.ip}
-
-
- {device.open_ports?.length > 0 && (
-
- Открытые порты:
- {device.open_ports.join(', ')}
-
- )}
-
-
- Последняя активность:
- {device.last_seen}
-
-
-
- Заметка:
- {device.note || '-'}
-
-
-
- );
-};
-
-export default DeviceCard;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/Dropdown/DropdownType.tsx b/FRONT/DEV/src/components/UI/Dropdown/DropdownType.tsx
deleted file mode 100644
index d1e90c5..0000000
--- a/FRONT/DEV/src/components/UI/Dropdown/DropdownType.tsx
+++ /dev/null
@@ -1,130 +0,0 @@
-import React, {useEffect, useRef, useState} from 'react';
-import styled from "styled-components";
-import {buttonNames} from "../../../const/buttons/names";
-import {IconComponent} from "../../../const/buttons/icons";
-
-type Option = {
- value: number,
- label: string,
-}
-
-interface DropdownTypeProps {
- options: Option[];
- label?: string;
- onChange?: (selectedItem: Option) => void;
- value: Option | null;
-}
-
-const DropdownWrapper = styled.div`
- position: absolute;
- top: 18px;
- right:20px;
- display: inline-block;
- background-color: ${({theme}) => theme.background};
- padding: 12px 16px;
- border-radius: 12px;
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- z-index: 10;
-`
-const Label = styled.p`
- color: ${({theme}) => theme.textColor};
- font-size: 16px;
-`
-
-const Dropdown = styled.div`
- background-color: ${({theme}) => theme.primary};
- border-radius: 15px;
- overflow: hidden;
- transition: all .3s ease;
- cursor: pointer;
- z-index: 10;
- margin-top: 6px;
-`
-
-const DropdownHeader = styled.div`
- display: flex;
- justify-content: space-between;
- gap: 14px;
- padding: 12px 24px;
- font-size: 16px;
- align-items: center;
- height: 100%;
- min-width: 200px;
-`
-
-const DropdownContent = styled.div<{$isOpen: boolean}>`
- max-height: ${({$isOpen}) => $isOpen ? '500px' : '0'};
- opacity: ${({$isOpen}) => $isOpen ? 1 : 0};
- transition: all .3s ease;
- display: flex;
- flex-direction: column;
- overflow: hidden;
-`
-
-const DropdownRow = styled.button`
- padding: 12px 24px;
- background-color: transparent;
- text-align: start;
- font-size: 16px;
- border: none;
- width: 100%;
- color: ${({theme}) => theme.textColor};
- transition: all .3s ease;
- cursor: pointer;
-
- &:hover {
- background-color: ${({theme}) => theme.background};
- }
-`
-
-const DropdownArrow = styled.div<{ $isOpen: boolean }>`
- transition: transform 0.3s ease;
- transform: rotate(${({ $isOpen }) => ($isOpen ? "90deg" : "0deg")});
-`;
-
-const DropdownType = ({options, value, onChange, label}: DropdownTypeProps) => {
- const [isOpen, setIsOpen] = useState(false);
- const dropdownRef = useRef(null);
-
- function toggleOpen() {
- setIsOpen((prev) => !prev);
- }
-
- function handleSelect(option: Option) {
- onChange?.(option);
- setIsOpen(false);
- }
-
- useEffect(() => {
- function handleClickOutside(event: MouseEvent) {
- if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {
- setIsOpen(false);
- }
- }
- document.addEventListener("mousedown", handleClickOutside);
- return () => document.removeEventListener("mousedown", handleClickOutside);
- }, []);
-
- return (
-
- {label}
-
-
- {value?.label || 'Select an option'}
-
-
-
-
-
- {options.map((option, i) => (
- handleSelect(option)}>
- {option.label}
-
- ))}
-
-
-
- );
-};
-
-export default DropdownType;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/Pagination.tsx b/FRONT/DEV/src/components/UI/Pagination.tsx
deleted file mode 100644
index 94e63d8..0000000
--- a/FRONT/DEV/src/components/UI/Pagination.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-import React from 'react';
-import styled from "styled-components";
-import {buttonNames} from "../../const/buttons/names";
-import {IconComponent} from "../../const/buttons/icons";
-
-const PaginateWrapper = styled.div`
- width: 100%;
- margin-top: 24px;
- display: flex;
- justify-content: center;
- align-items: center;
- gap: 10px;
-`
-const Page = styled.button`
- width: 36px;
- height: 36px;
- background: ${(props => props.theme.primary)};
- color: ${(props => props.theme.textColor)};
- border: 1px solid ${(props => props.theme.borderColor)};
- font-size: 16px;
- cursor: pointer;
- border-radius: 4px;
-
- transition: .4s ease;
- &:hover {
- background: ${(props => props.theme.background)};
- }
-`
-
-interface PaginationProps {
- currentPage: number;
- totalPages: number;
- onPrevPage: () => void;
- onNextPage: () => void;
-}
-
-const Pagination = ({currentPage, totalPages, onPrevPage, onNextPage}: PaginationProps) => {
- return (
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default Pagination;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/animDot.tsx b/FRONT/DEV/src/components/UI/animDot.tsx
deleted file mode 100644
index 48bee7e..0000000
--- a/FRONT/DEV/src/components/UI/animDot.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import styled, { keyframes } from "styled-components";
-
-const blink = keyframes`
- 0%, 100% { opacity: 0.3; }
- 50% { opacity: 1; }
-`;
-
-interface DotProps {
- $delay: number;
-}
-
-const Dot = styled.span`
- animation: ${blink} 1s infinite;
- animation-delay: ${({ $delay }) => $delay}s;
- margin: 0;
-`;
-
-const Wrapper = styled.div`
- display: flex;
- gap: 4px;
-`;
-
-export const AnimDot = () => (
-
- .
- .
- .
-
-);
diff --git a/FRONT/DEV/src/components/UI/buttons/mainButton.tsx b/FRONT/DEV/src/components/UI/buttons/mainButton.tsx
deleted file mode 100644
index 55ca7e3..0000000
--- a/FRONT/DEV/src/components/UI/buttons/mainButton.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-import styled from "styled-components";
-import { useTheme } from "styled-components";
-import { IconComponent } from "../../../const/buttons/icons";
-
-const Button = styled.button.withConfig({
- shouldForwardProp: (prop) => !['color', '$hoverсolor', 'size', '$iconpos'].includes(prop),
- })<{ color: string; size?: string, $hoverсolor: string, $iconpos: string }>`
- background-color: ${(props) => props.color};
- border: none;
- padding: ${(props) =>
- props.size === "small"
- ? "10px 28px"
- : props.size === "big"
- ? "10px 20px"
- : "12px 20px"}; // По умолчанию
- border-radius: 8px;
- color: white;
- font-size: ${(props) =>
- props.size === "small"
- ? "14px"
- : props.size === "big"
- ? "16px"
- : "14px"}; // По умолчанию
- cursor: pointer;
- display: flex;
- justify-content: center;
- align-items: center;
- flex-direction: ${(props) =>
- props.$iconpos === 'right'
- ? 'row-reverse'
- : 'row'};
- gap: 10px;
- transition: all .3s ease;
- &:hover{
- background-color: ${(props) => props.$hoverсolor};
- }
-`;
-
-type Props = {
- color?: string;
- hoverColor?: string
- size?: "small" | "big";
- title: string
- onClick?: () => void;
- type?: "button" | "submit" | "reset" | undefined
- icon?: string
- iconPosition?: 'left' | 'right'
- iconSize?: {
- width: string,
- height: string
- }
- style?: any
-};
-
-export const MainButton = ({ color, size, title, hoverColor, type, icon, iconPosition, iconSize, onClick, style }: Props) => {
- const theme = useTheme();
- const defaultColor: string = theme.accent;
- const defaultHoverColor: string = theme.accentHover
-
-
- return (
-
- {icon && }
- {title}
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/buttons/quitButton.tsx b/FRONT/DEV/src/components/UI/buttons/quitButton.tsx
deleted file mode 100644
index 373655f..0000000
--- a/FRONT/DEV/src/components/UI/buttons/quitButton.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import { MainButton } from "./mainButton";
-import styled from "styled-components";
-import { buttonNames } from "../../../const/buttons/names";
-import { IconComponent as Icon } from '../../../const/buttons/icons';
-import { useWorkSpaceStore } from "../../../store";
-
-type Props = {
- size: "small" | "big";
-};
-
-const Container = styled.div<{ size: "small" | "big" }>`
- ${(props) => props.size === "small" && "width: 100%;"}
-`;
-
-const Button = styled.div`
- width: 100%;
- cursor: pointer;
- color: ${(props) => props.theme.textColor};
-`;
-
-const IconContainer = styled.div`
- padding: 10px;
-`;
-
-export const QuitButton = ({ size }: Props) => {
- const handleExit = () => {
- window.electron.quitApp();
- };
-
- const { setWorkModule } = useWorkSpaceStore()
-
- return (
- setWorkModule('helloWindow')}>
- {size === "big" ? (
-
- ) : (
-
-
-
-
-
- )}
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/buttons/toggletheme.tsx b/FRONT/DEV/src/components/UI/buttons/toggletheme.tsx
deleted file mode 100644
index f1ca231..0000000
--- a/FRONT/DEV/src/components/UI/buttons/toggletheme.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import styled, { useTheme } from "styled-components";
-import { IconComponent as Icon } from '../../../const/theme/icons';
-import { ThemName } from "../../../const/theme/names";
-
-const Button = styled.div`
- width: 100%;
- cursor: pointer;
-`
-
-const IconContainer = styled.div`
- padding: 10px;
- color: ${props => props.theme.text};
-`
-
-export default function ThemeButton() {
- const theme = useTheme();
- const name = localStorage.getItem('theme') as ThemName
-
- return (
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/inputs/input.tsx b/FRONT/DEV/src/components/UI/inputs/input.tsx
deleted file mode 100644
index dd2b9c9..0000000
--- a/FRONT/DEV/src/components/UI/inputs/input.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-import React from 'react';
-import styled from 'styled-components';
-
-type Props = {
- placeholderText: string;
- id: string;
- value?: string;
- onChange?: (value: string) => void;
- onFileChange?: (event: React.ChangeEvent) => void;
- type?: string;
- multiple?: boolean;
- style?: React.CSSProperties;
- search?: boolean;
- onFocus?: any
- onBlur?: any
- $size?: string
-}
-
-const InputContainer = styled.div`
- width: 100%;
- display: flex;
- flex: 3;
-
-`;
-
-const StyledInput = styled.input`
- padding: 8px 10px;
- color: black;
- border-radius: 8px;
- border: 1px solid #A1A1A1;
- background-color: transparent;
- &:focus{
- border: 1px solid #adadad;
- }
- width: 100%;
- font-size: 18px;
- color: ${props=>props.theme.textColor}
-`;
-
-const Input = React.forwardRef(({ placeholderText, id, value, onChange, onFileChange, type = "text", multiple, style, onFocus, onBlur }, ref) => {
- const handleInputChange = (e: React.ChangeEvent) => {
- const { value } = e.target;
- if (onChange) {
- onChange(value);
- }
- };
-
- return (
-
-
-
- );
-});
-
-export default Input;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/loader.tsx b/FRONT/DEV/src/components/UI/loader.tsx
deleted file mode 100644
index c13bd3f..0000000
--- a/FRONT/DEV/src/components/UI/loader.tsx
+++ /dev/null
@@ -1,101 +0,0 @@
-type Props = {
- loaderText: string; //Тип передаваемых данных loaderText - string
-}
-
-import styled, { keyframes } from 'styled-components'
-import { AnimDot } from './animDot';
-
-
-//Константа которая устанавливает кейфвреймы для вращения
-const spinAnimation = keyframes`
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-`
-
-//Стиль экрана загрузки
-export const LoaderContainer = styled.div`
- top: 0px;
- z-index:998;
- background-color: rgba(0,0,0, 0.7);
- position: fixed;
- display: flex;
- align-items: center;
- justify-content: center;
- width: 100%;
- height: 100%;
- overflow-y: hidden;
-`
-
-
-//Стиль блока с элементами загрузки
-export const Loaderblock = styled.div`
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 15px;
-
- p{
- font-size: 24px;
- color: white;
- }
-`
-//Стиль для блока с кольцом загрузки
-export const LoadingSpinner = styled.div`
- position: relative;
- width: 65px;
- height: 65px;
-`
-
-//Стиль для кольца загрузки
-export const LoadingRing = styled.div`
- position: absolute;
- top: 0;
- left: 0;
- width: 65px;
- height: 65px;
- border-radius: 50%;
- border: 12px solid white;
-`
-//Стиль для части кольца загрузки, которая будет вращаться
-export const LoadingPart = styled.div`
- position: absolute;
- top: 0;
- left: 0;
- width: 65px;
- height: 65px;
- border-radius: 50%;
- border: 12px solid transparent;
- border-top: 12px solid ${props => props.theme.accent};
-
- // Добавление аниманции и использование кейфремов
- animation: ${spinAnimation} 1s linear infinite;
-`
-
-const Text = styled.div`
- display: flex;
- gap: 3px;
- font-size: 24px;
- color: white;
- margin-top: 30px;
- margin-left: 25px;
-`
-
-export default function Loader({ loaderText }: Props) {
- return (
-
-
-
-
-
-
-
-
- {/* Текст экрана загрузки устанавливается с помощью передаваемых данных loaderText */}
- {loaderText}
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/routerLoader.tsx b/FRONT/DEV/src/components/UI/routerLoader.tsx
deleted file mode 100644
index 9a788f4..0000000
--- a/FRONT/DEV/src/components/UI/routerLoader.tsx
+++ /dev/null
@@ -1,103 +0,0 @@
-type Props = {
- loaderText: string; //Тип передаваемых данных loaderText - string
-}
-
-import styled, { keyframes } from 'styled-components'
-import { AnimDot } from './animDot';
-import { ModalWindow } from '../modalwindows/style';
-
-
-//Константа которая устанавливает кейфвреймы для вращения
-const spinAnimation = keyframes`
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-`
-
-//Стиль экрана загрузки
-export const LoaderContainer = styled.div`
- top: 0px;
- z-index:998;
- background-color: rgba(0,0,0, 0.7);
- position: fixed;
- display: flex;
- align-items: center;
- justify-content: center;
- width: 100%;
- height: 100%;
- overflow-y: hidden;
-`
-
-
-//Стиль блока с элементами загрузки
-export const Loaderblock = styled.div`
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 15px;
-
- p{
- font-size: 24px;
- color: white;
- }
-`
-//Стиль для блока с кольцом загрузки
-export const LoadingSpinner = styled.div`
- position: relative;
- width: 65px;
- height: 65px;
-`
-
-//Стиль для кольца загрузки
-export const LoadingRing = styled.div`
- position: absolute;
- top: 0;
- left: 0;
- width: 65px;
- height: 65px;
- border-radius: 50%;
- border: 12px solid white;
-`
-//Стиль для части кольца загрузки, которая будет вращаться
-export const LoadingPart = styled.div`
- position: absolute;
- top: 0;
- left: 0;
- width: 65px;
- height: 65px;
- border-radius: 50%;
- border: 12px solid transparent;
- border-top: 12px solid ${props => props.theme.accent};
-
- // Добавление аниманции и использование кейфремов
- animation: ${spinAnimation} 1s linear infinite;
-`
-
-const Text = styled.div`
- display: flex;
- gap: 3px;
- font-size: 24px;
- color: white;
- margin-top: 30px;
- margin-left: 25px;
-`
-
-export default function RouterLoader({ loaderText }: Props) {
- return (
-
-
-
-
-
-
-
- {/* Текст экрана загрузки устанавливается с помощью передаваемых данных loaderText */}
- {loaderText}
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/signalSvg.tsx b/FRONT/DEV/src/components/UI/signalSvg.tsx
deleted file mode 100644
index 9590433..0000000
--- a/FRONT/DEV/src/components/UI/signalSvg.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import React, { useEffect, useRef } from 'react';
-
-interface SignalSVGProps {
- signal: number; // Принимаем signal как пропс
- color: string;
- size: string;
-}
-
-const SignalSVG: React.FC = ({ signal, color, size }) => {
- const svgRef = useRef(null);
-
- useEffect(() => {
- // Устанавливаем цвета в зависимости от signal
- const colors = {
- '--st1-color': signal >= 1 ? color : 'black',
- '--st2-color': signal >= 2 ? color : 'black',
- '--st3-color': signal >= 3 ? color : 'black',
- '--st4-color': signal >= 4 ? color : 'black',
- '--st5-color': signal === 5 ? color : 'black',
- };
-
- // Применяем стили к SVG
- if (svgRef.current) {
- Object.entries(colors).forEach(([key, value]) => {
- svgRef.current?.style.setProperty(key, value);
- });
- }
- }, [signal]);
-
- return (
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default SignalSVG;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/UI/tables/TableScanner.tsx b/FRONT/DEV/src/components/UI/tables/TableScanner.tsx
deleted file mode 100644
index 8657a17..0000000
--- a/FRONT/DEV/src/components/UI/tables/TableScanner.tsx
+++ /dev/null
@@ -1,137 +0,0 @@
-import React, {useState} from 'react';
-import { DeviceUser } from '../../../store/useDeviceStore';
-
-interface TableScannerProps {
- devices: DeviceUser[];
-}
-import styled from 'styled-components';
-import {IconComponent} from "../../../const/buttons/icons";
-import {buttonNames} from "../../../const/buttons/names";
-import {ModalMap} from "../../modalwindows/windowsType";
-import {useModalContext} from "../../../store";
-import Pagination from "../Pagination";
-
-const TableContainer = styled.div`
- width: 100%;
- margin: 24px 0;
-`;
-
-const StyledTable = styled.table`
- width: 100%;
- border-collapse: separate;
- border-spacing: 0;
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
- background: ${({ theme }) => theme.primary};
-`;
-
-const TableHeaderCell = styled.th<{ sortable?: boolean }>`
- padding: 16px 24px;
- text-align: left;
- font-weight: 600;
- font-size: 14px;
- color: ${({ theme }) => theme.textColor};
- background: ${({ theme }) => theme.primary};
- border-bottom: 1px solid ${({ theme }) => theme.borderColor};
- transition: all 0.2s ease;
-`;
-
-const TableRow = styled.tr<{ clickable?: boolean }>`
- transition: all 0.2s ease;
- &:hover {
- background-color: ${({ theme }) => theme.background};
- }
-`;
-
-const TableCell = styled.td`
- padding: 16px 24px;
- font-size: 14px;
- color: ${({ theme }) => theme.text};
- border-bottom: 1px solid ${({ theme }) => theme.borderColor};
- transition: all 0.2s ease;
- button{
- background-color: transparent;
- border: none;
- cursor: pointer;
- }
-`;
-
-const StatusBadge = styled.span<{ status:string }>`
- width: 10px;
- height: 30px;
- background-color: ${({theme, status}) => (status==='online' ? theme.successColor : theme.offlineColor)};
- display: inline-block;
- border-radius:4px;
-`
-
-const TableScanner = ({devices}:TableScannerProps) => {
- const { openModal } = useModalContext();
-
- const openModalNote = (e: React.MouseEvent, device:DeviceUser ) => {
- e.stopPropagation();
- openModal(ModalMap['6'], {
- address: device.mac,
- currentNote: device.note || ''
- });
- };
-
- // Пагинация
- const [currentPage, setCurrentPage] = useState(1);
- const [devicesPerPage] = useState(10);
-
- const indexOfLastDevice = currentPage * devicesPerPage;
- const indexOfFirstDevice = indexOfLastDevice - devicesPerPage;
- const currentDevices = devices.slice(indexOfFirstDevice, indexOfLastDevice);
- const totalPages = Math.ceil(devices.length / devicesPerPage);
-
- const handlePrevPage = () => {
- if(currentPage > 1) setCurrentPage(currentPage - 1);
- }
- const handleNextPage = () => {
- if(currentPage < totalPages) setCurrentPage(currentPage + 1);
- }
-
- return (
-
-
-
-
-
- Имя
- Производитель
- IP адрес
- Открытые порты
- Последняя активность
- Заметка
-
-
-
-
- {currentDevices.map((item, i) => (
-
-
- {item.hostname || item.ip}
- {item.vendor}
- {item.ip}
- {item.open_ports.join(', ') || '-'}
- {item.last_seen}
- {item.note || '-'}
-
- openModalNote(e, item)}>
-
-
-
-
- ))}
-
-
-
-
- );
-};
-
-export default TableScanner;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/circle/circleNode.tsx b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/circle/circleNode.tsx
deleted file mode 100644
index 94eb76c..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/circle/circleNode.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import React from 'react';
-import { Handle, Position } from '@xyflow/react';
-import { Circle } from './style';
-
-interface CustomNodeProps {
- data: {
- label: string;
- style:{
- width: any;
- height: any;
- borderType: any;
- borderColor: any;
- }
- };
-}
-
-export const CircleNode = ({ data }: CustomNodeProps) => {
- return (
- {/* */}
- {/* */}
- {data.label}
-
- {/* Узлы для подключения */}
-
-
-
-
-
- {/* Для входящих подключений */}
-
-
-
-
- {/*
*/}
-
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/circle/style.ts b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/circle/style.ts
deleted file mode 100644
index df61ace..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/circle/style.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import styled from "styled-components";
-
-type Props={
- width: string,
- height: string,
- bordertype: string,
- bordercolor: string
-}
-
-
-export const Circle = styled.div`
- background-color: white;
- border-radius: 100%;
- display: flex;
- align-items: center;
- justify-content: center;
- border: 2px ${(props) => props.bordertype} ${(props) => props.bordercolor};
- width: ${(props) => props.width}px;
- height: ${(props) => props.height}px;
-`
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/default/defaultNode.tsx b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/default/defaultNode.tsx
deleted file mode 100644
index 388e9fb..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/default/defaultNode.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import React from 'react';
-import { Handle, Position } from '@xyflow/react';
-import { Default } from './style';
-
-interface CustomNodeProps {
- data: {
- label: string;
- style:{
- width: any;
- height: any;
- borderType: any;
- borderColor: any;
- }
- };
-}
-
-export const DefaultNode = ({ data }: CustomNodeProps) => {
- return (
-
- {data.label}
-
- {/* Узлы для подключения */}
- {/*
-
-
- */}
-
- {/* Для входящих подключений */}
- {/* */}
-
- {/*
- */}
- {/* */}
-
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/default/style.ts b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/default/style.ts
deleted file mode 100644
index 62595bc..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/default/style.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import styled from "styled-components";
-
-type Props={
- width: string,
- height: string,
- bordertype: string,
- bordercolor: string
-}
-
-export const Default = styled.div`
- background-color: white;
- border: 2px ${(props) => props.bordertype} ${(props) => props.bordercolor};
- width: ${(props) => props.width}px;
- height: ${(props) => props.height}px;
- border-radius: 8px;
- display: flex;
- align-items: center;
- justify-content: center;
- visibility: visible;
-`
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/diamond/diamondNode.tsx b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/diamond/diamondNode.tsx
deleted file mode 100644
index 49ab61c..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/diamond/diamondNode.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import React from 'react';
-import { Handle, Position } from '@xyflow/react';
-import { Diamond, InnerDiamond, Border } from './style';
-
-interface CustomNodeProps {
- data: {
- label: string;
- style:{
- width: any;
- height: any;
- borderType: any;
- borderColor: any;
- }
- };
-}
-
-export const DiamondNode = ({ data }: CustomNodeProps) => {
-
- const baseSize = Math.max(data.style.width, data.style.height);
-
- return (
- {/* */}
-
-
- {data.label}
-
-
-
-
- {/* Узлы для подключения */}
-
-
-
-
-
- {/* Для входящих подключений */}
-
-
-
-
-
-
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/diamond/style.ts b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/diamond/style.ts
deleted file mode 100644
index 5eb0ba0..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/diamond/style.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import styled from "styled-components";
-
-interface StyledDefaultProps {
- width: any;
- height: any;
-}
-
-export const Diamond = styled.div`
- position: relative;
- width: ${(props) => props.width}px;
- height: ${(props) => props.height}px;
-`;
-
-export const InnerDiamond = styled.div`
- clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
- width: ${(props) => props.width - 6}px;
- height: ${(props) => props.height - 4}px;
- background-color: white;
- display: flex;
- align-items: center;
- justify-content: center;
-`
-
-export const Border = styled.div<{ width: number; height: number, bordercolor: any }>`
- clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
- width: ${(props) => props.width}px;
- height: ${(props) => props.height}px;
- background-color: ${(props) => props.bordercolor};
- display: flex;
- align-items: center;
- justify-content: center;
-`;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/index.ts b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/index.ts
deleted file mode 100644
index 9827eef..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export {DefaultNode} from './default/defaultNode'
-export {PillNode} from './pill/pillNode'
-export {ParalelorgamNode} from './paralelogram/paralelogramNode'
-export {CircleNode} from './circle/circleNode'
-export {DiamondNode} from './diamond/diamondNode'
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/paralelogram/paralelogramNode.tsx b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/paralelogram/paralelogramNode.tsx
deleted file mode 100644
index 699f00c..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/paralelogram/paralelogramNode.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import React from 'react';
-import { Handle, Position } from '@xyflow/react';
-import { Paralelorgam } from './style';
-
-interface CustomNodeProps {
- data: {
- label: string;
- style:{
- width: any;
- height: any;
- borderType: any;
- borderColor: any;
- }
- };
-}
-
-export const ParalelorgamNode = ({ data }: CustomNodeProps) => {
- return (
-
- {data.label}
-
- {/* Узлы для подключения */}
-
-
-
-
-
- {/* Для входящих подключений */}
-
-
-
-
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/paralelogram/style.ts b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/paralelogram/style.ts
deleted file mode 100644
index 46791e4..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/paralelogram/style.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import styled from "styled-components";
-
-type Props={
- width: string,
- height: string,
- bordertype: string,
- bordercolor: string
-}
-
-
-export const Paralelorgam = styled.div`
- transform: skewX(-20deg);
- background-color: white;
- border-radius: 8px;
- display: flex;
- align-items: center;
- justify-content: center;
- border: 2px ${(props) => props.bordertype} ${(props) => props.bordercolor};
- width: ${(props) => props.width}px;
- height: ${(props) => props.height}px;
-
- .react-flow__handle-top{
- transform: skewX(20deg);
- top: -5px;
- }
-
- .react-flow__handle-bottom{
- transform: skewX(20deg);
- bottom: -5px;
- }
-
- .react-flow__handle-right{
- transform: skewX(20deg);
- right: -5px;
- top: 25px;
- }
-
- .react-flow__handle-left{
- transform: skewX(20deg);
- left: -5px;
- top: 25px;
- }
-`
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/pill/pillNode.tsx b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/pill/pillNode.tsx
deleted file mode 100644
index 7adf271..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/pill/pillNode.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import React from 'react';
-import { Handle, Position } from '@xyflow/react';
-import { Pill } from './style';
-
-interface CustomNodeProps {
- data: {
- label: string;
- style:{
- width: any;
- height: any;
- borderType: any;
- borderColor: any;
- }
- };
-}
-
-export const PillNode = ({ data }: CustomNodeProps) => {
- return (
- {/* */}
- {/* */}
- {data.label}
-
- {/* Узлы для подключения */}
-
-
-
-
-
- {/* Для входящих подключений */}
-
-
-
-
- {/*
*/}
-
-
- );
-};
-
-export default PillNode;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/pill/style.ts b/FRONT/DEV/src/components/customeNodes/nodes/baseForm/pill/style.ts
deleted file mode 100644
index d08fe21..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/baseForm/pill/style.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import styled from "styled-components";
-
-type Props={
- width: string,
- height: string,
- bordertype: string,
- bordercolor: string
-}
-
-export const Pill = styled.div`
- background-color: white;
- border-radius: 50px;
- display: flex;
- align-items: center;
- justify-content: center;
- border: 2px ${(props) => props.bordertype} ${(props) => props.bordercolor};
- width: ${(props) => props.width}px;
- height: ${(props) => props.height}px;
-`
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/index.ts b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/index.ts
deleted file mode 100644
index 64b1036..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export {NodeGroupNode} from './networkGroup/nodeGroup'
-export {NetWorkNode} from './networkNode/networkNode'
-export {IpGroupeNode} from './ipGroup/ipGroup'
-export {IpNode} from './ipNode/ipNode'
-export {PortNode} from './portNode/portNode'
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipGroup/ipGroup.tsx b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipGroup/ipGroup.tsx
deleted file mode 100644
index 750e612..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipGroup/ipGroup.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-
-import { IpGroup } from "./style";
-
-interface CustomNodeProps {
- data: {
- style: {
- width: any,
- height: any,
- }
- };
-}
-
-export const IpGroupeNode = ({ data }: CustomNodeProps) => {
- return (
-
- );
-};
-
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipGroup/style.ts b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipGroup/style.ts
deleted file mode 100644
index 606ce1a..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipGroup/style.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import styled from "styled-components"
-
-type Props={
- $width: string,
- $height?: any
-}
-
-
-export const IpGroup = styled.div`
- width: ${(props) => props.$width}px;
- height: ${(props) => typeof props.$height === 'number' ? `${props.$height}px` : props.$height};
-`
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipNode/ipNode.tsx b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipNode/ipNode.tsx
deleted file mode 100644
index d04af92..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipNode/ipNode.tsx
+++ /dev/null
@@ -1,245 +0,0 @@
-import { useState } from 'react';
-import { Handle, Position } from '@xyflow/react';
-import { Ip } from './style';
-import { Row, IpTitle, IpContent } from './style';
-import Input from '../../../../UI/inputs/input';
-import { useModalContext, usePannableStore } from '../../../../../store';
-import { ModalMap } from '../../../../modalwindows/windowsType';
-import { validateIPAddress, validateSameSubnet } from '../../../../../utils/nodeController/validator';
-import {changeIp} from '../../../../../const/types/types'
-import { IconComponent } from "../../../../../const/buttons/icons";
-import { buttonNames } from "../../../../../const/buttons/names";
-
-interface IIp {
- ipType: string
- ipAdress: string,
- ipGate: string,
- ipDns: string[]
- ipVersion: string
-}
-
-type StateType = Record;
-const typeMap: StateType = {
- 'auto': "DHCP",
- 'manual': "Static"
-}
-
-interface CustomNodeProps {
- data: {
- ipData: IIp,
- interfaceData: {
- device: string,
- connection: string
- },
- style: {
- width: any,
- height: any,
- borderType: string,
- borderColor: string,
- }
- route: boolean
- }
-}
-
-export const IpNode = ({ data }: CustomNodeProps) => {
- const { toggleEditingMode } = usePannableStore();
- const [isInput, setIsInput] = useState(false)
- const { openModal } = useModalContext();
-
- const [ipData, setIpData] = useState(
- {
- currentIp: data.ipData.ipAdress,
- newIp: data.ipData.ipAdress,
- currentGate: data.ipData.ipGate,
- newGate: data.ipData.ipGate,
- currentDns: data.ipData.ipDns,
- newDns: data.ipData.ipDns,
- device: data.interfaceData.device,
- connection: data.interfaceData.connection,
- version: data.ipData.ipVersion,
- prefix: 0
- }
- )
-
- const handleFocus = () => {
- toggleEditingMode();
- };
-
- const handleBlur = () => {
- toggleEditingMode();
- };
-
- const handleClick = () => {
- if (isInput) {
- setIsInput(false)
- setIpData(prevData => ({
- ...prevData,
- newIp: data.ipData.ipAdress,
- newGate: data.ipData.ipGate,
- newDns: data.ipData.ipDns
- }));
- }
- else {
- setIsInput(true)
- }
- }
-
- const handleChange = (id: string, value: string) => {
- if (id === 'newDns') {
- const dnsArray = value.split(',').map(dns => dns.trim());
- setIpData(prevData => ({
- ...prevData,
- [id]: dnsArray
- }));
- } else {
- setIpData(prevData => ({
- ...prevData,
- [id]: value
- }));
- }
- };
-
- function getSubnetMask(ipAddress: string, ipVersion: string): number {
- if (ipVersion === "6") {
- return 64;
- }
-
- const firstOctet = parseInt(ipAddress.split(".")[0], 10);
- if (firstOctet >= 0 && firstOctet <= 127) {
- return 8;
- } else if (firstOctet >= 128 && firstOctet <= 191) {
- return 16;
- } else if (firstOctet >= 192 && firstOctet <= 223) {
- return 24;
- } else {
- return 24;
- }
- }
-
-
- const handleConfirm = () => {
- if (
- !validateIPAddress(ipData.newIp) ||
- !validateIPAddress(ipData.newGate) ||
- !ipData.newDns.every(dns => validateIPAddress(dns))
- ) {
- alert('Один или несколько IP-адресов некорректны.');
- return;
- }
-
- if (!validateSameSubnet(ipData.newIp, ipData.newGate, ipData.newDns)) {
- alert('Адрес, шлюз и хотя бы один DNS должны находиться в одной подсети.');
- return;
- }
-
- const calculatedPrefix = getSubnetMask(ipData.newIp, data.ipData.ipVersion);
-
- setIpData(prevData => ({
- ...prevData,
- prefix: calculatedPrefix,
- }));
-
- openModal(ModalMap['1'], {
- ...ipData,
- prefix: calculatedPrefix,
- });
-
- setIsInput(false)
- };
-
-
- return (
- <>
-
-
-
- {/*
- Версия IP:
- v{data.ipData.ipVersion}
-
*/}
-
-
- Метод:
- {typeMap[data.ipData.ipType]}
-
-
- {isInput ? (
-
-
-
-
-
- ) : (
-
- )}
-
-
-
-
-
- IPv{data.ipData.ipVersion}-Addr:
- {isInput ? (
- handleChange('newIp', value)}
- onBlur={handleBlur}
- onFocus={handleFocus}
- style={{fontSize: '12px', padding: '4px 10px'}}
- />
- ) : (
- {data.ipData.ipAdress}
- )}
-
-
-
-
- IPv{data.ipData.ipVersion}-GW:
- {isInput ? (
- handleChange('newGate', value)}
- onBlur={handleBlur}
- onFocus={handleFocus}
- style={{fontSize: '12px', padding: '4px 10px'}}
- />
- ) : (
- {data.ipData.ipGate}
- )}
-
-
-
- IPv{data.ipData.ipVersion}-DNS:
- {isInput ? (
- handleChange('newDns', value)}
- onBlur={handleBlur}
- onFocus={handleFocus}
- style={{fontSize: '12px', padding: '4px 10px'}}
- />
- ) : (
- {data.ipData.ipDns.join(', ')}
- )}
-
-
- {data.route &&
- <>
-
-
- >
- }
-
-
- >
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipNode/style.ts b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipNode/style.ts
deleted file mode 100644
index 3355417..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/ipNode/style.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-import styled from "styled-components";
-
-type Props={
- $width: string,
- $height?: any
- $bordertype: string,
- $bordercolor: string
-}
-
-export const Ip = styled.div`
- background-color: ${(props)=>props.theme.secondary};
- display: flex;
- flex-direction: column;
- width: ${(props) => props.$width}px;
- height: ${(props) => typeof props.$height === 'number' ? `${props.$height}px` : props.$height};
- // box-shadow: 0px 0px 15px 2px rgba(0, 0, 0, 0.1);
- border-radius: 8px;
-
- p{
- margin: 0;
- }
-
- img{
- width: 15px;
- height: 15px;
- }
-`
-
-export const IpTitle = styled.div`
- background: ${(props)=>props.theme.accent};
- border-top-left-radius: 6px;
- border-top-right-radius: 6px;
- color: white;
- display: flex;
- justify-content: space-between;
- padding: 10px;
-
-`
-
-export const IpContent = styled.div`
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- height: 100%;
- padding: 10px;
-
- .row{
- height: 24px;
-
- .row-label{
- flex: 1;
- }
-
- .row-text{
- flex: 3;
- }
-
- p{
-
- text-wrap: nowrap;
- text-align: left;
- }
- }
-`
-
-export const Row = styled.div`
- display: flex;
- align-items: center;
- gap: 5px;
-
- p{
- margin: 0;
- }
-`
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkGroup/nodeGroup.tsx b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkGroup/nodeGroup.tsx
deleted file mode 100644
index e7b3f66..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkGroup/nodeGroup.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-import { useState } from "react";
-import { NodeGroup, Row, CollapseButton } from "./style";
-import { useGroupStore } from "../../../../../store";
-import { MainButton } from "../../../../UI/buttons/mainButton";
-import { IconComponent } from "../../../../../const/buttons/icons";
-import { buttonNames } from "../../../../../const/buttons/names";
-
-interface CustomNodeProps {
- data: {
- id: string;
- label: string;
- height: any
- style: {
- width: any;
- height: any;
- borderType: any;
- borderColor: any;
- };
- };
-}
-
-export const NodeGroupNode = ({ data }: CustomNodeProps) => {
- const [click, setClick] = useState(false);
- const { groups, setGroups } = useGroupStore();
-
- const handleClick = () => {
- const newClickState = !click;
- setClick(newClickState);
-
- const updatedNodes = groups.map((groups) =>
- groups.id === data.id ? { ...groups, click: newClickState } : groups
- );
-
- if (!groups.some((groups) => groups.id === data.id)) {
- updatedNodes.push({ id: data.id, click: newClickState });
- }
-
- setGroups(updatedNodes);
- };
-
- return (
-
-
- {data.label}
-
- {/* */}
-
- {click ?(
- 'Развернуть'
- ):(
- 'Свернуть'
- )}
-
- {/* */}
-
-
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkGroup/style.ts b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkGroup/style.ts
deleted file mode 100644
index 9311bd5..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkGroup/style.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import styled from "styled-components"
-
-type Props={
- $width?: string,
- $height?: any
- $bordertype?: string,
- $bordercolor?: string
- $backgroundcolor?: string
-}
-
-
-export const NodeGroup = styled.div`
- border: 2px ${(props) => props.$bordertype} ${(props) => props.$bordercolor};
- width: ${(props) => props.$width}px;
- height: ${(props) => typeof props.$height === 'number' ? `${props.$height}px` : props.$height};
- border-radius: 12px;
- display: flex;
- align-items: center;
- justify-content: center;
- visibility: visible;
-`
-
-export const Row = styled.div`
- position: absolute;
- top: -25px;
- left: 10px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- width: ${props=>props.$width}px;
- gap: 5px;
- padding-right: 10px;
-
- p{
- margin: 0;
- }
-`
-
-export const CollapseButton = styled.p`
- padding: unset;
- background: none;
- color: ${(props)=>props.theme.textColor};
- margin-right: 15px !important;
- &:hover{
- background: none;
- }
-`
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkNode/networkNode.tsx b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkNode/networkNode.tsx
deleted file mode 100644
index 0c0bfa4..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkNode/networkNode.tsx
+++ /dev/null
@@ -1,110 +0,0 @@
-import React, { useEffect, useState } from 'react';
-import { Handle, Position } from '@xyflow/react';
-import { Network, TitleContainer, Device, Status, Content, Row, MAC, LabelColumn } from './style';
-import SignalSVG from '../../../../UI/signalSvg';
-
-interface CustomNodeProps {
- data: {
- networkData: {
- device: string
- type: string
- mac: string
- mtu: number
- state: string
- connection: string
- id: string,
- strength: string
- }
- style: {
- width: any,
- height: any,
- borderType: string,
- borderColor: string,
- backgroundColor: string
- }
- height: string
- visible: true
- };
-}
-
-export const NetWorkNode = ({ data }: CustomNodeProps) => {
- const [signal, setSignal] = useState(1);
-
- useEffect(() => {
- const perc = Number(data.networkData.strength);
-
- switch (true) {
- case perc < 20:
- setSignal(1);
- break;
- case perc < 40:
- setSignal(2);
- break;
- case perc < 60:
- setSignal(3);
- break;
- case perc < 80:
- setSignal(4);
- break;
- default:
- setSignal(5);
- break;
- }
-
- }, [data.networkData.strength])
-
- return (
-
-
-
- {data.networkData.type == "WIFI" &&
-
- }
-
- {data.networkData.type == "ETHERNET" &&
-
- }
-
- {data.networkData.type == "TUN" &&
-
- }
-
- {data.networkData.device}
-
- {data.networkData.type == 'WIFI' && data.networkData.state === "Подключено" ? (
-
-
-
- ) : (
-
- )
- }
-
-
-
- {data.visible &&
-
-
- Конфигурация
-
-
- MAC:
- {data.networkData.mac}
-
-
- MTU:
- {data.networkData.mtu}
-
-
-
-
- }
-
- {data.networkData.connection !== 'unknown' &&
-
- }
-
- );
-};
-
-export default NetWorkNode
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkNode/style.ts b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkNode/style.ts
deleted file mode 100644
index f73753f..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/networkNode/style.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-import styled from "styled-components";
-
-type Props = {
- $width?: string,
- $height?: any
- $bordertype?: string,
- $bordercolor?: string
- $backgroundcolor?: string
-}
-
-export const Network = styled.div`
- background-color: ${(props) => props.theme.primary};
- border: 2px ${(props) => props.$bordertype} ${(props) => props.$bordercolor};
- min-width: ${(props) => props.$width}px;
- height: ${(props) => typeof props.$height === 'number' ? `${props.$height}px` : props.$height};
- border-radius: 8px;
- display: flex;
- flex-direction: column;
- gap: 10px;
- visibility: visible;
- overflow: hidden;
- p{
- margin: 0;
- }
-`
-
-export const TitleContainer = styled.div`
- display: flex;
- justify-content: space-between;
- align-items: center;
- background: ${(props) => props.$backgroundcolor};
- color: white;
- padding: 15px;
- height: ${(props) => props.$height ? props.$height : 'unset'};
-
- img{
- width: 20px
- }
-`
-
-export const Device = styled.p`
- font-size: 18px;
-`
-
-export const Status = styled.p`
- font-size: 14px;
-
-
- img{
- width: 20px;
- height: 20px;
- }
-`
-
-export const Content = styled.div`
- display: flex;
- flex-direction: column;
- gap: 15px;
- padding: 15px;
-`
-
-export const Row = styled.div`
- display: flex;
- gap: 5px;
-`
-
-export const MAC = styled.div`
- display: flex;
- justify-content: space-between;
- background: ${(props) => props.theme.secondary};
- border-radius: 8px;
- // box-shadow: 0px 0px 15px 2px rgba(0, 0, 0, 0.1);
- width: 100%;
-
- .networkNode-row{
- padding: 10px;
- }
-`
-
-export const LabelColumn = styled.div`
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 5px;
- width: 100%;
-
- .networkNode-label{
- font-size: 10px;
- width: 100%;
- text-align: left;
- margin-left: 15px;
- }
-`
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/portNode/portNode.tsx b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/portNode/portNode.tsx
deleted file mode 100644
index 68939f7..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/portNode/portNode.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-import { Handle, Position } from '@xyflow/react';
-import { Port, Column } from './style';
-
-interface CustomNodeProps {
- data: {
- label: string;
- port: string
- id: string;
- style: {
- width: any;
- height: any;
- borderType: any;
- borderColor: any;
- }
- };
-}
-
-export const PortNode = ({ data }: CustomNodeProps) => {
- return (
-
-
-
- {data.label}
-
-
- {data.port &&
- {data.port}
- }
-
-
-
- {data.port ? (
- <>
-
-
- >
-
- ) : (
- <>
-
-
- >
-
- )}
-
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/portNode/style.ts b/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/portNode/style.ts
deleted file mode 100644
index 17a1b0f..0000000
--- a/FRONT/DEV/src/components/customeNodes/nodes/networkInterface/portNode/style.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import styled from "styled-components"
-
-type Props={
- $width: string,
- $height?: any
- $bordertype: string,
- $bordercolor: string
-}
-
-export const Port = styled.div`
- background-color: ${(props)=>props.theme.primary};
- border: 2px ${(props) => props.$bordertype} ${(props) => props.$bordercolor};
- width: ${(props) => props.$width}px;
- height: ${(props) => typeof props.$height === 'number' ? `${props.$height}px` : props.$height};
- border-radius: 8px;
- display: flex;
- align-items: center;
- justify-content: center;
- visibility: visible;
-`
-
-export const Column = styled.div`
- display: flex;
- flex-direction: column;
- gap: 15px;
-
- p{
- margin: 0;
- }
-`
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/types/colors.ts b/FRONT/DEV/src/components/customeNodes/types/colors.ts
deleted file mode 100644
index 342c6f7..0000000
--- a/FRONT/DEV/src/components/customeNodes/types/colors.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-type ColorType = Record;
-
-export const NodeColors: ColorType = {
- '0': '#c0c0c0',
- '1': '#ef6e7d',
- '2': '#f19e4c',
- '3': '#e9c44c',
- '4': '#51ce82',
- '5': '#4cd2d0',
- '6': '#a085f3',
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/customeNodes/types/types.ts b/FRONT/DEV/src/components/customeNodes/types/types.ts
deleted file mode 100644
index 5b7ce87..0000000
--- a/FRONT/DEV/src/components/customeNodes/types/types.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import { DefaultNode, PillNode, ParalelorgamNode, DiamondNode, CircleNode } from '../nodes/baseForm'
-import { NodeGroupNode, NetWorkNode, IpGroupeNode, IpNode, PortNode } from '../nodes/networkInterface';
-
-export const nodeTypes = {
- custom: DefaultNode,
- pill: PillNode,
- parallelogram: ParalelorgamNode,
- diamond: DiamondNode,
- circle: CircleNode,
- nodegroup: NodeGroupNode,
- portNode: PortNode,
- network: NetWorkNode,
- ipgroup: IpGroupeNode,
- ip: IpNode,
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modal.tsx b/FRONT/DEV/src/components/modalwindows/modal.tsx
deleted file mode 100644
index b030ace..0000000
--- a/FRONT/DEV/src/components/modalwindows/modal.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { ModalWindow, ModalContainer } from "./style"
-import { modalNames } from "../../const/modals/names"
-
-export const WindowComponent = ()=>{
- return(
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modalContainers/ConnectNetwork.tsx b/FRONT/DEV/src/components/modalwindows/modalContainers/ConnectNetwork.tsx
deleted file mode 100644
index ff3532f..0000000
--- a/FRONT/DEV/src/components/modalwindows/modalContainers/ConnectNetwork.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-// components/modalContainers/NoteDevice.tsx
-import { ModalContainer, ModalTitle, ModalContent, ButtonContainer } from "../style";
-import { MainButton } from "../../UI/buttons/mainButton";
-import Input from "../../UI/inputs/input";
-import { useState } from "react";
-import {NetworkService} from "../../../api/request";
-import useNetworkStore from "../../../store/useDeviceStore";
-import RouterLoader from "../../UI/routerLoader";
-import {useTheme} from "styled-components";
-import {useIpStore} from "../../../store";
-
-interface Props {
- address: string;
- onClose: () => void;
-}
-
-
-
-export const ConnectNetwork = ({address, onClose}: Props) => {
- const [password, setPassword] = useState('');
- const theme = useTheme();
- const { ipAddress } = useIpStore();
- const [error, setError] = useState('');
- const [isLoading, setIsLoading] = useState(false);
-
- const handleSave = async () => {
- try {
- setIsLoading(true);
- setError('')
- const res = await NetworkService.connectNetwork(ipAddress, password, address);
- if(res.status === 200) {
- onClose()
- }else{
- setError(res.data.detail)
- }
- } catch (error) {
- console.error('Error connection:', error);
- setError('Ошибка подключения к сети')
- }finally {
- setIsLoading(false);
- }
- };
-
-
- return (
-
-
- Подключение к сети
-
-
-
- setPassword(value)}
- />
-
- {error}
-
-
-
-
-
-
-
-
- {isLoading && }
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modalContainers/NoteDevice.tsx b/FRONT/DEV/src/components/modalwindows/modalContainers/NoteDevice.tsx
deleted file mode 100644
index 6d0b666..0000000
--- a/FRONT/DEV/src/components/modalwindows/modalContainers/NoteDevice.tsx
+++ /dev/null
@@ -1,82 +0,0 @@
-// components/modalContainers/NoteDevice.tsx
-import { ModalContainer, ModalTitle, ModalContent, ButtonContainer } from "../style";
-import { MainButton } from "../../UI/buttons/mainButton";
-import Input from "../../UI/inputs/input";
-import { useState } from "react";
-import {useIpStore} from "../../../store";
-import {NetworkService} from "../../../api/request";
-import useNetworkStore from "../../../store/useDeviceStore";
-
-interface Props {
- address: string;
- onClose: () => void;
- currentNote?: string;
- type: string
-}
-
-
-
-export const NoteDevice = ({ address, onClose, currentNote, type}: Props) => {
- const [note, setNote] = useState(currentNote || '');
- const { ipAddress } = useIpStore();
- const { devices, setDevices } = useNetworkStore();
-
- const handleSave = async () => {
- try {
- if (!currentNote && note.trim() !== '') {
- await NetworkService.addNote(ipAddress, address, note, type);
- }else if (currentNote && note.trim() !== '' && note !== currentNote) {
- await NetworkService.editNote(ipAddress, address, note, type);
- }else if (currentNote && note.trim() === '') {
- await NetworkService.deleteNote(ipAddress, address, type);
- }else {
- onClose();
- return;
- }
-
- const updatedDevices = devices.map(device =>
- device.mac === address
- ? { ...device, note: note.trim() }
- : device
- );
- setDevices(updatedDevices);
- onClose();
-
- } catch (error) {
- console.error('Error saving note:', error);
- }
- };
-
- return (
-
-
- {currentNote ? 'Редактирование заметки' : 'Добавление заметки'}
-
-
-
- setNote(value)}
- />
-
-
-
-
-
-
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modalContainers/NoteWifi.tsx b/FRONT/DEV/src/components/modalwindows/modalContainers/NoteWifi.tsx
deleted file mode 100644
index c03a48a..0000000
--- a/FRONT/DEV/src/components/modalwindows/modalContainers/NoteWifi.tsx
+++ /dev/null
@@ -1,82 +0,0 @@
-// components/modalContainers/NoteDevice.tsx
-import { ModalContainer, ModalTitle, ModalContent, ButtonContainer } from "../style";
-import { MainButton } from "../../UI/buttons/mainButton";
-import Input from "../../UI/inputs/input";
-import { useState } from "react";
-import {NetworkService} from "../../../api/request";
-import useNetworkStore from "../../../store/useDeviceStore";
-import {useIpStore} from "../../../store";
-
-interface Props {
- address: string;
- onClose: () => void;
- currentNote?: string;
- type: string
-}
-
-
-
-export const NoteWifi = ({ address, onClose, currentNote, type}: Props) => {
- const [note, setNote] = useState(currentNote || '');
- const { ipAddress } = useIpStore();
- const { wifiNetworks, setWifiNetworks } = useNetworkStore();
-
- const handleSave = async () => {
- try {
- if (!currentNote && note.trim() !== '') {
- await NetworkService.addNote(ipAddress, address, note, type);
- }else if (currentNote && note.trim() !== '' && note !== currentNote) {
- await NetworkService.editNote(ipAddress, address, note, type);
- }else if (currentNote && note.trim() === '') {
- await NetworkService.deleteNote(ipAddress, address, type);
- }else {
- onClose();
- return;
- }
- const updatedNetworks = wifiNetworks.map(network =>
- network.ssid === address
- ? { ...network, note: note.trim() }
- : { ...network }
- );
- setWifiNetworks(updatedNetworks);
- onClose();
-
- } catch (error) {
- console.error('Error saving note:', error);
- }
- };
-
-
- return (
-
-
- {currentNote ? 'Редактирование заметки' : 'Добавление заметки'}
-
-
-
- setNote(value)}
- />
-
-
-
-
-
-
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modalContainers/addDevice.tsx b/FRONT/DEV/src/components/modalwindows/modalContainers/addDevice.tsx
deleted file mode 100644
index 5611792..0000000
--- a/FRONT/DEV/src/components/modalwindows/modalContainers/addDevice.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import Input from "../../UI/inputs/input"
-import { MainButton } from "../../UI/buttons/mainButton";
-import { useState } from "react";
-import { ModalContainer, ModalTitle, ModalContent, ModalText, ButtonContainer } from "../style"
-import { validateIPAddress } from "../../../utils/nodeController/validator";
-
-interface Props {
- onSave?: (data: string) => void;
- onClose: () => void;
-}
-
-export const AddDevice = ({ onSave, onClose }: Props) => {
- const [ipAddress, setIpAddress] = useState('')
- const [error, setError] = useState(false)
-
- const handleSubmit = () => {
- if (!validateIPAddress(ipAddress)) {
- setError(true)
- return;
- }
- // e.preventDefault(); // Предотвращаем перезагрузку страницы
- if (onSave && ipAddress) {
- setError(false)
- onSave(ipAddress);
- onClose();
- }
- };
-
- return (
-
- {/* */}
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modalContainers/connectionError.tsx b/FRONT/DEV/src/components/modalwindows/modalContainers/connectionError.tsx
deleted file mode 100644
index 224ba6e..0000000
--- a/FRONT/DEV/src/components/modalwindows/modalContainers/connectionError.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import { ModalContainer, ModalTitle, ModalContent, ModalText, ButtonContainer } from "../style"
-import { useModalContext } from "../../../store"
-import { useIpStore } from "../../../store"
-import { MainButton } from "../../UI/buttons/mainButton"
-
-type Props={
- message: string
-}
-
-export const ConnectionError = ({message}: Props)=>{
- const {closeModal} = useModalContext()
- const { setIpAddress } = useIpStore();
-
- const close = ()=>{
- setIpAddress('localhost')
- closeModal()
- }
-
- return(
-
-
- Соединение прервано
-
-
-
-
- Произошёл разрыв с сервером
- Пожалуйста, проверьте доступ к адресу и попробуйте снова.
-
-
-
-
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modalContainers/disconnectConfirm.tsx b/FRONT/DEV/src/components/modalwindows/modalContainers/disconnectConfirm.tsx
deleted file mode 100644
index 148d657..0000000
--- a/FRONT/DEV/src/components/modalwindows/modalContainers/disconnectConfirm.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import { ModalContainer, ModalTitle, ModalContent, ModalText, ButtonContainer } from "../style"
-import { useModalContext } from "../../../store"
-import { useIpStore } from "../../../store"
-import { MainButton } from "../../UI/buttons/mainButton"
-import {useState} from "react";
-import {NetworkService} from "../../../api/request";
-import RouterLoader from "../../UI/routerLoader";
-import {useTheme} from "styled-components";
-
-type Props={
- address: string,
- onClose: () => void
-}
-
-export const DisconnectConfirm = ({address, onClose}: Props)=>{
- const { ipAddress } = useIpStore();
- const theme = useTheme()
- const [isLoading, setIsLoading] = useState(false);
-
- const handleDisconnect = async () => {
- try {
- setIsLoading(true);
- const res = await NetworkService.disconnectNetwork(ipAddress, address);
- if(res.status === 200) {
- onClose()
- }
- } catch (error) {
- console.error('Error connection:', error);
- }finally {
- setIsLoading(false);
- }
- };
-
- return(
-
-
- Отключение от Wi-Fi сети
-
-
-
-
- Подтверждение отключения
- Вы собираетесь отключиться от сети "{address}". Все активные подключения будут прерваны.
-
-
-
-
-
-
-
- {isLoading && }
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modalContainers/index.ts b/FRONT/DEV/src/components/modalwindows/modalContainers/index.ts
deleted file mode 100644
index ed95168..0000000
--- a/FRONT/DEV/src/components/modalwindows/modalContainers/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export {IpConfirm} from './ipConfirm'
-export {ConnectionError} from './connectionError'
-export {AddDevice} from './addDevice'
-export {RightsConfirm} from './rightsConfirm'
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modalContainers/ipConfirm.tsx b/FRONT/DEV/src/components/modalwindows/modalContainers/ipConfirm.tsx
deleted file mode 100644
index 2e2b998..0000000
--- a/FRONT/DEV/src/components/modalwindows/modalContainers/ipConfirm.tsx
+++ /dev/null
@@ -1,211 +0,0 @@
-import styled from "styled-components";
-import Loader from "../../UI/loader";
-import { useEffect, useState } from "react";
-import { changeIp } from '../../../const/types/types'
-import { NetworkService } from '../../../api/request'
-import { ModalContainer, ModalTitle, ModalContent, ModalText, ButtonContainer, ErrorMessage } from "../style"
-import { useIpStore } from "../../../store";
-import { MainButton } from "../../UI/buttons/mainButton";
-import { useAdminStore } from "../../../store/adminStore";
-import { useDevicesStore } from "../../../store";
-
-type Props = {
- ipData: changeIp
- onClose: () => void;
- smoothClose: () => void;
-}
-
-const Information = styled.div`
- display: flex;
- flex-direction: column;
- gap: 15px;
-`
-
-const Info = styled.div`
- display: flex;
- gap: 10px;
-`
-
-const DataContainer = styled.div`
- display: flex;
- gap: 35px;
-`
-
-const CurrentData = styled.div`
- display: flex;
- flex-direction: column;
- gap: 10px;
-`
-
-const NewData = styled.div`
- display: flex;
- flex-direction: column;
- gap: 10px;
-`
-
-export const IpConfirm = ({ ipData, onClose, smoothClose }: Props) => {
- const [loader, setLoader] = useState(true)
- const [newIP, setNewIp] = useState(null)
- const [currentIp, setCurrentIP] = useState({})
- const [checkStatus, setcheckStatus] = useState(false)
- const [message, setMessgae] = useState('')
- const { ipAddress, setIpAddress } = useIpStore();
- const {isAdmin} = useAdminStore()
- const { devices, addDevice, deleteDevice } = useDevicesStore();
-
- useEffect(() => {
- if (ipData && isAdmin) {
- const data = {
- "connection_id": ipData.connection,
- "ipv4_updates": {
- "ipv4.method": "manual",
- "ipv4.address-data": [
- {
- "address": ipData.newIp,
- "prefix": ipData.prefix
- }
- ],
- "ipv4.gateway": ipData.newGate,
- "ipv4.dns-data": ipData.newDns
- }
- };
-
- const oldData = {
- "connection_id": ipData.connection,
- "ipv4_updates": {
- "ipv4.method": "manual",
- "ipv4.address-data": [
- {
- "address": ipData.currentIp,
- "prefix": ipData.prefix
- }
- ],
- "ipv4.gateway": ipData.currentGate,
- "ipv4.dns-data": ipData.currentDns
- }
- }
-
- setCurrentIP(oldData)
-
- checkIp(data);
- }
- }, [ipData, isAdmin]);
-
- const checkIp = async (data: any) => {
- try {
- const result = await NetworkService.checkIp(ipAddress, data);
- setcheckStatus(result.data.available)
- setMessgae(result.data.message)
- if (result.data.available) {
- setNewIp(data)
- }
- } catch (err) {
- console.error('Error:', err);
- } finally {
- setLoader(false);
- }
- };
-
- const saveIp = async (data: any) => {
- try {
- const result = await NetworkService.saveIp(ipAddress, data);
- if (result.status === 200) {
- if(ipAddress!=='localhost'){
- setIpAddress(ipData.newIp)
-
- const updatedDevices = devices.map(device =>
- device.address === ipData.currentIp
- ? { ...device, address: ipData.newIp }
- : device
- );
- useDevicesStore.setState({ devices: updatedDevices });
- }
-
- onClose()
- }
- } catch (err) {
- console.error('Error:', err);
- } finally {
- setLoader(false);
- }
- };
-
- const cancelIp = async (data: any) => {
- try {
- const result = await NetworkService.saveIp(ipAddress, data);
- if (result.status === 200) {
- onClose()
- }
- } catch (err) {
- console.error('Error:', err);
- } finally {
- setLoader(false);
- }
- };
-
- return (
- <>
- {loader && isAdmin ? (
-
- ) : (
-
-
- Изменение IP-Адреса
-
- {checkStatus ? (
-
-
- Общие сведения
-
- Интерфейс: {ipData.device}
- --{'>'}
- {ipData.connection}
-
- Сведения об IP
-
-
- Текущий ip: {ipData.currentIp}
- Текущий шлюз: {ipData.currentGate}
- Текущий DNS: {ipData.currentDns}
-
-
-
- Новый ip: {ipData.newIp}
- Новый шлюз: {ipData.newGate}
- Новый DNS: {ipData.newDns}
-
-
-
-
-
- cancelIp(currentIp)}/>
- saveIp(newIP)}/>
-
-
- ) : (
- <>
-
-
- {isAdmin ? (
- <>
- Произошла ошибка проверки корректности
- {message}
- >
-
- ):(
- Для изменения сетевых настроек необходимо авторизироваться под администратором
- )}
-
-
-
-
-
-
-
- >
- )}
-
- )}
- >
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modalContainers/rightsConfirm.tsx b/FRONT/DEV/src/components/modalwindows/modalContainers/rightsConfirm.tsx
deleted file mode 100644
index 24351dd..0000000
--- a/FRONT/DEV/src/components/modalwindows/modalContainers/rightsConfirm.tsx
+++ /dev/null
@@ -1,135 +0,0 @@
-import { useEffect, useState } from "react"
-import { ModalContainer, ModalTitle, ModalContent, ModalText, ButtonContainer } from "../style"
-import Input from "../../UI/inputs/input"
-import { MainButton } from "../../UI/buttons/mainButton"
-import { NetworkService } from "../../../api/request"
-import { useIpStore } from "../../../store"
-import { useAdminStore } from "../../../store/adminStore"
-import { useCheckAdmin } from "../../../utils/checkAdmin"
-
-import { buttonNames } from "../../../const/buttons/names"
-import { IconComponent } from "../../../const/buttons/icons"
-
-interface Props {
- onClose: () => void;
-}
-
-export const RightsConfirm = ({ onClose }: Props) => {
-
- const { ipAddress } = useIpStore();
- const { isAdmin, setAdmin } = useAdminStore()
- const checkAdmin = useCheckAdmin();
- const [error, setError] = useState(false)
- const [success, setSuccess] = useState({
- message: '',
- status: false
- })
-
- const [user, setUser] = useState({
- username: 'operator',
- password: ""
- })
-
- const handleChange = (id: string, value: string) => {
- setUser(prevData => ({
- ...prevData,
- [id]: value
- }));
- }
-
- const login = async (user: object) => {
- try {
- const response = await NetworkService.login(ipAddress, user);
- if(response.status === 200){
- await checkAdmin();
- setError(false)
- setSuccess(prevData => ({
- ...prevData,
- message: 'Успешный вход',
- status: true
- }));
- await new Promise(resolve => setTimeout(resolve, 3000));
- onClose();
- }else{
- setError(true)
- }
- } catch (err) {
- console.error('Error:', err);
- }
- }
-
- const logout = async () => {
- await NetworkService.logout(ipAddress);
- await checkAdmin();
- setSuccess(prevData => ({
- ...prevData,
- message: 'Успешный выход',
- status: true
- }));
- await new Promise(resolve => setTimeout(resolve, 3000));
- onClose();
- }
-
- return (
-
- {!success.status ? (
- !isAdmin ? (
- <>
-
- Получение прав доступа
-
-
-
-
- Включить административный доступ
- handleChange('password', value)}
- />
-
- {error && (
-
- Неверный пароль оператора
-
- )}
-
-
-
-
-
- login(user)} />
-
- >
- ) : (
- <>
-
- Переключиться на ограниченный доступ
-
-
-
- В данном режиме доступа ограничиваются полномочия администратора.
-
-
-
-
-
-
-
- >
- )
- ):(
-
-
- {success.message}
- Это окно можно закрыть, либо оно пропадёт само
-
-
- )}
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/modalWindow.tsx b/FRONT/DEV/src/components/modalwindows/modalWindow.tsx
deleted file mode 100644
index 7edf179..0000000
--- a/FRONT/DEV/src/components/modalwindows/modalWindow.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import { useModalContext } from "../../store";
-import { IpConfirm, ConnectionError, AddDevice, RightsConfirm } from "./modalContainers";
-import { ModalMap } from "./windowsType";
-import Loader from "../UI/loader";
-import { ModalWindow } from "./style";
-import {NoteDevice} from "./modalContainers/NoteDevice";
-import { NoteWifi } from "./modalContainers/NoteWifi";
-import {ConnectNetwork} from "./modalContainers/ConnectNetwork";
-import {DisconnectConfirm} from "./modalContainers/disconnectConfirm";
-
-type Props = {
- isOpen: boolean,
- type: string
- data: any;
-}
-
-export default function WindowComponent({ isOpen, type, data }: Props) {
-
- const { closeModal, closeLoader } = useModalContext()
-
- return (
- <>
- {isOpen &&
-
- {type == ModalMap['1'] && data &&
-
- }
-
- {type == ModalMap['2'] &&
-
- }
-
- {type === ModalMap['3'] &&
-
- }
- {type === ModalMap['6'] && (
-
- )}
- {type === ModalMap['7'] && (
-
- )}
- {type === ModalMap['8'] && (
-
- )}
- {type === ModalMap['9'] && (
-
- )}
- {type === ModalMap['4'] && (
-
- )}
-
- {type === ModalMap['5'] && (
-
- )}
-
- }
- >
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/style.ts b/FRONT/DEV/src/components/modalwindows/style.ts
deleted file mode 100644
index 2b75bd3..0000000
--- a/FRONT/DEV/src/components/modalwindows/style.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-import styled from "styled-components";
-
-export const ModalWindow = styled.div`
- width: 100%;
- position: fixed;
- top: 0;
- left: 0;
- z-index: 9999;
- background-color: rgba(0, 0, 0, 0.8);
- display: flex;
- align-items: center;
- justify-content: center;
- height: 100%;
-`
-
-export const ModalContainer = styled.div<{height?: string}>`
- border-radius: 12px;
- background: ${(props)=>props.theme.secondary};
- color: ${(props=>props.theme.textColor)};
- position: relative;
- max-height: 100%;
- overflow: auto;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- gap: 15px;
- height: ${(props) => props.height ? props.height : '230px'};
- width: 520px;
-`
-
-export const ModalTitle = styled.div`
- padding: 20px;
- border-bottom: 1px solid #9D9D9D;
- display: flex;
- justify-content: space-between;
-
- h3{
- font-size: 18px;
- }
-`
-
-export const ModalContent = styled.div`
- padding: 0 20px;
-
- h3{
- font-size: 14px;
- }
-
- p{
- font-size: 12px;
- }
-`
-
-export const ModalText = styled.div`
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- gap: 10px;
-`
-
-export const ErrorMessage = styled.p`
- color: #d95454;
-`
-
-export const ButtonContainer = styled.div`
- justify-content: flex-end;
- display: flex;
- gap: 10px;
- padding: 10px 20px 20px;
-`
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/modalwindows/windowsType.ts b/FRONT/DEV/src/components/modalwindows/windowsType.ts
deleted file mode 100644
index ae6d760..0000000
--- a/FRONT/DEV/src/components/modalwindows/windowsType.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export type ModalType = Record;
-
-export const ModalMap: ModalType = {
- '1': 'ipConfirm',
- '2': 'loader',
- '3': 'connectionError',
- '4': 'addDevice',
- '5': 'sudo',
- '6': 'noteDevice',
- '7': 'noteWifi',
- '8': 'connectNetwork',
- '9': 'disconnectConfirm',
-}
diff --git a/FRONT/DEV/src/components/register.tsx b/FRONT/DEV/src/components/register.tsx
deleted file mode 100644
index a043285..0000000
--- a/FRONT/DEV/src/components/register.tsx
+++ /dev/null
@@ -1,194 +0,0 @@
-import { ModalContainer, ModalTitle, ModalContent, ModalText } from "./modalwindows/style"
-import Input from "./UI/inputs/input"
-import { MainButton } from "./UI/buttons/mainButton"
-import styled from "styled-components"
-import { useEffect, useState } from "react"
-import { useIpStore } from "../store"
-import { NetworkService } from "../api/request"
-import { IconComponent } from "../const/buttons/icons"
-import { buttonNames } from "../const/buttons/names"
-import ThemeButton from "./UI/buttons/toggletheme"
-import About from "./workSpace/modules/appModules/about"
-
-const Wrapper = styled.div`
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- height: 100%;
- background: ${(props) => props.theme.background};
-`
-
-const Container = styled.form`
- display: flex;
- flex-direction: column;
- gap: 25px;
- align-items: center;
- background: ${(props) => props.theme.primary};
- padding: 25px;
- border-radius: 18px;
- width: 350px;
-`
-
-const Title = styled.div`
- display: flex;
- flex-direction: column;
- gap: 15px;
- align-items: center;
- text-align: center;
- font-size: 20px;
-`
-
-const Content = styled.div`
- display: flex;
- flex-direction: column;
- gap: 25px;
- text-align: center;
-`
-
-const ButtonContainer = styled.div`
- width: 100%;
- display: flex;
- justify-content: center;
-`
-
-const Menu = styled.div`
- display: flex;
- align-items: center;
-`
-
-const Button = styled.div`
- width: 100%;
- cursor: pointer;
-`
-
-const IconContainer = styled.div`
- padding: 10px;
- color: ${props => props.theme.text};
-`
-
-export const CreateUser = () => {
-
- const { ipAddress, setIpAddress } = useIpStore();
- const [repeatPassword, setRepeatPassword] = useState('');
- const [passwordsMatch, setPasswordsMatch] = useState(true);
- const [about, setAbout] = useState(false)
-
- const [user, setUser] = useState({
- username: 'operator',
- password: '',
- is_admin: true
- })
-
- const handleChange = (id: string, value: string) => {
- if (id === 'repeatPassword') {
- setRepeatPassword(value);
- setPasswordsMatch(user.password === value);
- } else {
- setUser(prevData => ({
- ...prevData,
- [id]: value
- }));
- if (id === 'password') {
- setPasswordsMatch(value === repeatPassword);
- }
- }
- }
-
- const handleSave = async (user: object) => {
- try {
- const result = await NetworkService.createUser(ipAddress, user);
- if (result.status === 200) { window.location.reload() }
- } catch (err) {
- console.error('Error:', err);
- }
- }
-
- const handleSubmit = () => {
- if (passwordsMatch) {
- handleSave(user);
- }
- };
-
- const back = ()=>{
- setIpAddress('localhost')
- }
-
- const toAbout = ()=>{
- setAbout(true)
- }
- return (
-
- <>
- {!about ? (
-
-
-
-
-
- Настройка оператора узла
- {ipAddress != 'localhost' &&
- {ipAddress}
- }
-
-
-
-
-
-
-
Перед началом работы необходимо создать пароль оператора приложения
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {ipAddress != 'localhost' &&
-
- }
-
-
-
-
-
-
-
-
- ): (
- setAbout(false)} />
- )}
- >
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/modules/appModules/about.tsx b/FRONT/DEV/src/components/workSpace/modules/appModules/about.tsx
deleted file mode 100644
index 59a4c39..0000000
--- a/FRONT/DEV/src/components/workSpace/modules/appModules/about.tsx
+++ /dev/null
@@ -1,249 +0,0 @@
-
-import { MainButton } from "../../../UI/buttons/mainButton"
-import { workSpaceNames } from "../../../../const/workspace/names"
-import { useWorkSpaceStore } from "../../../../store"
-import styled, {useTheme} from "styled-components"
-import ThemeButton from "../../../UI/buttons/toggletheme"
-import {buttonNames} from "../../../../const/buttons/names";
-import {IconComponent} from "../../../../const/buttons/icons";
-
-type Props = {
- from: 'reg' | 'helloWindow' | 'workSpace'
- onBack?: () => void
-}
-
-const Wrapper = styled.div`
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- height: 100%;
- width: 100%;
- background: ${(props => props.theme.background)};
- padding: 50px;
- box-sizing: border-box;
-`
-
-const Content = styled.div`
- max-width: 1200px;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- height: 100%;
- box-sizing: border-box;
- padding: 40px 50px;
- background: ${(props => props.theme.primary)};
- border-radius: 18px;
- position: relative;
-`
-
-const Listing = styled.div`
- display: flex;
- flex-direction: column;
- background-color: ${(props => props.theme.secondary)};
- border-radius: 10px;
- padding: 24px 20px;
- p{
- font-weight: bold;
- font-size: 24px;
- }
-`
-
-const List = styled.ul`
- display: flex;
- flex-direction: column;
- margin: 10px 0;
- padding: 0;
- list-style-type: none;
- font-size: 18px;
- gap: 4px;
- & li:before {
- color: ${(props => props.theme.accent)};
- content: "•";
- font-size: 28px;
- width: .8em;
- display: inline-block;
- position: relative;
- top: 2px;
- }
-`
-
-const Title = styled.div`
- font-size: 20px;
-`
-
-const SubTitle = styled.div`
- display: flex;
- flex-direction: column;
- gap: 24px;
- background-color:rgba(255, 248, 225, 0.6);
- border-left: #ff9800 solid 4px;
- border-radius: 0 8px 8px 0;
- padding: 20px 12px;
-
- a{
- text-decoration: none;
- color: ${(props => props.theme.errorColor)};
- font-weight: 500;
- font-size: 18px;
- width: max-content;
- }
- p{
- font-size: 18px;
- color: ${(props=>props.theme.textColor)};
- }
- .icon{
- width: 32px;
- height: 32px;
- fill: #ff9800;
- }
-`
-
-const Links = styled.div`
- display: flex;
- justify-content: start;
- gap: 20px;
-`
-
-const LinkBlock = styled.a`
- text-decoration: none;
- color: ${(props => props.theme.accent)};;
-`
-
-const Copyright = styled.div`
- width: 100%;
- text-align: start;
- color: ${(props => props.theme.offlineColor)};
-`
-
-const ButtonContainer = styled.div`
- position: absolute;
- top: 12px;
- right: 14px;
-`
-const AboutLine = styled.hr`
- border: ${(props => props.theme.hoverBtn)} 1px solid;
- width: 100%;
-`
-
-const MainTitle = styled.div`
- width: 100%;
- display: flex;
- gap: 15px;
- align-items: center;
- justify-content: space-between;
- padding-top: 10px;
- box-sizing: border-box;
-
- img{
- width: 50px;
- height: 50px;
- }
- .version{
- text-wrap: nowrap;
- background-color: ${(props => props.theme.hoverBtn)};
- color: ${(props => props.theme.borderColor)};
- border-radius: 20px;
- font-size: 18px;
- padding: 10px 18px;
- line-height: 1;
- }
- .title{
- display: flex;
- justify-content: center;
- align-items: center;
- gap: 24px;
- }
-`
-
-export default function About({ from, onBack }: Props) {
- const { setWorkModule } = useWorkSpaceStore()
- const getBackHandler = () => {
- switch (from) {
- case 'reg':
- return onBack
- case 'helloWindow':
- return () => setWorkModule(workSpaceNames[1])
- case 'workSpace':
- return () => setWorkModule(workSpaceNames[3])
- default:
- return undefined
- }
- }
-
- const backHandler = getBackHandler()
- const showBackButton = from !== 'reg' || (from === 'reg' && onBack)
-
- return (
-
-
-
-
-
-
-
О приложении
-
- v 0.0.3
-
-
-
-
-
- ГоNets — минимально работоспособный кроссплатформенный продукт (MVP) для демонстрации нашего подхода к управлению настройками ПК в корпоративной среде.
-
-
-
- Возможности:
-
- Визуализация активных сетевых ресурсов
- Настройка параметров локальных и удалённых сетевых ресурсов
- Управление взаимодействием ресурсов с Клиентом ГoNets
-
-
-
-
-
-
-
- Программное обеспечение исключительно для ознакомления и домашнего использования.
- Перейти на ГоNets-PRO
-
-
-
-
- Домашняя страницa
-
-
-
- Документация
-
-
-
- Лицензия
-
-
-
-
- Разработано и поддерживается ООО «Гибридные Офисные Системы» 2024-2025 г. Все права защищены.
-
-
-
- {showBackButton && backHandler && (
-
-
- )}
-
- {from == 'reg' &&
-
- }
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/modules/appModules/header.tsx b/FRONT/DEV/src/components/workSpace/modules/appModules/header.tsx
deleted file mode 100644
index 356764b..0000000
--- a/FRONT/DEV/src/components/workSpace/modules/appModules/header.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import styled from "styled-components"
-import { IconComponent } from "../../../../const/buttons/icons"
-import { buttonNames } from "../../../../const/buttons/names"
-import { useWorkSpaceStore } from "../../../../store"
-import { useModalContext } from "../../../../store"
-import { useAdminStore } from "../../../../store/adminStore"
-import { ModalMap } from "../../../modalwindows/windowsType"
-import { QuitButton } from "../../../UI/buttons/quitButton"
-import { usePosStore } from "../../../../store/posStore"
-
-const Container = styled.div`
- display: flex;
- align-items: center;
- justify-content: flex-end;
- background-color: ${(props) => props.theme.primary};
- padding: 0 5px;
-`
-
-const ButtonContainer = styled.div`
- display: flex;
- align-items: center;
-`
-
-const IconContainer = styled.div`
- padding: 10px;
-
- svg{
- cursor: pointer;
- }
-`
-
-export const Header = () => {
- const {setNullPos} = usePosStore()
-
- return (
-
-
-
- setNullPos(true)}/>
-
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/modules/appModules/helloWindow.tsx b/FRONT/DEV/src/components/workSpace/modules/appModules/helloWindow.tsx
deleted file mode 100644
index 0a09826..0000000
--- a/FRONT/DEV/src/components/workSpace/modules/appModules/helloWindow.tsx
+++ /dev/null
@@ -1,82 +0,0 @@
- import styled from "styled-components"
- import { MainButton } from "../../../UI/buttons/mainButton"
- import { useWorkSpaceStore } from "../../../../store"
- import { workSpaceNames } from "../../../../const/workspace/names"
- import { buttonNames } from "../../../../const/buttons/names"
-
- const Wrapper = styled.div`
- width: 100%;
- height: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- background-color: ${(props => props.theme.background)};
- background-image: url('./assets/images/back1.svg');
- background-size: 100%;
- background-repeat: no-repeat;
- background-position: bottom;
- `
-
- const Container = styled.div`
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- gap: 52px;
- margin-bottom: 100px;
- `
-
- const ButtonWrapper = styled.div`
- display: flex;
- gap: 75px;
- flex-direction: column;
- `
-
- const ButtonContainer = styled.div`
- display: flex;
- gap: 15px;
- flex-direction: column;
- `
-
- const Title = styled.div`
- display: flex;
- align-items: flex-end;
- gap: 10px;
-
- h1{
- font-size: 52px;
- }
- `
-
- export const HelloWindow = () => {
-
- const { setWorkModule } = useWorkSpaceStore()
-
- return (
-
-
-
-
-
-
-
-
-
- setWorkModule(workSpaceNames[3])}
- />
- setWorkModule(workSpaceNames[4])}
- />
-
-
-
-
- )
- }
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/modules/appModules/usersScanner/modules/ListUsers.tsx b/FRONT/DEV/src/components/workSpace/modules/appModules/usersScanner/modules/ListUsers.tsx
deleted file mode 100644
index 52f146e..0000000
--- a/FRONT/DEV/src/components/workSpace/modules/appModules/usersScanner/modules/ListUsers.tsx
+++ /dev/null
@@ -1,78 +0,0 @@
-import React, { useState } from 'react';
-import styled from 'styled-components';
-import DeviceCard from "../../../../../UI/Dropdown/DeviceCard";
-import {DeviceUser} from "../../../../../../store/useDeviceStore";
-
-const ScanBtn = styled.button`
- position: relative;
- padding: 14px 22px;
- background-color: #4CAF50;
- color: white;
- border: none;
- border-radius: 12px;
- font-size: 18px;
- transition: .4s ease;
- &:hover{
- transform: scale(1.03);
- }
-`
-
-interface ListUsersProps {
- loading: boolean;
- handleScan: ()=>void;
- devices: DeviceUser[];
- scanInitiated: boolean;
-}
-
-const ListUsers = ({loading, handleScan, devices, scanInitiated}: ListUsersProps) => {
- const activeDevices = devices.filter(device => device.status === 'online');
- const inactiveDevices = devices.filter(device => device.status !== 'online');
-
- // Пагинация
- const [currentPage, setCurrentPage] = useState(1);
- const [devicesPerPage] = useState(10);
-
-
- return (
- <>
-
- {devices.length > 0 ? 'Обновить список' : 'Сканировать узлы'}
-
-
- {devices.length > 0 ? (
-
- {/* Колонка активных устройств */}
-
-
Активные узлы ({activeDevices.length})
- {activeDevices.map((device, index) => (
-
- ))}
-
- {/* Колонка неактивных устройств */}
-
-
Неактивные узлы ({inactiveDevices.length})
- {inactiveDevices.map((device, index) => (
-
- ))}
-
-
- ) : scanInitiated ? (
- Узлы не найдены
- ) : null}
- >
- );
-};
-
-export default ListUsers;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/modules/appModules/usersScanner/modules/TableUsers.tsx b/FRONT/DEV/src/components/workSpace/modules/appModules/usersScanner/modules/TableUsers.tsx
deleted file mode 100644
index 77e064c..0000000
--- a/FRONT/DEV/src/components/workSpace/modules/appModules/usersScanner/modules/TableUsers.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import React from 'react';
-import styled from 'styled-components';
-import DeviceCard from "../../../../../UI/Dropdown/DeviceCard";
-import {DeviceUser} from "../../../../../../store/useDeviceStore";
-import TableScanner from "../../../../../UI/tables/TableScanner";
-
-const ScanBtn = styled.button`
- position: relative;
- padding: 14px 22px;
- background-color: #4CAF50;
- color: white;
- border: none;
- border-radius: 12px;
- font-size: 18px;
- transition: .4s ease;
- &:hover{
- transform: scale(1.03);
- }
-`
-
-interface ListUsersProps {
- loading: boolean;
- handleScan: ()=>void;
- devices: DeviceUser[];
- scanInitiated: boolean;
-}
-
-const ListUsers = ({loading, handleScan, devices, scanInitiated}: ListUsersProps) => {
-
- return (
- <>
-
- {devices.length > 0 ? 'Обновить список' : 'Сканировать узлы'}
-
-
- {devices.length > 0 ? (
-
- ) : scanInitiated ? (
- Узлы не найдены
- ) : null}
- >
- );
-};
-
-export default ListUsers;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/modules/appModules/usersScanner/userScanner.tsx b/FRONT/DEV/src/components/workSpace/modules/appModules/usersScanner/userScanner.tsx
deleted file mode 100644
index 19ca497..0000000
--- a/FRONT/DEV/src/components/workSpace/modules/appModules/usersScanner/userScanner.tsx
+++ /dev/null
@@ -1,191 +0,0 @@
-import { useIpStore } from "../../../../../store";
-import styled, { keyframes } from "styled-components";
-import { useState } from "react";
-import { NetworkService } from "../../../../../api/request";
-import ListUsers from "./modules/ListUsers";
-import TableUsers from "./modules/TableUsers";
-import DropdownType from "../../../../UI/Dropdown/DropdownType";
-import useNetworkStore from "../../../../../store/useDeviceStore";
-
-type Option ={
- value: number,
- label: string,
-}
-
-// Анимации
-const ring1 = keyframes`
- 0% { transform: translate(-50%, -50%) scale(1); opacity: 0.12; }
- 50% { transform: translate(-50%, -50%) scale(1.1); opacity: 0.2; }
- 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.12; }
-`;
-
-const ring2 = keyframes`
- 0% { transform: translate(-50%, -50%) scale(1); opacity: 0.08; }
- 50% { transform: translate(-50%, -50%) scale(1.1); opacity: 0.15; }
- 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.08; }
-`;
-
-const ring3 = keyframes`
- 0% { transform: translate(-50%, -50%) scale(1); opacity: 0.04; }
- 50% { transform: translate(-50%, -50%) scale(1.1); opacity: 0.1; }
- 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.04; }
-`;
-const dotAnimation = keyframes`
- 0% { content: '.'; }
- 33% { content: '..'; }
- 66% { content: '...'; }
- 100% { content: '.'; }
-`;
-const pulse = keyframes`
- 0% { transform: translate(-50%, -50%) scale(1); }
- 50% { transform: translate(-50%, -50%) scale(1.1); }
- 100% { transform: translate(-50%, -50%) scale(1); }
-`;
-
-// Стили
-const Wrapper = styled.div<{ scanInitiated: boolean, loading: boolean}>`
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content:${({scanInitiated, loading})=>(scanInitiated && !loading ? 'start' : 'center')};
- height: 100%;
- width: 100%;
- background: ${(props) => props.theme.background};
- padding: 50px;
- box-sizing: border-box;
- gap: 24px;
- transition: justify-content .4s ease;
- overflow-y: auto;
- overflow-x: hidden;
- position: relative;
-`;
-const TitleWrapper = styled.h2`
- position: absolute;
- top: 20px;
- left: 50%;
- transform: translateX(-50%);
- font-size: 32px;
- width: max-content;
-`
-const UserLocate = styled.div<{ loading: boolean, scanInitiated: boolean }>`
- width: 60px;
- height: 60px;
- border-radius: 50%;
- position: relative;
- transition: .4s ease;
- transform: ${({scanInitiated,loading})=>(scanInitiated && !loading ? 'scale(0)' : 'scale(1)')};
- span {
- position: absolute;
- display: inline-block;
- background: ${(props) => props.theme.scannerColor};
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- border-radius: 50%;
- &.center {
- width: 60px;
- height: 60px;
- animation: ${({ loading }) => (loading ? pulse : "none")} 2s ease infinite;
- }
- &.ring1 {
- opacity: 0.12;
- width: 250px;
- height: 250px;
- animation: ${({ loading }) => (loading ? ring1 : "none")} 4s linear infinite;
- }
-
- &.ring2 {
- opacity: 0.08;
- width: 400px;
- height: 400px;
- animation: ${({ loading }) => (loading ? ring2 : "none")} 4s linear infinite;
- animation-delay: ${({ loading }) => (loading ? "0.1s" : "0")};
- }
-
- &.ring3 {
- opacity: 0.04;
- width: 550px;
- height: 550px;
- animation: ${({ loading }) => (loading ? ring3 : "none")} 4s linear infinite;
- animation-delay: ${({ loading }) => (loading ? "0.2s" : "0")};
- }
- }
-`;
-
-const LoadingText = styled.div`
- position: relative;
- padding: 14px 22px;
- background-color: #4CAF50;
- color: white;
- border: none;
- border-radius: 12px;
- font-size: 18px;
-`;
-const ScanningText = styled.span`
- &::after {
- content: '.';
- animation: ${dotAnimation} 1.5s infinite;
- }
-`;
-
-
-export default function UserScanner() {
- const { ipAddress } = useIpStore();
- const [loading, setLoading] = useState(false);
- const { devices, setDevices } = useNetworkStore();
- const [scanInitiated, setScanInitiated] = useState(devices.length > 0);
-
- // Сканирование
- const handleScan = async () => {
- try {
- setLoading(true);
- setScanInitiated(true);
- const res = await NetworkService.scanUser(ipAddress);
- console.log(res);
- setDevices(res.data.devices || []);
- } catch (err) {
- console.error("Ошибка сканирования сети:", err);
- setDevices([])
- } finally {
- setLoading(false);
- }
- };
-
- // Способ отображения
- const viewOptions: Option[] = [
- { value: 1, label: 'Таблица' },
- { value: 2, label: 'Список' },
- ];
- const [selectedView, setSelectedView] = useState(viewOptions[0]);
- const handleViewChange = (option: Option) => {
- setSelectedView(option);
- };
-
- return (
-
- {(!scanInitiated || loading) && (Сканирование узлов подсети )}
-
-
-
-
-
-
-
- {scanInitiated && !loading && (
-
- )}
-
- {loading ? (
-
- Сканирование узлов
-
- ) : selectedView.value == 1 ? (
-
- ):(
-
- )}
-
- );
-
-}
-
diff --git a/FRONT/DEV/src/components/workSpace/modules/appModules/wifiScanner/WifiScanner.tsx b/FRONT/DEV/src/components/workSpace/modules/appModules/wifiScanner/WifiScanner.tsx
deleted file mode 100644
index 25000eb..0000000
--- a/FRONT/DEV/src/components/workSpace/modules/appModules/wifiScanner/WifiScanner.tsx
+++ /dev/null
@@ -1,202 +0,0 @@
-import styled, { keyframes } from "styled-components";
-import React, { useState } from "react";
-import { NetworkService } from "../../../../../api/request";
-import WifiDot, {WifiNetworkScanner} from "./modules/WifiDot";
-import ModalWifiScaner from "./modules/ModalWifiScaner";
-import useNetworkStore from "../../../../../store/useDeviceStore";
-import {useIpStore} from "../../../../../store";
-
-// Анимации
-const ring1 = keyframes`
- 0% { transform: translate(-50%, -50%) scale(1); opacity: 0.12; }
- 50% { transform: translate(-50%, -50%) scale(1.1); opacity: 0.2; }
- 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.12; }
-`;
-const ring2 = keyframes`
- 0% { transform: translate(-50%, -50%) scale(1); opacity: 0.08; }
- 50% { transform: translate(-50%, -50%) scale(1.1); opacity: 0.15; }
- 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.08; }
-`;
-const ring3 = keyframes`
- 0% { transform: translate(-50%, -50%) scale(1); opacity: 0.04; }
- 50% { transform: translate(-50%, -50%) scale(1.1); opacity: 0.1; }
- 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.04; }
-`;
-const dotAnimation = keyframes`
- 0% { content: '.'; }
- 33% { content: '..'; }
- 66% { content: '...'; }
- 100% { content: '.'; }
-`;
-const pulse = keyframes`
- 0% { transform: translate(-50%, -50%) scale(1); }
- 50% { transform: translate(-50%, -50%) scale(1.1); }
- 100% { transform: translate(-50%, -50%) scale(1); }
-`;
-
-// Стили
-const Wrapper = styled.div<{ scanInitiated: boolean, loading: boolean}>`
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content:center ;
- height: 100%;
- width: 100%;
- position: relative;
- background: ${(props) => props.theme.background};
- padding: 50px;
- box-sizing: border-box;
- gap: 24px;
- transition: justify-content .4s ease;
- overflow-y: auto;
- overflow-x: hidden;
-`;
-const TitleWrapper = styled.h2`
- position: absolute;
- top: 24px;
- left: 50%;
- transform: translateX(-50%);
- font-size: 32px;
-`
-
-const UserLocate = styled.div<{ loading: boolean, scanInitiated: boolean }>`
- width: 60px;
- height: 60px;
- border-radius: 50%;
- position: relative;
- transition: .4s ease;
- transform: scale(1);
- .circel {
- position: absolute;
- display: inline-block;
- background: ${(props) => props.theme.scannerColor};
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- border-radius: 50%;
- &.center {
- width: 60px;
- height: 60px;
- animation: ${({ loading }) => (loading ? pulse : "none")} 2s ease infinite;
- }
- &.ring1 {
- opacity: 0.12;
- width: 250px;
- height: 250px;
- animation: ${({ loading }) => (loading ? ring1 : "none")} 4s linear infinite;
- }
-
- &.ring2 {
- opacity: 0.08;
- width: 400px;
- height: 400px;
- animation: ${({ loading }) => (loading ? ring2 : "none")} 4s linear infinite;
- animation-delay: ${({ loading }) => (loading ? "0.1s" : "0")};
- }
-
- &.ring3 {
- opacity: 0.04;
- width: 550px;
- height: 550px;
- animation: ${({ loading }) => (loading ? ring3 : "none")} 4s linear infinite;
- animation-delay: ${({ loading }) => (loading ? "0.2s" : "0")};
- }
- }
-`;
-
-
-const LoadingText = styled.div`
- position: relative;
- padding: 14px 22px;
- background-color: #4CAF50;
- color: white;
- border: none;
- border-radius: 12px;
- font-size: 18px;
-`;
-const ScanningText = styled.span`
- &::after {
- content: '.';
- animation: ${dotAnimation} 1.5s infinite;
- }
-`;
-const ScanBtn = styled.button<{scanInitiated: boolean}>`
- position: relative;
- padding: 14px 22px;
- background-color: #4CAF50;
- color: white;
- border: none;
- border-radius: 12px;
- font-size: 18px;
- transition: transform .4s ease;
- transform: ${({scanInitiated}) => (scanInitiated ? "translateY(240px)" : "translateY(0)")};
- &:hover{
- transform: ${({scanInitiated}) => (scanInitiated ? "translateY(240px)" : "translateY(0)")} scale(1.03);
- }
-`
-
-export function WifiScanner() {
- //const { ipAddress } = useIpStore();
- const ipAddress = '192.168.1.147'
- const [loading, setLoading] = useState(false);
- const [scanInitiated, setScanInitiated] = useState(false);
- const { wifiNetworks, setWifiNetworks } = useNetworkStore();
- const [currentNetwork, setCurrentNetwork] = useState(null);
-
- const handleScan = async () => {
- setWifiNetworks([]);
- setCurrentNetwork(null)
- setLoading(true);
- setScanInitiated(true);
- try {
- const res = await NetworkService.scanWifi(ipAddress);
- const networks = res.data.access_points || [];
- setWifiNetworks(networks);
- } catch (err) {
- console.error("Ошибка сканирования сети:", err);
- setWifiNetworks([]);
- } finally {
- setLoading(false);
- }
- };
-
- return (
-
- Сканирование точек доступа Wi-Fi сети
-
-
-
-
-
-
- {wifiNetworks.map((network, index) => (
-
- ))}
-
- {currentNetwork && (
- setCurrentNetwork(null)}
- network={currentNetwork}
- />
- )}
-
-
- {loading ? (
-
- Сканирование точек доступа
-
- ) : (
- 0 }>
- {wifiNetworks.length > 0 ? 'Обновить список' : 'Сканировать точки доступа'}
-
- )}
-
- );
-}
-
diff --git a/FRONT/DEV/src/components/workSpace/modules/appModules/wifiScanner/modules/ModalWifiScaner.tsx b/FRONT/DEV/src/components/workSpace/modules/appModules/wifiScanner/modules/ModalWifiScaner.tsx
deleted file mode 100644
index 7313f95..0000000
--- a/FRONT/DEV/src/components/workSpace/modules/appModules/wifiScanner/modules/ModalWifiScaner.tsx
+++ /dev/null
@@ -1,225 +0,0 @@
-import React, {useEffect, useState} from 'react';
-import styled from 'styled-components';
-import {WifiNetworkScanner} from "./WifiDot";
-import {IconComponent} from "../../../../../../const/buttons/icons";
-import {buttonNames} from "../../../../../../const/buttons/names";
-import {ModalMap} from "../../../../../modalwindows/windowsType";
-import {useIpStore, useModalContext} from "../../../../../../store";
-import {Status} from "../../../../../customeNodes/nodes/networkInterface/networkNode/style";
-import SignalSVG from "../../../../../UI/signalSvg";
-import { useTheme } from 'styled-components';
-import useNetworkStore, {DeviceUser} from "../../../../../../store/useDeviceStore";
-import {NetworkService} from "../../../../../../api/request";
-
-const Modal = styled.div`
- display: flex;
- justify-content: center;
- flex-direction: column;
- background-color: ${(props) => props.theme.secondary};
- border-radius: 24px;
- padding: 32px 28px;
- bottom: -40%;
- left: 220px;
- position: absolute;
- z-index: 20;
- min-width: 300px;
- &:hover .close-btn{
- opacity: 1;
- visibility: visible;
- }
-`
-const CloseBtn = styled.div`
- position: absolute;
- top: -20px;
- right: -20px;
- cursor: pointer;
- background-color: ${(props) => props.theme.primary};
- border-radius: 50%;
- display: flex;
- justify-content: center;
- align-items: center;
- width: 40px;
- height: 40px;
- transition: all .4s ease;
- opacity: 0;
- visibility: visible;
-
- &:hover {
- background-color: ${(props) => props.theme.hoverBtn};
- }
-`
-const ModalTitle = styled.div`
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-size: 20px;
- line-height: 1;
- margin-bottom: 32px;
- h4{
- font-weight: normal;
- }
- .functionalIcons{
- display: flex;
- justify-content: center;
- align-items: center;
- gap: 18px;
- }
-`
-const ModalContent = styled.div`
- display: flex;
- flex-direction: column;
- gap: 10px;
- justify-content: space-between;
- align-items: center;
- width: 100%;
-`
-const ModalRow = styled.div`
- display: flex;
- justify-content: space-between;
- align-items: start;
- gap: 12px;
- width: 100%;
- font-size: 14px;
- h6{
- margin: 0;
- padding: 0;
- font-size: 1em;
- }
- p{
- max-width:180px;
- text-align: right;
- }
-`
-const ModalConnect = styled.button`
- color: ${(props) => props.theme.primary};
- padding: 10px 12px;
- font-size: 18px;
- background-color: ${(props) => props.theme.accent};
- border-radius: 12px;
- margin-top: 4px;
- border: none;
- outline: none;
- width: 100%;
- cursor: pointer;
- transition: .4s ease;
- &:hover{
- background-color: ${(props) => props.theme.accentHover};
- }
-`
-
-const ModalWifiScaner = ({ network,onClose }: { network: WifiNetworkScanner, onClose: ()=>void }) => {
- const { openModal } = useModalContext();
- const { ipAddress } = useIpStore();
- const theme = useTheme()
- const [signal, setSignal] = useState(1);
- const { wifiNetworks } = useNetworkStore();
- const [isConnected, setIsConnected] = useState(false);
-
- useEffect(() => {
- const getStatus = async () => {
- try {
- const response = await NetworkService.statusNetwork(ipAddress);
- const { status, ssid } = response.data;
- setIsConnected(
- !!network?.ssid &&
- ssid === network.ssid &&
- status === 'connected'
- );
- } catch (error) {
- setIsConnected(false);
- }
- };
-
- getStatus();
- }, [network?.ssid, ipAddress]);
-
- const currentNetwork = wifiNetworks.find(n => n.bssid === network.bssid) || network;
- const openModalNote = (e: React.MouseEvent) => {
- e.stopPropagation();
- openModal(ModalMap['7'], {
- address: currentNetwork.ssid,
- currentNote: currentNetwork.note || ''
- });
- };
-
- const openModalNetwork= (e: React.MouseEvent) => {
- e.stopPropagation();
- if(isConnected){
- openModal(ModalMap['9'], {
- address: currentNetwork.ssid,
- });
- }else{
- openModal(ModalMap['8'], {
- address: currentNetwork.ssid,
- });
- }
- };
-
- useEffect(() => {
- const perc = Number(network.signal);
-
- switch (true) {
- case perc >= -50: setSignal(5); break;
- case perc >= -60: setSignal(4); break;
- case perc >= -70: setSignal(3); break;
- case perc >= -80: setSignal(2); break;
- default: setSignal(1); break;
- }
- }, [network.signal])
- return (
-
-
-
-
-
- {network.ssid}
-
-
-
-
-
-
-
-
-
-
-
-
- BSSID:
- {network.bssid}
-
-
- Производитель:
- {network.vendor}
-
-
- Сигнал:
- {network.signal} dBm
-
-
- Канал:
- {network.channel}
-
-
- Шифрование:
- {network.encryption}
-
-
- Частота:
- {network.frequency}
-
-
- Скрытая сеть:
- {network.hidden ? 'Да' : 'Нет'}
-
-
- Заметка:
- {currentNetwork.note ? currentNetwork.note : '-'}
-
- {isConnected ? 'Отключиться' : 'Подключиться'}
-
-
- );
-};
-
-export default ModalWifiScaner;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/modules/appModules/wifiScanner/modules/WifiDot.tsx b/FRONT/DEV/src/components/workSpace/modules/appModules/wifiScanner/modules/WifiDot.tsx
deleted file mode 100644
index 54fee2b..0000000
--- a/FRONT/DEV/src/components/workSpace/modules/appModules/wifiScanner/modules/WifiDot.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import React from 'react';
-import styled from "styled-components";
-
-export interface WifiNetworkScanner {
- ssid: string;
- bssid: string;
- channel: number;
- signal: number;
- encryption: string;
- frequency: string;
- vendor: string;
- hidden: boolean;
- note: string;
-}
-
-//Точка вайфай
-const Dot = styled.div<{ top: string; left: string }>`
- position: absolute;
- top: ${props => props.top};
- left: ${props => props.left};
- display: flex;
- justify-content: center;
- align-items: center;
- font-size: 18px;
- transform: translate(-50%, -50%);
- user-select: none;
- transition: .4s;
- text-wrap: nowrap;
- &:hover {
- transform: translate(-50%, -50%) scale(1.1);
- }
-`;
-
-const getPositionInRing = (index: number, total: number, ringSize: number) => {
- const angle = (index * (2 * Math.PI / total)) + (Math.PI / total * (index % 2));
- const innerRadius = ringSize * 0.4;
- const outerRadius = ringSize * 0.5;
- const radius = innerRadius + (outerRadius - innerRadius) * (0.3 + 0.7 * (index % 10) / 10);
-
- return {
- x: Math.cos(angle) * radius,
- y: Math.sin(angle) * radius
- };
-};
-
-const WifiDot = ({ network, index, total, onSelect }: {
- network: WifiNetworkScanner,
- index: number,
- total: number,
- onSelect: (n: WifiNetworkScanner) => void
-}) => {
- const getPosition = (signal: number, index: number, total: number) => {
- let strength: 1 | 2 | 3;
- if (signal >= -50) {
- strength = 3;
- } else if (signal >= -70) {
- strength = 2;
- } else {
- strength = 1;
- }
-
- const ringSizes = { 1: 550, 2: 400, 3: 250 };
- const ringSize = ringSizes[strength];
- const offset = getPositionInRing(index, total, ringSize);
-
- return {
- top: `calc(50% + ${offset.y}px)`,
- left: `calc(50% + ${offset.x}px)`
- };
- };
-
- const position = getPosition(network.signal, index, total);
-
- return (
- onSelect(network)}>
- {network.ssid}
-
- );
-};
-
-export default WifiDot;
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/modules/workModules/networkInterfaces.tsx b/FRONT/DEV/src/components/workSpace/modules/workModules/networkInterfaces.tsx
deleted file mode 100644
index d0325ef..0000000
--- a/FRONT/DEV/src/components/workSpace/modules/workModules/networkInterfaces.tsx
+++ /dev/null
@@ -1,282 +0,0 @@
-import { useEffect, useState, useCallback, useRef } from 'react';
-import { useTheme } from 'styled-components';
-import { usePosStore } from '../../../../store/posStore';
-
-import { ReactFlow, useNodesState, useEdgesState, Background, addEdge, applyEdgeChanges, Controls } from '@xyflow/react';
-import '@xyflow/react/dist/style.css';
-import '../../../../assets/css/flow.css'
-
-import { nodeTypes } from '../../../customeNodes/types/types';
-import { ModalMap } from '../../../modalwindows/windowsType';
-
-import {
- useGroupStore,
- useModalContext,
- usePannableStore
-} from '../../../../store'
-
-import {
- autosavePosition,
- resetPosition,
- processNodeChanges,
- initNetworkIntData,
- groupSort,
- collapseGroup,
- updateWifiData,
- useInitCanvas
-} from '../../../../utils/nodeController';
-
-import {
- ResponseData,
- ResponseNetwork,
- IEdge,
- Interfaces,
-} from '../../../../const/types/types';
-
-type Props = {
- startConnection: boolean
- ws: string
-}
-
-const proOptions = { hideAttribution: true, };
-
-export const NetworkInterfaces = ({ startConnection, ws }: Props) => {
-
- const initializationAttempt = useRef(0);
- const [requestError, setRequestError] = useState({ status: false, message: '' })
-
- const { openModal, closeLoader } = useModalContext();
- const [loader, setLoader] = useState(true)
- const theme = useTheme();
-
- const [socket, setSocket] = useState(null);
- const [data, setData] = useState([]);
- const [wifiData, setWifi] = useState()
- const [hasInited, setHasInited] = useState(false);
- const { initedNodes, initedEdges, handleInit } = useInitCanvas();
-
- const [interfaces, setInterfaces] = useState([]);
- const [edgeData, setEdgeData] = useState([]);
-
- const [nodes, setNodes, onNodesChange] = useNodesState([] as any[]);
- const [edges, setEdges] = useEdgesState([] as any[]);
- const { isPanDisabled } = usePannableStore()
-
- const [changeArray, setChangeArray] = useState([]);
- const { groups } = useGroupStore();
- const {isNullPos, setNullPos} = usePosStore()
-
- useEffect(() => {
- if (startConnection) {
-
- openModal(ModalMap['2'], 'Идет загрузка данных');
-
- setNodes([])
- setEdges([])
- setHasInited(false)
- initializationAttempt.current = 0;
-
- const newSocket = new WebSocket(`ws://${ws}:8001/api/v1`);
-
- let connectionTimeout;
- setSocket(newSocket);
-
- connectionTimeout = setTimeout(() => {
- if (newSocket.readyState !== WebSocket.OPEN) {
- newSocket.close();
- }
- }, 5000);
-
- newSocket.onopen = () => {
- console.log('WebSocket connection established');
- };
-
- newSocket.onmessage = (event) => {
- const newData = JSON.parse(event.data);
-
- setData(() => [
- newData.activation,
- newData.deactivation,
- ]);
- };
-
- newSocket.onerror = (error) => {
- console.error('WebSocket error:', error);
- };
-
- newSocket.onclose = () => {
- console.log('WebSocket connection closed');
- setRequestError({
- status: true,
- message: 'Соединение с сервером разорвано'
- })
- };
-
- return () => {
- newSocket.close();
- closeLoader()
- };
- }
- }, [startConnection, ws]);
-
-
- useEffect(() => {
- if (data.length > 0) {
- const { interfaces: newInterfaces, edgeData: newEdgeData } = initNetworkIntData(data);
- const activationData = data[0].interfaces;
-
- const wifi = activationData.find((el: any) => el.type === 'WIFI');
-
- setInterfaces(newInterfaces);
- setEdgeData(newEdgeData);
- if (wifi) { setWifi(wifi); }
- }
- }, [data]);
-
- useEffect(() => {
- if (interfaces.length > 0 && !hasInited) {
- handleInit(edgeData, interfaces)
- setHasInited(true)
- }
- }, [interfaces, edgeData, hasInited])
-
- useEffect(() => {
- if (initializationAttempt.current === 0 && !requestError.status) {
- const checkInterval = setInterval(() => {
-
- if(initedNodes.length> 0 && initedNodes.length<=4){
- window.location.reload()
- }
-
- if (initedNodes.length > 0 && initedEdges.length > 0) {
- setNodes(initedNodes);
- setEdges(initedEdges);
- console.log("Ноды и эджи успешно инициализированы");
- initializationAttempt.current = 1;
- clearInterval(checkInterval);
- clearTimeout(timeoutId);
- } else {
- console.log("Попытка инициализации нод и эджей...");
- }
- }, 1000);
-
- const timeoutId = setTimeout(() => {
- console.error("Ошибка: слишком долгая загрузка данных");
- clearInterval(checkInterval);
- setRequestError({
- status: true,
- message: 'Превышено время ожидания'
- })
- }, 60000);
-
- return () => {
- clearInterval(checkInterval);
- clearTimeout(timeoutId);
- };
- }
- }, [initedNodes, initedEdges, requestError]);
-
- useEffect(() => {
- if (nodes.length === 0) {
- initializationAttempt.current = 0;
- } else {
- initializationAttempt.current = 1;
- }
- }, [nodes]);
-
- useEffect(() => {
- if ((nodes.length > 0 && loader == true)) {
- setLoader(false)
- closeLoader()
- }
- }, [nodes, loader])
-
- const onEdgesChange = useCallback(
- (changes: any) => setEdges((eds) => applyEdgeChanges(changes, eds)),
- [setEdges],
- );
-
- const onConnect = useCallback(
- (connection: any) => setEdges((eds) => addEdge(connection, eds)),
- [setEdges],
- );
-
- const handleNodesChange = (changes: any) => {
- onNodesChange(changes);
-
- const newData = processNodeChanges(changes, data);
-
- if (newData) {
- setChangeArray((prevArray) => [...prevArray, newData]);
- }
- };
-
- useEffect(() => {
- const interval = setInterval(() => {
- if (socket && socket.readyState === WebSocket.OPEN) {
- autosavePosition(changeArray, socket);
- }
- setChangeArray([]);
- }, 1000);
-
- return () => {
- clearInterval(interval);
- };
- }, [changeArray, socket]);
-
- useEffect(() => {
- const sortedGroups = groupSort(groups, nodes)
- setNodes(collapseGroup(sortedGroups, nodes));
- }, [groups]);
-
- useEffect(() => {
- if (wifiData) {
- setNodes(updateWifiData(wifiData, nodes));
- }
- }, [wifiData])
-
- useEffect(() => {
- if (requestError.status) {
- setTimeout(() => {
- openModal(ModalMap['3'], {
- message: requestError.message,
- });
- }, 1000);
- }
- }, [requestError]);
-
- useEffect(() => {
- if(isNullPos){
- if(socket && socket.readyState === WebSocket.OPEN){
- resetPosition(socket, setNullPos, nodes, setNodes)
- }
- }
- }, [isNullPos]);
-
- return (
- <>
-
-
-
-
-
- >
- );
-};
diff --git a/FRONT/DEV/src/components/workSpace/sideBar/sideBar.tsx b/FRONT/DEV/src/components/workSpace/sideBar/sideBar.tsx
deleted file mode 100644
index 256f62d..0000000
--- a/FRONT/DEV/src/components/workSpace/sideBar/sideBar.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import { ToolBar } from "./toolBar/toolBar"
-import { ToolSpace } from "./toolSpace/toolSpace"
-import styled from "styled-components"
-
-const Container = styled.div`
- height: 100%;
- display: flex;
-`
-
-export const SideBar = ()=>{
- return(
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/sideBar/toolBar/toolBar-button.tsx b/FRONT/DEV/src/components/workSpace/sideBar/toolBar/toolBar-button.tsx
deleted file mode 100644
index 0b3b2cc..0000000
--- a/FRONT/DEV/src/components/workSpace/sideBar/toolBar/toolBar-button.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import styled from "styled-components"
-import { IconComponent as Icon } from "../../../../const/menus/sideBar/icons"
-import { useToolBar } from "../../../../hooks/useToolBar"
-import { useTheme } from "styled-components"
-
-type Props = {
- menuId: string
-}
-
-const Button = styled.div`
- width: 100%;
- cursor: pointer;
-`
-
-const IconContainer = styled.div`
- padding: 10px;
-`
-
-export const ToolBarButton = ({ menuId }: Props) => {
- const { isActive, collapseMenu } = useToolBar(menuId);
- const theme = useTheme();
-
- const iconColor = isActive ? theme.textColor : theme.active;
-
- return (
-
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/sideBar/toolBar/toolBar.tsx b/FRONT/DEV/src/components/workSpace/sideBar/toolBar/toolBar.tsx
deleted file mode 100644
index 9fd05a2..0000000
--- a/FRONT/DEV/src/components/workSpace/sideBar/toolBar/toolBar.tsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import { useToolBarStore } from "../../../../store"
-import { ToolBarButton } from "./toolBar-button"
-import styled from "styled-components"
-import ThemeButton from "../../../UI/buttons/toggletheme"
-import { IconComponent } from "../../../../const/buttons/icons"
-import { buttonNames } from "../../../../const/buttons/names"
-import { workSpaceNames } from "../../../../const/workspace/names"
-
-import { useModalContext } from "../../../../store"
-import { useAdminStore } from "../../../../store/adminStore"
-import { ModalMap } from "../../../modalwindows/windowsType"
-import { useWorkSpaceStore } from "../../../../store"
-
-const Container = styled.div`
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: space-between;
- background-color: ${(props) => props.theme.primary};
- padding: 5px 0;
-`
-
-const ButtonContainer = styled.div`
- display: flex;
- flex-direction: column;
- align-items: center;
-`
-
-const Button = styled.div`
- width: 100%;
- cursor: pointer;
-`
-
-const IconContainer = styled.div`
- padding: 10px;
- color: ${props => props.theme.text};
-`
-
-export const ToolBar = () => {
- const { toolBar } = useToolBarStore()
- const toolBarMenu = toolBar?.toolSpace
-
- const { openModal } = useModalContext()
- const { isAdmin } = useAdminStore()
- const { setWorkModule, workModule } = useWorkSpaceStore()
-
- return (
-
-
- {toolBarMenu && toolBarMenu.map((menu) => (
-
- ))}
-
-
- setWorkModule(workSpaceNames[5])} />
-
-
-
-
- setWorkModule(workSpaceNames[6])} />
-
-
-
-
-
-
-
- openModal(ModalMap['5'])} />
-
-
-
-
-
-
-
- workModule === workSpaceNames[3]
- ? setWorkModule(workSpaceNames[2])
- : setWorkModule(workSpaceNames[4])
- }
- />
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/sideBar/toolSpace/devicesBar.tsx b/FRONT/DEV/src/components/workSpace/sideBar/toolSpace/devicesBar.tsx
deleted file mode 100644
index dd5ca2b..0000000
--- a/FRONT/DEV/src/components/workSpace/sideBar/toolSpace/devicesBar.tsx
+++ /dev/null
@@ -1,244 +0,0 @@
-import styled from "styled-components"
-import { useState, useEffect } from "react"
-import { useModalContext } from "../../../../store"
-import { ModalMap } from "../../../modalwindows/windowsType"
-import { NetworkService } from "../../../../api/request"
-import { AnimDot } from "../../../UI/animDot"
-import { useMenu } from "../../../../hooks/useMenu"
-import { useIpStore, useDevicesStore } from "../../../../store"
-import { menusNames } from "../../../../const/menus/othersMenus/names"
-import { useWorkSpaceStore } from "../../../../store"
-import { workSpaceNames } from "../../../../const/workspace/names"
-import { IconComponent } from "../../../../const/buttons/icons"
-import { buttonNames } from "../../../../const/buttons/names"
-
-const Container = styled.div`
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 15px;
- padding: 20px;
- width: 210px;
- p{
- margin: 0;
- }
-`
-
-const Title = styled.div`
- padding: 5px 0;
- width: 100%;
- text-align: center;
- border-bottom: 1px solid ${props => props.theme.text};
-`
-
-const DeviceBlock = styled.div`
- border-radius: 8px;
- border: 2px solid ${props => props.theme.accent};
- display: flex;
- flex-direction: column;
- width: 100%;
-
- .paddingP{
- padding: 7px 5px;
- }
-`
-
-const DeviceControl = styled.div`
- padding: 5px 8px;
- background: ${props => props.theme.accent};
- display: flex;
- justify-content: space-between;
- align-items: center;
- color: white;
- cursor: pointer;
-`
-
-const PlusBlock = styled.div`
- font-size: 24px;
- cursor: pointer;
- border-radius: 8px;
- border: 2px dotted ${props => props.theme.accent};
- width: 100%;
- text-align: center;
- padding: 5px 0;
-`
-
-const Text = styled.div`
- display: flex;
- gap: 3px;
- align-items: center;
-`
-
-const DevicesContainer = styled.div`
- width: 100%;
- display: flex;
- flex-direction: column;
- gap: 15px;
-`
-
-const DevicesHeader = styled.div`
- display: flex;
- justify-content: space-between;
- align-items: center;
- cursor: pointer;
-
- .hControl{
- font-size: 20px;
- cursor: pointer;
- }
-`
-
-const DevicesContent = styled.div<{ $isactive: string }>`
- ${props => props.$isactive === 'true' && `display: flex;`}
- ${props => props.$isactive === 'false' && `display: none;`}
- flex-direction: column;
- align-items: center;
- gap: 15px;
-`
-
-interface CurrentDevice {
- hostname: string
- address: string
-}
-
-export const DevicesBar = () => {
- const { openModal } = useModalContext();
- const { setIpAddress, ipAddress } = useIpStore();
- const { devices, addDevice, deleteDevice } = useDevicesStore()
- const { isOpen, collapseMenu } = useMenu(menusNames[1]);
- const { setWorkModule } = useWorkSpaceStore()
-
- const [currentDevice, setCurrentDevice] = useState({
- address: 'localhost',
- hostname: ''
- })
-
- const checkWebSocketAvailability = async (ip: string): Promise => {
- return new Promise((resolve) => {
- const testSocket = new WebSocket(`ws://${ip}:8001/api/v1`);
- const timeout = setTimeout(() => {
- testSocket.close();
- resolve(false);
- }, 500
- );
-
- testSocket.onopen = () => {
- clearTimeout(timeout);
- testSocket.close();
- resolve(true);
- };
-
- testSocket.onerror = () => {
- clearTimeout(timeout);
- testSocket.close();
- resolve(false);
- };
- });
- };
-
- useEffect(() => {
- const fetchHostame = async () => {
- let response = await NetworkService.getHostname();
- if (response.status === 200) {
- setCurrentDevice(prevData => ({
- ...prevData,
- hostname: response.data.hostname
- }))
- }
- };
- fetchHostame();
- }, [])
-
- const handleAdd = () => {
- openModal(ModalMap['4'], {
- onSave: handleAddDeviceComplete,
- });
- };
-
- const handleAddDeviceComplete = (data: string) => {
- addDevice(data);
- switchWs(data);
- };
-
- const handleDelete = (number: number, adress: string) => {
- deleteDevice(number)
-
-
- if(adress == ipAddress){
- setIpAddress('localhost')
- }
- };
-
- const switchWs = async (ip: string) => {
- const isAvailable = await checkWebSocketAvailability(ip);
- if (!isAvailable) {
- openModal(ModalMap['3'], {
- message: `Не удалось подключиться к серверу по адресу ${ip}`,
- });
- return;
- }
-
- setIpAddress(ip);
- setWorkModule(workSpaceNames[3]);
- };
-
- useEffect(() => {
- if (devices.length === 0) {
- setIpAddress('localhost');
- }
- }, [devices]);
-
- return (
-
-
- Доступные узлы
-
-
-
- switchWs(currentDevice.address)}>
- Корневой адрес
-
- {currentDevice.hostname == '' ? (
- Название: Загрузка
- ) : (
- Название: {currentDevice.hostname}
- )}
-
-
-
-
- Дополнительные узлы
-
-
-
-
- {devices.length > 0 &&
- devices.map((device, index) => (
-
- switchWs(device.address)}>
- Узел {device.number}
- {
- e.stopPropagation(); // Предотвращаем всплытие события
- handleDelete(device.number, device.address);
- }}
- />
-
- Адрес: {device.address}
-
- ))
- }
-
-
- +
-
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/sideBar/toolSpace/toolSpace.tsx b/FRONT/DEV/src/components/workSpace/sideBar/toolSpace/toolSpace.tsx
deleted file mode 100644
index 91a7091..0000000
--- a/FRONT/DEV/src/components/workSpace/sideBar/toolSpace/toolSpace.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import { useToolBarStore } from "../../../../store"
-import { useToolBar } from "../../../../hooks/useToolBar"
-import { Space } from "../../../../const/menus/sideBar/components"
-import styled from "styled-components"
-
-const Container = styled.div<{isOpen: boolean}>`
- background-color: ${(props) => props.theme.secondary};
- width: 250px;
- font-size: 14px;
- flex: 3;
-
- overflow: hidden;
- max-width: ${({isOpen})=>(isOpen ? '250px' : '0')};
- transition: max-width .4s ease;
-`
-
-export const ToolSpace = () => {
- const { toolBar } = useToolBarStore()
- const name = toolBar?.current || ''
- const { isActive, isOpen } = useToolBar(name)
-
- if (!isActive) {
- return null
- }
-
- return (
-
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/components/workSpace/workSpace.tsx b/FRONT/DEV/src/components/workSpace/workSpace.tsx
deleted file mode 100644
index 5e97ebe..0000000
--- a/FRONT/DEV/src/components/workSpace/workSpace.tsx
+++ /dev/null
@@ -1,101 +0,0 @@
-import { useEffect, useState } from "react"
-import { HelloWindow } from "./modules/appModules/helloWindow";
-import { NetworkInterfaces } from "./modules/workModules/networkInterfaces";
-import styled from "styled-components"
-import { useIpStore, useToolBarStore } from "../../store";
-import { SideBar } from "./sideBar/sideBar";
-import { useWorkSpaceStore } from "../../store";
-import { workSpaceNames } from "../../const/workspace/names";
-import { Header } from "./modules/appModules/header";
-import { ReactFlowProvider } from "@xyflow/react";
-import About from "./modules/appModules/about";
-import UserScanner from "./modules/appModules/usersScanner/userScanner";
-import {WifiScanner} from "./modules/appModules/wifiScanner/WifiScanner";
-
-const Section = styled.div`
- display: flex;
- flex-direction: column;
- height: 100%;
-`
-
-const FlowContainer = styled.div`
- display: flex;
- height: 100%;
-`
-
-const WorkSection = styled.div`
- display: flex;
- flex-direction: column;
- width: 100%;
- position: relative;
-`
-
-export default function WorkSpace() {
- const { ipAddress, setIpAddress } = useIpStore();
- const { workModule } = useWorkSpaceStore()
- const [currentWs, setCurrentWs] = useState(ipAddress);
- const initMenus = useToolBarStore((state) => state.initialize);
- const initModule = useWorkSpaceStore((state) => state.initialize)
-
- useEffect(() => {
- if (!localStorage.getItem('toolBar-storage')) {
- initMenus();
- }
- }, [initMenus]);
-
- useEffect(() => {
- if (!localStorage.getItem('workSpace-storage')) {
- initModule();
- }
- }, [initModule]);
-
- useEffect(() => {
- setCurrentWs(ipAddress);
- }, [ipAddress]);
-
- useEffect(() => {
- setIpAddress(currentWs);
- }, [currentWs]);
-
- localStorage.getItem('workSpace-storage')
-
- return (
-
-
-
-
- {workModule === workSpaceNames[1] && }
-
- {workModule === workSpaceNames[2] && (
-
- )}
-
- {workModule === workSpaceNames[4] && (
-
- )}
- {workModule === workSpaceNames[5] && (
-
- )}
- {workModule === workSpaceNames[6] && (
-
- )}
- {workModule === workSpaceNames[3] &&
-
-
-
-
-
-
- }
-
-
- )
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/buttons/icons.tsx b/FRONT/DEV/src/const/buttons/icons.tsx
deleted file mode 100644
index 9cab629..0000000
--- a/FRONT/DEV/src/const/buttons/icons.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-import React from "react";
-import { buttonNames } from "./names";
-import { useTheme } from "styled-components";
-import { Icon } from '@iconify/react';
-
-import exitToApp from '@iconify/icons-ic/twotone-exit-to-app';
-import deleteIcon from '@iconify/icons-ic/baseline-delete';
-import settings from '@iconify/icons-ic/baseline-settings';
-import info from '@iconify/icons-ic/baseline-info';
-import arrowDown from '@iconify/icons-ic/baseline-keyboard-arrow-down';
-import arrowRight from '@iconify/icons-ic/baseline-keyboard-arrow-right';
-import arrowLeft from '@iconify/icons-ic/baseline-keyboard-arrow-left';
-import edit from '@iconify/icons-ic/baseline-edit';
-import checkCircle from '@iconify/icons-ic/round-check-circle';
-import cancel from '@iconify/icons-ic/baseline-cancel';
-import userSearch from '@iconify/icons-ic/baseline-person-search';
-import admin from '@iconify/icons-ic/baseline-admin-panel-settings';
-import noAdmin from '@iconify/icons-ic/baseline-remove-moderator'
-import refresh from '@iconify/icons-ic/baseline-refresh';
-import close from '@iconify/icons-ic/round-close';
-import wifiFind from '@iconify/icons-ic/baseline-wifi-find';
-import noteEdit from '@iconify/icons-ph/note-pencil';
-
-export const ICONS = {
- [buttonNames[1]]: exitToApp,
- [buttonNames[2]]: deleteIcon,
- [buttonNames[3]]: settings,
- [buttonNames[4]]: info,
- [buttonNames[5]]: arrowDown,
- [buttonNames[6]]: arrowRight,
- [buttonNames[7]]: edit,
- [buttonNames[8]]: checkCircle,
- [buttonNames[9]]: cancel,
- [buttonNames[10]]: admin,
- [buttonNames[11]]: refresh,
- [buttonNames[12]]: close,
- [buttonNames[13]]: noAdmin,
- [buttonNames[14]]: userSearch,
- [buttonNames[15]]: wifiFind,
- [buttonNames[16]]: noteEdit,
- [buttonNames[17]]: arrowLeft,
-} as const;
-
-type IconName = keyof typeof ICONS;
-
-interface IconsProps {
- name: IconName,
- width?: string
- height?: string
- setColor?: string
- onClick?: (event?: React.MouseEvent) => void;
-}
-
-export const IconComponent = ({ name, width = "24", height = "24", setColor, onClick}: IconsProps) => {
- const theme = useTheme();
- return (
-
- );
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/buttons/names.ts b/FRONT/DEV/src/const/buttons/names.ts
deleted file mode 100644
index 052321e..0000000
--- a/FRONT/DEV/src/const/buttons/names.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { names } from "../types/types"
-
-export const buttonNames: names ={
- 1: 'powerOff',
- 2: 'delete',
- 3: 'settings',
- 4: 'information',
- 5: 'arrow-down',
- 6: 'arrow-right',
- 7: 'edit',
- 8: 'accept',
- 9: 'cancel',
- 10: 'admin',
- 11: 'reset',
- 12: 'close',
- 13: 'noAdmin',
- 14: 'userSearch',
- 15: 'wifiFind',
- 16: 'noteEdit',
- 17: 'arrowLeft',
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/menus/othersMenus/data.ts b/FRONT/DEV/src/const/menus/othersMenus/data.ts
deleted file mode 100644
index c5f2713..0000000
--- a/FRONT/DEV/src/const/menus/othersMenus/data.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Menu } from "../../types/types";
-import { menusNames } from "./names";
-
-export const menusData: Menu[] = [
- {
- id: menusNames[1],
- isOpen: false
- }
-]
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/menus/othersMenus/names.ts b/FRONT/DEV/src/const/menus/othersMenus/names.ts
deleted file mode 100644
index 1f06e93..0000000
--- a/FRONT/DEV/src/const/menus/othersMenus/names.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { names } from "../../types/types"
-
-export const menusNames: names ={
- 1: 'collapse-devices',
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/menus/sideBar/components.tsx b/FRONT/DEV/src/const/menus/sideBar/components.tsx
deleted file mode 100644
index e2bd113..0000000
--- a/FRONT/DEV/src/const/menus/sideBar/components.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import React from "react"
-import { toolBarNames } from "./names"
-import { DevicesBar } from "../../../components/workSpace/sideBar/toolSpace/devicesBar"
-
-export const COMPONENTS = {
- [toolBarNames[1]]:(
-
- ),
-} as const
-
-type ComponentName = keyof typeof COMPONENTS
-
-interface SpaceProps {
- name: ComponentName,
-}
-
-export const Space = ({name}: SpaceProps) => {
- const Component = COMPONENTS[name]
- return React.cloneElement(Component);
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/menus/sideBar/data.ts b/FRONT/DEV/src/const/menus/sideBar/data.ts
deleted file mode 100644
index c2bd739..0000000
--- a/FRONT/DEV/src/const/menus/sideBar/data.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { ToolBar } from "../../types/types";
-import { toolBarNames } from "./names";
-
-export const toolBarData: ToolBar = {
- current: toolBarNames[1],
- toolSpace: [
- {
- id: toolBarNames[1],
- isOpen: true,
- isActive: true
- },
- ]
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/menus/sideBar/icons.tsx b/FRONT/DEV/src/const/menus/sideBar/icons.tsx
deleted file mode 100644
index b5560ce..0000000
--- a/FRONT/DEV/src/const/menus/sideBar/icons.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import React from "react"
-import { toolBarNames } from "./names"
-import { useTheme } from "styled-components"
-import { Icon } from '@iconify/react';
-
-import desktop from '@iconify/icons-ic/baseline-menu';
-
-export const ICONS = {
- [toolBarNames[1]]: desktop,
-} as const
-
-
-type IconName = keyof typeof ICONS
-
-interface IconsProps {
- name: IconName,
- width?: string
- height?: string
- setColor?: string
-}
-
-export const IconComponent = ({ name, width = "24", height = "24", setColor}: IconsProps) => {
- const theme = useTheme();
- return (
-
- );
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/menus/sideBar/names.ts b/FRONT/DEV/src/const/menus/sideBar/names.ts
deleted file mode 100644
index 32d3d9d..0000000
--- a/FRONT/DEV/src/const/menus/sideBar/names.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { names } from "../../types/types"
-
-export const toolBarNames: names ={
- 1: 'toolSpace-devices',
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/modals/names.ts b/FRONT/DEV/src/const/modals/names.ts
deleted file mode 100644
index face023..0000000
--- a/FRONT/DEV/src/const/modals/names.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { names } from "../types/types"
-
-export const modalNames: names ={
- 1: 'loader',
- 2: 'ipConfirm',
- 3: 'connectionError',
- 4: 'addDevice'
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/theme/globalStyles.ts b/FRONT/DEV/src/const/theme/globalStyles.ts
deleted file mode 100644
index ca6059d..0000000
--- a/FRONT/DEV/src/const/theme/globalStyles.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { createGlobalStyle } from 'styled-components';
-
-export const GlobalStyle = createGlobalStyle`
- body {
- background-color: ${(props) => props.theme.backgroundColor};
- color: ${(props) => props.theme.textColor};
- box-sizing: border-box;
- font-family: sans-serif;
- box-sizing: border-box;
- min-height: 100%;
- height: 100%;
- margin: 0;
-
- h1, h2, h3, h4, P{
- margin: 0;
- display: unset;
- }
- }
-
- #root{
- width: 100%;
- height: 100%;
- margin: 0;
- padding: 0;
- }
-
- .react-flow__controls{
- border-radius: 12px;
- background-color: ${(props) => props.theme.secondary};
- button{
- background-color: ${(props) => props.theme.secondary};
- border: none;
- border-radius: 12px;
-
- &:hover{
- background-color: ${(props) => props.theme.primary};
- }
- }
-
- .react-flow__controls-button{
- border-radius: 12px;
- }
- }
-
- .react-flow__handle{
- background-color: ${(props) => props.theme.nodeColor};
- }
-
- .unselectable {
- user-select: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- }
-`;
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/theme/icons.tsx b/FRONT/DEV/src/const/theme/icons.tsx
deleted file mode 100644
index 04b689e..0000000
--- a/FRONT/DEV/src/const/theme/icons.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import React from 'react';
-import { Icon } from '@iconify/react';
-import { useTheme } from 'styled-components';
-import { themeNames } from './names';
-
-import light from '@iconify/icons-ic/baseline-brightness-7';
-import dark from '@iconify/icons-ic/baseline-brightness-5';
-import system from '@iconify/icons-ic/baseline-brightness-6';
-
-export const ICONS = {
- [themeNames[1]]: light,
- [themeNames[2]]: dark,
- [themeNames[3]]: system,
-
-} as const;
-
-type IconName = keyof typeof ICONS;
-
-interface IconsProps {
- name: IconName,
- width?: string
- height?: string
- setColor?: string
-}
-
-export const IconComponent = ({ name, width = "24", height = "24", setColor}: IconsProps) => {
- const theme = useTheme();
- return (
-
- );
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/theme/names.ts b/FRONT/DEV/src/const/theme/names.ts
deleted file mode 100644
index ec3fc5f..0000000
--- a/FRONT/DEV/src/const/theme/names.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { names } from "../types/types"
-
-export const themeNames: names ={
- 1: 'light',
- 2: 'dark',
- 3: 'system'
-}
-
-const themeType = themeNames[1] || themeNames[2] || themeNames[3]
-export type ThemName = typeof themeType
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/theme/theme.ts b/FRONT/DEV/src/const/theme/theme.ts
deleted file mode 100644
index dbf1cb3..0000000
--- a/FRONT/DEV/src/const/theme/theme.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-const baseTheme = {
- accent: '#007ACC',
- successColor: "#4CAf50",
- errorColor: "#F44336",
- accentHover: '#4A90E2',
-}
-
-export const light = {
- ...baseTheme,
- primary: '#F3F3F3',
- secondary: '#EDEDED',
- background: '#E8E8E8',
- textColor: '#000000',
- borderColor: '#404040',
- scannerColor: '#007ACC',
- offlineColor: '#ababab',
- hoverBtn: '#d6d6d6',
-};
-
-export const dark = {
- ...baseTheme,
- primary: '#1E1E1E',
- secondary: '#252525',
- background: '#3A3A3A',
- textColor: '#FFFFFF',
- borderColor: '#b6b6b6',
- scannerColor: '#00E5FF',
- offlineColor: '#656565',
- hoverBtn: '#4a4a4a',
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/types/types.ts b/FRONT/DEV/src/const/types/types.ts
deleted file mode 100644
index 473ffc2..0000000
--- a/FRONT/DEV/src/const/types/types.ts
+++ /dev/null
@@ -1,213 +0,0 @@
-export interface IEdge {
- source: string
- sourceHandle: string
- target: string
- targetHandle: string
- id: string
- type: string
- style?: any
-}
-
-export interface ICanvas {
- nodes: any[],
- edges: IEdge[]
-}
-
-export interface IpRoutes {
- destination: string
- prefix: number,
- next_hop: string
- metric: number
-}
-
-export interface ResponseIpConf {
- address: string,
- method: string,
- gateway: string,
- dns: string[]
- routes: IpRoutes[]
-}
-
-export interface ResponseNetIp {
- configurations: ResponseIpConf[]
-}
-
-export interface ResponseNetwork {
- name: string,
- type: string,
- mac_address: string,
- device_state: string,
- active_connection: string,
- device_mtu: string,
- strength: string,
- ipv4: ResponseNetIp
- ipv6: ResponseNetIp
-}
-
-export interface ResponseData {
- interfaces: ResponseNetwork[],
- container_x: number,
- container_y: number,
- id: number | string
-}
-
-export interface OutputIpData {
- ipType: string,
- ipAdress: string,
- ipGate: string,
- ipDns: string[]
- ipRoutese: IpRoutes[]
- ipVersion: string
-}
-
-export interface IPosition {
- x: number;
- y: number;
-}
-
-export interface IStyle {
- width: number,
- height: number,
- borderType?: string;
- borderColor?: string;
- backgroundColor?: string
-}
-
-export interface NetworkData {
- device: string
- type: string
- mac: string
- mtu: string,
- state: string,
- connection: string
- id?: string,
- strength?: string
-}
-
-export interface IpData {
- ipType: string,
- ipAdress: string,
- ipGate: string,
- ipDns: string[]
- ipRoutese: IpRoutes[]
- ipVersion: string
-}
-
-
-export interface NetworkNode {
- id: string;
- position: IPosition;
- data: {
- networkData: NetworkData,
- style: IStyle,
- height: any,
- visible: boolean
- }
- type: string;
- parentId: string,
- extent: string,
-}
-
-export interface PortNode {
- id: string
- position: IPosition
- data: {
- id: string
- label: string
- port?: string
- style: IStyle
- }
- type: string,
- parentId?: string,
- extent?: string,
-}
-
-export interface IpNode {
- id: string;
- position: IPosition;
- parentId: string
- extent: string
- draggable: boolean,
- data: {
- ipData: IpData;
- interfaceData:{
- device: string,
- connection: string
- }
- route: boolean
- style: IStyle
- };
- hidden?: boolean
- type: string;
-}
-
-export interface NodeGroup {
- id: string
- position: IPosition
- parentId?: string
- extent?: string
- draggable?: boolean,
- data: {
- id?: string
- label?: string
- height?: any
- style: IStyle
- },
- hidden?: boolean
- type: string
-}
-
-
-export interface OutputIpArray {
- route: boolean,
- ipData: OutputIpData[]
-}
-
-export interface MainData {
- networkData: NetworkData
- ipArrays: OutputIpArray[]
-}
-
-export interface Interfaces {
- mainData: MainData[]
- container_x: number,
- container_y: number
-}
-
-export interface IData{
- activation: ResponseData
- deactivation: ResponseData
-}
-
-export interface changeIp {
- currentIp: string
- newIp: string
- currentGate: string
- newGate: string
- currentDns: string[]
- newDns: string[]
- device: string
- connection: string
- version: string
- prefix: number
-}
-
-export interface WorkSpace {
- id: string,
- isActive: boolean
-}
-
-export interface Menu {
- id: string,
- isOpen: boolean,
- isActive?: boolean
-}
-
-export interface ToolBar{
- toolSpace: Menu[]
- current: string
-}
-
-export type names = Record;
-
-export type NetworkInterface = NetworkNode | PortNode | NodeGroup | IpNode
\ No newline at end of file
diff --git a/FRONT/DEV/src/const/workspace/names.ts b/FRONT/DEV/src/const/workspace/names.ts
deleted file mode 100644
index 4b67093..0000000
--- a/FRONT/DEV/src/const/workspace/names.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { names } from "../types/types"
-
-export const workSpaceNames: names ={
- 1: 'helloWindow',
- 2: 'aboutFromWork',
- 3: 'networkInterfaces',
- 4: 'aboutFromHello',
- 5: 'userScanner',
- 6: 'wifiScanner',
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/electron.d.ts b/FRONT/DEV/src/electron.d.ts
deleted file mode 100644
index 88da5b9..0000000
--- a/FRONT/DEV/src/electron.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-interface Window {
- electron: {
- quitApp: () => void;
- };
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/hooks/useMenu.ts b/FRONT/DEV/src/hooks/useMenu.ts
deleted file mode 100644
index 703b7b0..0000000
--- a/FRONT/DEV/src/hooks/useMenu.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { useMenuStore } from "../store"
-
-export const useMenu = (menuId: string)=>{
- const { menus, toggleMenu } = useMenuStore();
- const menu = menus.find((m)=>m.id === menuId)
- const isOpen = menu ? menu.isOpen : false;
-
- const collapseMenu = ()=>{
- if(menu){
- toggleMenu(menuId)
- }
- }
-
- return { isOpen, collapseMenu };
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/hooks/useToolBar.ts b/FRONT/DEV/src/hooks/useToolBar.ts
deleted file mode 100644
index debf65c..0000000
--- a/FRONT/DEV/src/hooks/useToolBar.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { useToolBarStore } from "../store";
-
-export const useToolBar = (menuId: string) => {
- const { toolBar, toggleMenu } = useToolBarStore();
-
- const menu = toolBar.toolSpace.find((m) => m.id === menuId);
-
- const isOpen = menu ? menu.isOpen : false;
- const isActive = menu ? menu.isActive : false;
-
- const collapseMenu = () => {
- toggleMenu(menuId);
- };
-
- return { isOpen, isActive, collapseMenu };
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/router.tsx b/FRONT/DEV/src/router.tsx
deleted file mode 100644
index 7f73965..0000000
--- a/FRONT/DEV/src/router.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import { Routes, Route, Outlet } from 'react-router-dom';
-import WorkSpace from './components/workSpace/workSpace';
-import { useIpStore } from './store';
-import { useEffect, useState } from 'react';
-import { NetworkService } from './api/request';
-import { CreateUser } from './components/register';
-import RouterLoader from './components/UI/routerLoader';
-
-export default function Router() {
-
- const { ipAddress } = useIpStore();
- const [configExists, setConfigExists] = useState(null);
-
- useEffect(() => {
- const fetchServerConf = async () => {
- try {
- let response = await NetworkService.checkServerConf(ipAddress);
- if(response.status === 200) {
- setConfigExists(response.data.has_users);
- }
- } catch (error) {
- console.error('Error checking server config:', error);
- setConfigExists(false);
- }
- };
-
- fetchServerConf();
- }, [ipAddress]);
-
- if (configExists === null) {
- return
- }
-
- if (configExists === false) {
- return ;
- }
-
- return (
-
- } />
-
- );
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/adminStore.ts b/FRONT/DEV/src/store/adminStore.ts
deleted file mode 100644
index a853372..0000000
--- a/FRONT/DEV/src/store/adminStore.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { create } from 'zustand'
-
-interface AdminState {
- isAdmin: boolean;
- setAdmin: (isAdmin: boolean) => void;
-}
-
-export const useAdminStore = create()((set) => ({
- isAdmin: false,
- setAdmin: (isAdmin: boolean) => set({ isAdmin }),
-}))
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/devicesStore.ts b/FRONT/DEV/src/store/devicesStore.ts
deleted file mode 100644
index 3e7d143..0000000
--- a/FRONT/DEV/src/store/devicesStore.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { create } from 'zustand'
-import { persist, createJSONStorage } from 'zustand/middleware'
-
-export interface Device {
- number: number
- address: string
-}
-
-interface DevicesState {
- devices: Device[]
- addDevice: (address: string) => void
- deleteDevice: (number: number) => void
-}
-
-export const useDevicesStore = create()(
- persist(
- (set) => ({
- devices: [],
- addDevice: (address) =>
- set((state) => {
- const newDevice = {
- number: state.devices.length + 1,
- address
- }
- return { devices: [...state.devices, newDevice] }
- }),
- deleteDevice: (number) =>
- set((state) => ({
- devices: state.devices
- .filter(device => device.number !== number)
- .map((device, index) => ({ ...device, number: index + 1 }))
- }))
- }),
- {
- name: 'connectedDevices-storage',
- storage: createJSONStorage(() => localStorage)
- }
- )
-)
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/flowStore.ts b/FRONT/DEV/src/store/flowStore.ts
deleted file mode 100644
index 5e66ece..0000000
--- a/FRONT/DEV/src/store/flowStore.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { create } from 'zustand';
-
-interface NodesStore {
- nodes: any[];
- edges: any[];
- setNodes: (nodes: any[]) => void;
- setEdges: (edges: any[]) => void;
- updateNode: (nodeId: string, newData: any) => void;
-}
-
-export const useNodesStore = create((set) => ({
- nodes: [],
- edges: [],
- setNodes: (nodes) => set({ nodes }),
- setEdges: (edges) => set({ edges }),
- updateNode: (nodeId, newData) =>
- set((state) => ({
- nodes: state.nodes.map((node) =>
- node.id === nodeId ? { ...node, data: { ...node.data, ...newData } } : node
- ),
- })),
-}));
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/groupStore.ts b/FRONT/DEV/src/store/groupStore.ts
deleted file mode 100644
index e2859b7..0000000
--- a/FRONT/DEV/src/store/groupStore.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import {create} from 'zustand';
-
-interface GroupState {
- groups: { id: string; click: boolean }[];
- setGroups: (groups: { id: string; click: boolean }[]) => void;
-}
-
-const useGroupStore = create((set) => ({
- groups: [],
- setGroups: (groups) => set({ groups }),
-}));
-
-export { useGroupStore };
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/index.ts b/FRONT/DEV/src/store/index.ts
deleted file mode 100644
index f341a28..0000000
--- a/FRONT/DEV/src/store/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-export {useModalContext, ModalProvider} from './modalContext'
-export {useTheme, ThemeProvider} from './themeContext'
-export {usePannableStore} from './pannableStore'
-export {useGroupStore} from './groupStore'
-export {useIpStore} from './ipStore'
-export {useToolBarStore} from './toolBarStore'
-export {useDevicesStore} from './devicesStore'
-export {useMenuStore} from './menusStore'
-export {useWorkSpaceStore} from './workSpaceStore'
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/ipStore.ts b/FRONT/DEV/src/store/ipStore.ts
deleted file mode 100644
index fb0abf3..0000000
--- a/FRONT/DEV/src/store/ipStore.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import {create} from 'zustand'
-import { persist, createJSONStorage } from 'zustand/middleware'
-
-interface IpAddressState {
- ipAddress: string;
- setIpAddress: (newIp: string) => void;
-}
-
-export const useIpStore = create()(
- persist(
- (set)=>({
- ipAddress: '192:168.1.147',
- setIpAddress: (newIp: string) => set({ ipAddress: newIp }),
- }),
- {
- name: 'currentIp-storage',
- storage: createJSONStorage(()=>localStorage)
- }
- )
-)
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/menusStore.ts b/FRONT/DEV/src/store/menusStore.ts
deleted file mode 100644
index a7cc1ee..0000000
--- a/FRONT/DEV/src/store/menusStore.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-
-import { create } from 'zustand';
-import { persist, createJSONStorage } from 'zustand/middleware';
-import { Menu } from '../const/types/types';
-import { menusData } from '../const/menus/othersMenus/data';
-
-interface MenuState {
- menus: Menu[];
- toggleMenu: (menuId: string) => void;
-}
-
-export const useMenuStore = create()(
- persist(
- (set) => ({
- menus: menusData,
- toggleMenu: (menuId) =>
- set((state) => ({
- menus: state.menus.map((menu) =>
- menu.id === menuId ? { ...menu, isOpen: !menu.isOpen } : menu
- ),
- })),
- }),
- {
- name: 'menus-storage',
- storage: createJSONStorage(() => localStorage)
- }
- )
-);
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/modalContext.tsx b/FRONT/DEV/src/store/modalContext.tsx
deleted file mode 100644
index af27986..0000000
--- a/FRONT/DEV/src/store/modalContext.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import { createContext, useContext, useState, ReactNode, useCallback } from 'react';
-import { useEffect } from 'react';
-
-interface ModalContextType {
- isOpen: boolean;
- modalType: string;
- modalData: any;
- openModal: (modalType: string, modalData?: any) => void;
- closeModal: () => void;
- closeLoader: () => void;
-}
-
-const ModalContext = createContext({
- isOpen: false,
- modalType: '',
- modalData: null,
- openModal: () => {},
- closeModal: () => {},
- closeLoader: () => {},
-});
-
-export const useModalContext = () => useContext(ModalContext);
-
-export function ModalProvider({ children }: { children: ReactNode }) {
- const [isOpen, setOpen] = useState(false);
- const [modalType, setType] = useState('');
- const [modalData, setData] = useState(null);
-
- const openModal = (type: string, data?: any) => {
- setOpen(true);
- setType(type);
- setData(data);
- };
-
- const closeModal = useCallback(() => {
- setOpen(false);
- setType('');
- setData(null);
-
- window.location.reload()
- }, []);
-
- const closeLoader = useCallback(() => {
- setOpen(false);
- setType('');
- setData(null);
- }, []);
-
- useEffect(() => {
- if (isOpen) {
- document.body.style.overflow = 'hidden';
- }
- else {
- document.body.style.overflow = 'auto';
- }
- }, [isOpen])
-
- return (
-
- {children}
-
- );
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/pannableStore.ts b/FRONT/DEV/src/store/pannableStore.ts
deleted file mode 100644
index 75b9c65..0000000
--- a/FRONT/DEV/src/store/pannableStore.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import {create} from 'zustand';
-
-interface FlowState {
- isPanDisabled: boolean;
- toggleEditingMode: () => void;
-}
-
-export const usePannableStore = create((set) => ({
- isPanDisabled: false,
- toggleEditingMode: () => set((state) => ({ isPanDisabled: !state.isPanDisabled })),
-}));
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/posStore.ts b/FRONT/DEV/src/store/posStore.ts
deleted file mode 100644
index 979545c..0000000
--- a/FRONT/DEV/src/store/posStore.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { create } from 'zustand'
-
-interface PosState {
- isNullPos: boolean;
- setNullPos: (isNullPos: boolean) => void;
-}
-
-export const usePosStore = create()((set) => ({
- isNullPos: false,
- setNullPos: (isNullPos: boolean) => set({ isNullPos }),
-}))
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/themeContext.tsx b/FRONT/DEV/src/store/themeContext.tsx
deleted file mode 100644
index 7e0623c..0000000
--- a/FRONT/DEV/src/store/themeContext.tsx
+++ /dev/null
@@ -1,78 +0,0 @@
-import React, { createContext, useContext, useState, useEffect } from 'react';
-import { ThemeProvider as StyledTheme } from 'styled-components';
-import { light, dark} from '../const/theme/theme';
-import { GlobalStyle } from '../const/theme/globalStyles';
-import { themeNames, ThemName } from '../const/theme/names';
-
-type ThemeContextType = {
- theme: ThemName;
- toggleTheme: () => void;
-};
-
-const ThemeContext = createContext(undefined);
-
-export const useTheme = () => {
- const context = useContext(ThemeContext);
- if (!context) {
- throw new Error('useTheme must be used within a ThemeProvider');
- }
- return context;
-};
-
-export const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
- const getSystemTheme = () =>
- window.matchMedia('(prefers-color-scheme: dark)').matches ? themeNames[2] : themeNames[1];
-
- const getInitialTheme = () => {
- let savedTheme = localStorage.getItem('theme') as ThemName;
- if (!savedTheme) {
- savedTheme = themeNames[3]; // Устанавливаем значение по умолчанию
- localStorage.setItem('theme', savedTheme); // Сохраняем без JSON.stringify
- }
- return savedTheme;
- };
-
- const [theme, setTheme] = useState(getInitialTheme);
-
- const toggleTheme = () => {
- setTheme((prev) => {
- let newTheme: ThemName;
- if (prev === themeNames[3]) {
- newTheme = themeNames[1];
- } else if (prev === themeNames[1]) {
- newTheme = themeNames[2];
- } else {
- newTheme = themeNames[3];
- }
- localStorage.setItem('theme', newTheme);
-
- return newTheme;
- });
- };
-
- useEffect(() => {
- const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
- let currentTheme = localStorage.getItem('theme')
- const handleChange = () => {
- if (currentTheme === themeNames[3]) {
- const newTheme = getSystemTheme();
-
- setTheme(newTheme);
- localStorage.setItem('theme', themeNames[3]);
- }
- };
- mediaQuery.addEventListener('change', handleChange);
- return () => mediaQuery.removeEventListener('change', handleChange);
- }, [theme]);
-
- const currentTheme = theme === themeNames[3] ? getSystemTheme() : theme;
-
- return (
-
-
-
- {children}
-
-
- );
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/toolBarStore.ts b/FRONT/DEV/src/store/toolBarStore.ts
deleted file mode 100644
index 761defc..0000000
--- a/FRONT/DEV/src/store/toolBarStore.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import { create } from 'zustand';
-import { persist, createJSONStorage } from 'zustand/middleware';
-import { toolBarData } from '../const/menus/sideBar/data';
-import { ToolBar } from '../const/types/types';
-
-interface MenuState {
- toolBar: ToolBar;
- toggleMenu: (menuId: string) => void;
- initialize: () => void;
-}
-
-export const useToolBarStore = create()(
- persist(
- (set, get) => ({
- toolBar: toolBarData,
- toggleMenu: (menuId) => set((state) => {
- const updatedToolBar = state.toolBar.toolSpace.map((menu) => {
- if (menu.id === menuId) {
- return {
- ...menu,
- isOpen: !menu.isOpen,
- isActive: true,
- };
- } else {
- return {
- ...menu,
- isActive: false,
- isOpen: false
- };
- }
- });
-
- return {
- toolBar: {
- ...state.toolBar,
- current: menuId,
- toolSpace: updatedToolBar,
- },
- };
- }),
- initialize: () => {
- set({ toolBar: toolBarData });
- },
- }),
- {
- name: 'toolBar-storage',
- storage: createJSONStorage(() => localStorage),
- }
- )
-);
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/useDeviceStore.ts b/FRONT/DEV/src/store/useDeviceStore.ts
deleted file mode 100644
index 6b2c815..0000000
--- a/FRONT/DEV/src/store/useDeviceStore.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import { create } from 'zustand';
-
-export interface DeviceUser {
- ip: string;
- mac: string;
- hostname: string;
- vendor: string;
- open_ports: string[];
- status: string;
- last_seen: string;
- note: string;
-}
-
-export interface WifiNetworkScanner {
- ssid: string;
- bssid: string;
- channel: number;
- signal: number;
- encryption: string;
- frequency: string;
- vendor: string;
- hidden: boolean;
- note: string;
-}
-
-interface NetworkStore {
- devices: DeviceUser[];
- setDevices: (devices: DeviceUser[]) => void;
- addDevice: (device: DeviceUser) => void;
- wifiNetworks: WifiNetworkScanner[];
- setWifiNetworks: (networks: WifiNetworkScanner[]) => void;
- addWifiNetwork: (network: WifiNetworkScanner) => void;
-
- clearAll: () => void;
-}
-
-const useNetworkStore = create((set) => ({
- devices: [],
- setDevices: (devices) => set({ devices }),
- addDevice: (device) =>
- set((state) => ({ devices: [...state.devices, device] })),
-
- wifiNetworks: [],
- setWifiNetworks: (networks) => set({ wifiNetworks: networks }),
- addWifiNetwork: (network) =>
- set((state) => ({ wifiNetworks: [...state.wifiNetworks, network] })),
-
- clearAll: () => set({ devices: [], wifiNetworks: [] })
-}));
-
-export default useNetworkStore;
\ No newline at end of file
diff --git a/FRONT/DEV/src/store/workSpaceStore.ts b/FRONT/DEV/src/store/workSpaceStore.ts
deleted file mode 100644
index 2f14215..0000000
--- a/FRONT/DEV/src/store/workSpaceStore.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { create } from 'zustand'
-import { persist, createJSONStorage } from 'zustand/middleware'
-import { workSpaceNames } from '../const/workspace/names';
-
-interface WorkSpaceState {
- workModule: string;
- setWorkModule: (newModule: string) => void;
- initialize: () => void;
-}
-
-export const useWorkSpaceStore = create()(
- persist(
- (set) => ({
- workModule: workSpaceNames[1],
- setWorkModule: (newModule: string) => set({ workModule: newModule }),
- initialize: () => {
- set({ workModule: workSpaceNames[1]});
- },
- }),
-
- {
- name: 'workSpace-storage',
- storage: createJSONStorage(() => localStorage)
- }
- )
-)
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/checkAdmin.ts b/FRONT/DEV/src/utils/checkAdmin.ts
deleted file mode 100644
index 9bcadaf..0000000
--- a/FRONT/DEV/src/utils/checkAdmin.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { useIpStore } from "../store";
-import { useAdminStore } from "../store/adminStore";
-import { NetworkService } from "../api/request";
-
-export const useCheckAdmin = () => {
- const { ipAddress } = useIpStore()
- const { setAdmin } = useAdminStore()
-
- return async () => {
- const response = await NetworkService.whoami(ipAddress);
- console.log(response.data);
- if(response.status == 401){
- setAdmin(false)
- }
- else{
- setAdmin(response.data.user.is_admin);
- }
- }
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/autosavePosition.ts b/FRONT/DEV/src/utils/nodeController/autosavePosition.ts
deleted file mode 100644
index 7b9e21e..0000000
--- a/FRONT/DEV/src/utils/nodeController/autosavePosition.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-export const processNodeChanges = (changes: any, mainGroups: any) => {
- let newData;
-
- changes.forEach((change: any) => {
- if (change.type === 'position' && change.position) {
- const nodeId = change.id;
-
- if (nodeId === 'g0') {
- newData = {
- container_id: mainGroups[0].id,
- container_x: change.position.x,
- container_y: change.position.y,
- isOpen: true
- };
- } else if (nodeId === 'g1') {
- newData = {
- container_id: mainGroups[1].id,
- container_x: change.position.x,
- container_y: change.position.y,
- isOpen: true
- };
- }
- }
- });
-
- return newData;
-};
-
-const getLastChanges = (changes: any[]) => {
- const latestChanges: { [key: number]: any } = {};
-
- changes.forEach((change) => {
- latestChanges[change.container_id] = change;
- });
-
- return Object.values(latestChanges);
-};
-
-export const autosavePosition = (changeArray: any[], socket: any,) => {
- if (changeArray.length > 0) {
- const lastChanges = getLastChanges(changeArray);
-
- lastChanges.forEach((change) => {
- if (socket && socket.readyState === WebSocket.OPEN && change) {
- socket.send(JSON.stringify(change))
- console.log('JSON отправлен:', JSON.stringify(change));
- console.log('Отправленные данные:', change);
- } else {
- console.log('WebSocket не открыт или нет данных для отправки');
- }
- });
- }
-}
-
-export const resetPosition = (socket: any, setNullPos: (value: boolean) => void, nodes: any[], setNodes: (nodes: any[]) => void) => {
- const nullPositions = [
- {
- container_id: 1,
- container_x: 0,
- container_y: 0,
- isOpen: true
- },
- {
- container_id: 2,
- container_x: 500,
- container_y: 0,
- isOpen: true
- },
- ]
-
- nullPositions.forEach(pos => {
- if (socket && socket.readyState === WebSocket.OPEN) {
- socket.send(JSON.stringify(pos))
- console.log('JSON отправлен:', JSON.stringify(pos))
- console.log('Отправленные данные:', pos)
- } else {
- console.log('WebSocket не открыт или нет данных для отправки')
- }
- })
-
- const updatedNodes = nodes.map(node => {
-
- if(node.id=="g0"){
- return {
- ...node,
- position: { x: 0, y: 0 },
- positionAbsolute: { x: 0, y: 0 }
- };
- }
-
- if(node.id=="g1"){
- return {
- ...node,
- position: { x: 500, y: 0 },
- positionAbsolute: { x: 500, y: 0 }
- };
- }
-
- return node;
- });
-
- setNodes(updatedNodes);
- setNullPos(false);
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/collapseGroup.ts b/FRONT/DEV/src/utils/nodeController/collapseGroup.ts
deleted file mode 100644
index a21cc9f..0000000
--- a/FRONT/DEV/src/utils/nodeController/collapseGroup.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-export const collapseGroup = (sortedGroup: any, nodes: any[]) => {
- const nodesMap = new Map(nodes.map(node => [node.id, structuredClone(node)]));
-
- Object.entries(sortedGroup).forEach(([groupId, groupData]: any) => {
- const groupNode = nodesMap.get(groupId);
- if (!groupNode) return;
-
- const clicked = groupData.clicked;
- const padding = 20;
-
- const higherOrderNodes = groupData.higherOrder.map((childId: string) => {
- const child = nodesMap.get(childId);
- if (!child) return null;
-
- const newHeight = clicked ? 60 : child.data.height;
- const updatedChild = {
- ...child,
- data: {
- ...child.data,
- visible: !clicked,
- style: { ...child.data.style, height: newHeight }
- },
- measured: {
- ...child.measured,
- height: newHeight + 4,
- width: child.data.style.width + 4
- }
- };
- nodesMap.set(childId, updatedChild);
- return updatedChild;
- }).filter(Boolean);
-
- groupData.lowerOrder.forEach((childId: string) => {
- const child = nodesMap.get(childId);
- if (child) child.hidden = clicked;
- });
-
- let currentY = padding;
- higherOrderNodes.forEach((child: any) => {
- nodesMap.set(child.id, {
- ...child,
- position: { ...child.position, y: currentY }
- });
- currentY += child.measured.height + padding;
- });
-
- const newGroupHeight = clicked
- ? currentY
- : groupNode.data.height;
-
- nodesMap.set(groupId, {
- ...groupNode,
- data: {
- ...groupNode.data,
- style: { ...groupNode.data.style, height: newGroupHeight }
- },
- measured: {
- ...groupNode.measured,
- height: newGroupHeight + 4
- }
- });
- });
-
- return Array.from(nodesMap.values());
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/groupSort.ts b/FRONT/DEV/src/utils/nodeController/groupSort.ts
deleted file mode 100644
index 3d9064f..0000000
--- a/FRONT/DEV/src/utils/nodeController/groupSort.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-export const groupSort = (groups: any, nodes: any)=>{
-
- const result: {
- [key: string]: {
- higherOrder: string[];
- lowerOrder: string[];
- clicked: boolean
- };
- } = {};
-
- groups.forEach((group: any) => {
- const groupId = group.id;
- result[groupId] = {
- higherOrder: [],
- lowerOrder: [],
- clicked: group.click
- };
-
- const children = nodes.filter((node: any) => node.id.startsWith(`${groupId}_`));
-
- children.forEach((child: any) => {
- const childId = child.id;
-
- const parts = childId.split('_');
- if (parts.length === 2) {
- const higherOrderValue = childId
- result[groupId].higherOrder.push(higherOrderValue)
- } else {
- const lowerOrderValue = childId
- result[groupId].lowerOrder.push(lowerOrderValue)
- }
- });
- });
-
-
- return result
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/index.ts b/FRONT/DEV/src/utils/nodeController/index.ts
deleted file mode 100644
index 26cebec..0000000
--- a/FRONT/DEV/src/utils/nodeController/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export { autosavePosition, processNodeChanges , resetPosition} from './autosavePosition';
-export { initNetworkIntData } from './initNetIntData';
-export { collapseGroup } from './collapseGroup';
-export {groupSort} from './groupSort'
-export { updateWifiData } from './updateWifiData';
-export {useInitCanvas} from './nodeCreator/inits/initor'
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/initNetIntData.ts b/FRONT/DEV/src/utils/nodeController/initNetIntData.ts
deleted file mode 100644
index c54f060..0000000
--- a/FRONT/DEV/src/utils/nodeController/initNetIntData.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import { ResponseData, Interfaces, MainData, IEdge, NetworkData } from '../../const/types/types'
-import { ipsInitor } from './nodeCreator/inits/initIpArray';
-
-export const initNetworkIntData = (mainGroups: ResponseData[]): { interfaces: Interfaces[], edgeData: IEdge[] } => {
- const edgeData: IEdge[] = [];
- const interfaces: Interfaces[] = [];
-
- if (mainGroups) {
- mainGroups.map((el, indx) => {
- let nodeData: MainData[] = [];
- el.interfaces.map((net, index) => {
- let nodeID = `g${indx}_nw${index}`;
- let portID = `p-nw${index}`;
- let targetId = `${portID}_target-right`;
- let sourceId = `${nodeID}-source-left`;
-
- if (indx === 0) {
- const edge: IEdge = {
- id: `${nodeID}-${portID}`,
- source: nodeID,
- target: portID,
- sourceHandle: sourceId,
- targetHandle: targetId,
- type: "default",
- };
- edgeData.push(edge);
- }
-
- const network: NetworkData = {
- device: net.name,
- type: net.type,
- mac: net.mac_address,
- connection: net.active_connection,
- mtu: net.device_mtu,
- state: net.device_state,
- strength: net.strength
- };
-
- const ipArray = ipsInitor(net);
-
- let interfaceData: MainData = {
- networkData: network,
- ipArrays: ipArray
- };
-
- nodeData.push(interfaceData);
- });
-
- let j: Interfaces = {
- container_x: el.container_x,
- container_y: el.container_y,
- mainData: nodeData
- };
-
- interfaces.push(j);
- });
- }
-
- return { interfaces, edgeData };
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/nodeCreator/deviceState.ts b/FRONT/DEV/src/utils/nodeController/nodeCreator/deviceState.ts
deleted file mode 100644
index aa2dd6f..0000000
--- a/FRONT/DEV/src/utils/nodeController/nodeCreator/deviceState.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-type StateType = Record;
-
-export const stateMap: StateType = {
- '0': "Неизвестно",
- '10': "Не обслуживается",
- '20': "Недоступно",
- '30': "Отключено",
- '40': "Подготовка",
- '50': "Конфигурация",
- '60': "Требуется аутентификация",
- '70': "Настройка IP",
- '80': "Проверка IP",
- '90': "Дополнительные настройки",
- '100': "Подключено",
- '110': "Отключается",
- '120': "Ошибка",
-}
-
-export const stateColor: StateType = {
- '0': "#7e7e7e",
- '10': "#d95454",
- '20': "#d95454",
- '30': "#d95454",
- '40': "",
- '50': "",
- '60': "",
- '70': "",
- '80': "",
- '90': "",
- '100': "#66BB6A",
- '110': "",
- '120': "",
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initEdges.ts b/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initEdges.ts
deleted file mode 100644
index c422a83..0000000
--- a/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initEdges.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { useState } from "react";
-import { IEdge } from "../../../../const/types/types";
-
-export const useInitEdges = () => {
- const [initedEdges, setEdges] = useState([])
-
- const setInitEdges = (something: IEdge[]) => {
- setEdges((prevEdges) => {
- const edges: IEdge[] = []
-
- something.map(edge=>{
- edges.push(edge)
- })
-
- return [...prevEdges, ...edges]
- })
- }
- return { initedEdges, setInitEdges }
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initIpArray.ts b/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initIpArray.ts
deleted file mode 100644
index 5806438..0000000
--- a/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initIpArray.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { ResponseIpConf, ResponseNetwork, IpData } from "../../../../const/types/types"
-
-interface IpArray {
- route: boolean,
- ipData: IpData[]
-}
-
-export const ipsInitor = (network: ResponseNetwork) => {
- const array: IpArray[] = [
- { route: true, ipData: [] },
- { route: false, ipData: [] },
- ];
-
- const ipArrayInit = (ip: ResponseIpConf, version: string) => {
- const isRouted = ip.routes.length > 0
-
- const newData: IpData = {
- ipType: ip.method,
- ipAdress: ip.address,
- ipGate: ip.gateway,
- ipDns: ip.dns,
- ipRoutese: ip.routes,
- ipVersion: version
- };
-
- if (isRouted) {
- array[0].ipData.push(newData);
- } else {
- array[1].ipData.push(newData);
- }
- }
-
- network.ipv4.configurations.forEach((ip: ResponseIpConf) => {
- ipArrayInit(ip, '4')
- });
-
- network.ipv6.configurations.forEach((ip: ResponseIpConf) => {
- ipArrayInit(ip, '6')
- });
-
- const resultArray = array.filter((item) => item.ipData.length > 0);
-
- return resultArray;
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initNodes.ts b/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initNodes.ts
deleted file mode 100644
index a539069..0000000
--- a/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initNodes.ts
+++ /dev/null
@@ -1,297 +0,0 @@
-import { useState } from "react";
-import { NodeColors } from "../../../../components/customeNodes/types/colors";
-import { stateColor, stateMap } from "../deviceState";
-import { Interfaces, NetworkNode, IpNode, PortNode, NodeGroup, NetworkInterface } from "../../../../const/types/types"
-
-export const useInitNodes = () => {
- const [initedNodes, setNodes] = useState<(NetworkInterface)[]>([]);
- const yGap = 20
-
- interface MainHeight {
- x?: number,
- y?: number,
- height?: number;
- }
-
- const findMaxHeight = (data: any[])=>{
- const filtred = data.filter((el)=> el.x ===0 || el.x ===1)
- if(filtred.length ===0){
- return 140
- }
- const max =filtred.reduce((max, el)=> Math.max(max, el.height), 0)
- return max
-
- }
-
- const setInitNodes = (interfaces: Interfaces[]) => {
- setNodes(() => {
- const networkNodes: NetworkNode[] = []
- const portNodes: PortNode[] = []
- const ipGroupes: NodeGroup[][] = []
- const ipNodes: IpNode[][] = []
- const networkGroups: NodeGroup[] = []
-
- let width: number, columnCount: MainHeight[] = []
- let widthArr: number[] = []
- let heightArr: number[] = []
-
- interfaces.map((b, indexB) => {
- const centerX = 20
- const centerY = 20
- let currentY = centerY;
- b.mainData.map((data, networkIndex) => {
- data.ipArrays.map((el) => {
- if (el.route === true) {
- const column = { x: 1 }
- columnCount.push(column)
- }
- else if (el.route === false) {
- const column = { x: 0 }
- columnCount.push(column)
- }
- })
-
- if (columnCount.length == 2) {
- width = (260 * 2) + 45
- }
- else {
- width = 260 + 35
- }
-
- let mainHeight: MainHeight[] = []
-
- data.ipArrays.forEach((ipInfo, groupIndx) => {
- if(!ipInfo || !ipInfo.ipData || ipInfo.ipData.length ===0){
- return
- }
- let groupes: NodeGroup[] = []
- let nodeCount = ipInfo.ipData.length
- let x = 20, y = 150, newX, newY, gap = 0
-
- let height = (140 + 15) * (nodeCount)
-
-
- if (ipInfo.route) {
- newX = width - 260 - 15
-
- const groupHeight = {
- x: 1,
- height: height
- }
- mainHeight.push(groupHeight)
- }
- else {
- newX = x
- const groupHeight = {
- x: 0,
- height: height
- }
- mainHeight.push(groupHeight)
- }
-
-
- const newIpGroupe: NodeGroup = {
- id: `g${indexB}_nw${networkIndex}_rx${groupIndx}`,
- position: {
- x: newX,
- y: y
- },
- data: {
- style: {
- width: 260,
- height: height
- }
- },
- hidden: false,
- type: "ipgroup",
- parentId: `g${indexB}_nw${networkIndex}`,
- extent: 'parent',
- draggable: false,
- }
-
- let startY = 0
- const ipGap = 15
-
-
- ipInfo.ipData.map((ip, ipIndex) => {
- let nodes: IpNode[] = []
- const y = startY;
-
- startY += 140 + ipGap;
-
-
- const newIpNode: IpNode = {
- id: `g${indexB}_nw${networkIndex}_rx${groupIndx}_ip${ipIndex}`,
- position: {
- x: 0,
- y: y
- },
- type: 'ip',
- data: {
- ipData: {
- ipType: ip.ipType,
- ipAdress: ip.ipAdress,
- ipGate: ip.ipGate,
- ipDns: ip.ipDns,
- ipRoutese: [],
- ipVersion: ip.ipVersion
- },
- interfaceData:{
- device: data.networkData.device,
- connection: data.networkData.connection,
- },
- route: ipInfo.route,
- style: {
- width: 260,
- height: 140,
- borderType: "solid",
- borderColor: NodeColors["1"],
- },
- },
- hidden: false,
- parentId: `g${indexB}_nw${networkIndex}_rx${groupIndx}`,
- extent: 'parent',
- draggable: false,
- }
- nodes.push(newIpNode)
- ipNodes.push(nodes)
- })
- groupes.push(newIpGroupe)
- ipGroupes.push(groupes)
- })
-
- const maxHeight = findMaxHeight(mainHeight);
- // const networkNodeHeight = (maxHeight || 0) + 150;
- const networkNodeHeight = maxHeight +150
-
- let groupId: string
- if (data.networkData.connection === 'unknown') {
- groupId = 'cn1'
- }
- else {
- groupId = 'cn0'
- }
-
- const y = currentY;
-
- currentY += networkNodeHeight + yGap;
-
-
- const newNode: NetworkNode = {
- id: `g${indexB}_nw${networkIndex}`,
- position: {
- x: centerX,
- y: y
- },
- type: "network",
- data: {
- networkData: {
- device: data.networkData.device,
- type: data.networkData.type,
- mac: data.networkData.mac,
- mtu: data.networkData.mtu,
- state: stateMap[data.networkData.state],
- connection: data.networkData.connection,
- id: `nw${networkIndex}`,
- strength: data.networkData.strength
- },
- style: {
- width: width,
- height: networkNodeHeight as number,
- borderType: "solid",
- borderColor: NodeColors["0"],
- backgroundColor: stateColor[data.networkData.state]
- },
- height: networkNodeHeight,
- visible: true
- },
- parentId: `g${indexB}`,
- extent: 'parent',
- };
-
- widthArr.push(width)
- heightArr.push(networkNodeHeight)
- networkNodes.push(newNode)
- columnCount = []
-
- let portNodeHeight = 60;
- let absoluteY = (currentY - portNodeHeight + 10) - (networkNodeHeight / 2);
- if (data.networkData.connection !== 'unknown') {
- const portNode: PortNode = {
- id: `p-nw${networkIndex}`,
- position: {
- x: -350,
- y: absoluteY,
- },
- type: 'portNode',
- data: {
- label: `${data.networkData.connection}`,
- id: `p-nw${networkIndex}`,
- style: {
- width: 260,
- height: portNodeHeight,
- borderType: "solid",
- borderColor: NodeColors["0"],
- },
- }
- }
- portNodes.push(portNode)
- }
- })
-
- const sumHeight = heightArr.reduce((a, c) => a + c, 0);
- const maxWidth = Math.max(...widthArr)
-
- let count = b.mainData.length
- let groupHeight = sumHeight + (count * 30)
- let groupWidth = maxWidth + 40
-
- let label: string;
-
- if (indexB == 0) {
- label = 'Активные интерфейсы'
- }
- else {
- label = 'Неактивные интерфейсы'
- }
-
- let x = b.container_x
- if (indexB > 0 && x === 0) {
- x = x + 500
- }
-
- if (b.mainData.length > 0) {
- const networkGroup: NodeGroup = {
- id: `g${indexB}`,
- position: {
- x: x,
- y: b.container_y
- },
- type: "nodegroup",
- data: {
- label: label,
- id: `g${indexB}`,
- height: groupHeight,
- style: {
- width: groupWidth,
- height: groupHeight,
- borderType: "solid",
- borderColor: NodeColors["0"],
- },
- },
- }
-
- networkGroups.push(networkGroup)
- }
-
-
- heightArr = []
- })
-
- return [...networkGroups, ...networkNodes, ...ipGroupes.flat(), ...portNodes, ...ipNodes.flat()];
- });
-
- };
-
- return { initedNodes, setInitNodes };
-};
diff --git a/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initor.ts b/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initor.ts
deleted file mode 100644
index bf2f187..0000000
--- a/FRONT/DEV/src/utils/nodeController/nodeCreator/inits/initor.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { useInitNodes } from "./initNodes";
-import { useInitEdges } from "./initEdges";
-import { IEdge, Interfaces } from "../../../../const/types/types";
-
-export const useInitCanvas = () => {
- const { initedNodes, setInitNodes } = useInitNodes();
- const { initedEdges, setInitEdges } = useInitEdges();
-
- const handleInit = (edgeData: IEdge[], interfaces: Interfaces[])=>{
- setInitNodes(interfaces)
- setInitEdges(edgeData)
- }
-
- return { initedNodes, initedEdges, handleInit };
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/updateWifiData.ts b/FRONT/DEV/src/utils/nodeController/updateWifiData.ts
deleted file mode 100644
index 7be7d01..0000000
--- a/FRONT/DEV/src/utils/nodeController/updateWifiData.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-export const updateWifiData = (wifiData: any, nodes: any)=>{
- const wifiName = wifiData.name;
-
- const updatedNodes = nodes.map((node: any) => {
- if (node.data.networkData && node.data.networkData.device === wifiName) {
- return {
- ...node,
- data: {
- ...node.data,
- networkData: {
- ...node.data.networkData,
- strength: wifiData.strength,
- },
- },
- };
- }
- return node;
- });
-
- return updatedNodes
-}
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/nodeController/validator.ts b/FRONT/DEV/src/utils/nodeController/validator.ts
deleted file mode 100644
index 0f5294c..0000000
--- a/FRONT/DEV/src/utils/nodeController/validator.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-export const validateIPAddress = (ip: string) => {
- const ipv4Pattern = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
- const ipv6Pattern = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/;
- return ipv4Pattern.test(ip) || ipv6Pattern.test(ip);
-};
-
-export const validateSameSubnet = (ip1: string, ip2: string, ip3: string | string[]): boolean => {
- const extractSubnet = (ip: string): string => {
- if (typeof ip !== 'string') {
- throw new TypeError(`Некорректный формат IP-адреса: ${ip}`);
- }
- return ip.split('.').slice(0, 3).join('.');
- };
-
- const areInSameSubnet = (ip: string, subnet: string): boolean => {
- return extractSubnet(ip) === subnet;
- };
-
- try {
- const subnet1 = extractSubnet(ip1);
- const subnet2 = extractSubnet(ip2);
-
- // Проверяем, что IP и шлюз в одной подсети
- if (subnet1 !== subnet2) {
- return false;
- }
-
- // Если DNS — массив, проверяем, что хотя бы один DNS в той же подсети
- const dnsArray = Array.isArray(ip3) ? ip3 : [ip3];
- return dnsArray.some(dns => areInSameSubnet(dns, subnet1));
- } catch (error) {
- console.error(error);
- return false;
- }
-};
\ No newline at end of file
diff --git a/FRONT/DEV/src/utils/pageReloads.ts b/FRONT/DEV/src/utils/pageReloads.ts
deleted file mode 100644
index 0830c75..0000000
--- a/FRONT/DEV/src/utils/pageReloads.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { useEffect, useState } from "react";
-
-export const usePageReloadCounter = (): number => {
- const [reloadCount, setReloadCount] = useState(() => {
- // Инициализируем состояние из sessionStorage или начинаем с 0
- const savedCount = sessionStorage.getItem('pageReloadCount');
- return savedCount ? parseInt(savedCount, 10) : 0;
- });
-
- useEffect(() => {
- // Увеличиваем счётчик при каждом монтировании компонента
- const newCount = reloadCount + 1;
- setReloadCount(newCount);
- sessionStorage.setItem('pageReloadCount', newCount.toString());
- }, []); // Пустой массив зависимостей означает, что эффект сработает только при монтировании
-
- return reloadCount;
-};
\ No newline at end of file
diff --git a/FRONT/DEV/tsconfig.app.json b/FRONT/DEV/tsconfig.app.json
deleted file mode 100644
index 358ca9b..0000000
--- a/FRONT/DEV/tsconfig.app.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "compilerOptions": {
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
- "target": "ES2020",
- "useDefineForClassFields": true,
- "lib": ["ES2020", "DOM", "DOM.Iterable"],
- "module": "ESNext",
- "skipLibCheck": true,
-
- /* Bundler mode */
- "moduleResolution": "bundler",
- "allowImportingTsExtensions": true,
- "isolatedModules": true,
- "moduleDetection": "force",
- "noEmit": true,
- "jsx": "react-jsx",
-
- /* Linting */
- "strict": true,
- "noUnusedLocals": true,
- "noUnusedParameters": true,
- "noFallthroughCasesInSwitch": true,
- "noUncheckedSideEffectImports": true
- },
- "include": ["src"]
-}
diff --git a/FRONT/DEV/tsconfig.json b/FRONT/DEV/tsconfig.json
deleted file mode 100644
index 347251f..0000000
--- a/FRONT/DEV/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compilerOptions": {
- "target": "ESNext",
- "useDefineForClassFields": true,
- "lib": [
- "DOM",
- "DOM.Iterable",
- "ESNext"
- ],
- "allowJs": false,
- "skipLibCheck": true,
- "esModuleInterop": false,
- "allowSyntheticDefaultImports": true,
- "strict": true,
- "forceConsistentCasingInFileNames": true,
- "module": "ESNext",
- "moduleResolution": "Node",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "noEmit": true,
- "jsx": "react-jsx",
- },
- "include": [
- "src",
- "electron.d.ts",
- "main.js"
- ],
- "references": [
- {
- "path": "./tsconfig.node.json"
- }
- ]
-}
\ No newline at end of file
diff --git a/FRONT/DEV/tsconfig.node.json b/FRONT/DEV/tsconfig.node.json
deleted file mode 100644
index dcfd137..0000000
--- a/FRONT/DEV/tsconfig.node.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "compilerOptions": {
- "composite": true,
- "module": "ESNext",
- "moduleResolution": "Node",
- "allowSyntheticDefaultImports": true
- },
- "include": [
- "vite.config.ts"
- ]
-}
\ No newline at end of file
diff --git a/FRONT/DEV/vite-env.d.ts b/FRONT/DEV/vite-env.d.ts
deleted file mode 100644
index 151aa68..0000000
--- a/FRONT/DEV/vite-env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
\ No newline at end of file
diff --git a/FRONT/DEV/vite.config.ts b/FRONT/DEV/vite.config.ts
deleted file mode 100644
index 8de6065..0000000
--- a/FRONT/DEV/vite.config.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { defineConfig } from 'vite';
-import react from '@vitejs/plugin-react';
-
-export default defineConfig({
- plugins: [react()],
- build: {
- rollupOptions: {
- external: ['@electron/remote'],
- },
- },
-});
\ No newline at end of file
diff --git a/FRONT/DEV/yarn.lock b/FRONT/DEV/yarn.lock
deleted file mode 100644
index 304642c..0000000
--- a/FRONT/DEV/yarn.lock
+++ /dev/null
@@ -1,2228 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@ampproject/remapping@^2.2.0":
- version "2.3.0"
- resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz"
- integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
- dependencies:
- "@jridgewell/gen-mapping" "^0.3.5"
- "@jridgewell/trace-mapping" "^0.3.24"
-
-"@babel/code-frame@^7.26.2":
- version "7.26.2"
- resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz"
- integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
- dependencies:
- "@babel/helper-validator-identifier" "^7.25.9"
- js-tokens "^4.0.0"
- picocolors "^1.0.0"
-
-"@babel/compat-data@^7.26.8":
- version "7.26.8"
- resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz"
- integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==
-
-"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.26.10":
- version "7.26.10"
- resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz"
- integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==
- dependencies:
- "@ampproject/remapping" "^2.2.0"
- "@babel/code-frame" "^7.26.2"
- "@babel/generator" "^7.26.10"
- "@babel/helper-compilation-targets" "^7.26.5"
- "@babel/helper-module-transforms" "^7.26.0"
- "@babel/helpers" "^7.26.10"
- "@babel/parser" "^7.26.10"
- "@babel/template" "^7.26.9"
- "@babel/traverse" "^7.26.10"
- "@babel/types" "^7.26.10"
- convert-source-map "^2.0.0"
- debug "^4.1.0"
- gensync "^1.0.0-beta.2"
- json5 "^2.2.3"
- semver "^6.3.1"
-
-"@babel/generator@^7.26.10", "@babel/generator@^7.27.0":
- version "7.27.0"
- resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz"
- integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==
- dependencies:
- "@babel/parser" "^7.27.0"
- "@babel/types" "^7.27.0"
- "@jridgewell/gen-mapping" "^0.3.5"
- "@jridgewell/trace-mapping" "^0.3.25"
- jsesc "^3.0.2"
-
-"@babel/helper-compilation-targets@^7.26.5":
- version "7.27.0"
- resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz"
- integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==
- dependencies:
- "@babel/compat-data" "^7.26.8"
- "@babel/helper-validator-option" "^7.25.9"
- browserslist "^4.24.0"
- lru-cache "^5.1.1"
- semver "^6.3.1"
-
-"@babel/helper-module-imports@^7.25.9":
- version "7.25.9"
- resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz"
- integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
- dependencies:
- "@babel/traverse" "^7.25.9"
- "@babel/types" "^7.25.9"
-
-"@babel/helper-module-transforms@^7.26.0":
- version "7.26.0"
- resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz"
- integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
- dependencies:
- "@babel/helper-module-imports" "^7.25.9"
- "@babel/helper-validator-identifier" "^7.25.9"
- "@babel/traverse" "^7.25.9"
-
-"@babel/helper-plugin-utils@^7.25.9":
- version "7.25.9"
- resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz"
- integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==
-
-"@babel/helper-string-parser@^7.25.9":
- version "7.25.9"
- resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz"
- integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
-
-"@babel/helper-validator-identifier@^7.25.9":
- version "7.25.9"
- resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz"
- integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
-
-"@babel/helper-validator-option@^7.25.9":
- version "7.25.9"
- resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz"
- integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
-
-"@babel/helpers@^7.26.10":
- version "7.26.10"
- resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz"
- integrity sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==
- dependencies:
- "@babel/template" "^7.26.9"
- "@babel/types" "^7.26.10"
-
-"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.26.10", "@babel/parser@^7.27.0":
- version "7.27.0"
- resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz"
- integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==
- dependencies:
- "@babel/types" "^7.27.0"
-
-"@babel/plugin-transform-react-jsx-self@^7.25.9":
- version "7.25.9"
- resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz"
- integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.25.9"
-
-"@babel/plugin-transform-react-jsx-source@^7.25.9":
- version "7.25.9"
- resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz"
- integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.25.9"
-
-"@babel/runtime@^7.18.9":
- version "7.26.10"
- resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz"
- integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==
- dependencies:
- regenerator-runtime "^0.14.0"
-
-"@babel/template@^7.26.9", "@babel/template@^7.27.0":
- version "7.27.0"
- resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz"
- integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==
- dependencies:
- "@babel/code-frame" "^7.26.2"
- "@babel/parser" "^7.27.0"
- "@babel/types" "^7.27.0"
-
-"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10":
- version "7.27.0"
- resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz"
- integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==
- dependencies:
- "@babel/code-frame" "^7.26.2"
- "@babel/generator" "^7.27.0"
- "@babel/parser" "^7.27.0"
- "@babel/template" "^7.27.0"
- "@babel/types" "^7.27.0"
- debug "^4.3.1"
- globals "^11.1.0"
-
-"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0":
- version "7.27.0"
- resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz"
- integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==
- dependencies:
- "@babel/helper-string-parser" "^7.25.9"
- "@babel/helper-validator-identifier" "^7.25.9"
-
-"@electron/asar@^3.2.1":
- version "3.2.18"
- resolved "https://registry.npmjs.org/@electron/asar/-/asar-3.2.18.tgz"
- integrity sha512-2XyvMe3N3Nrs8cV39IKELRHTYUWFKrmqqSY1U+GMlc0jvqjIVnoxhNd2H4JolWQncbJi1DCvb5TNxZuI2fEjWg==
- dependencies:
- commander "^5.0.0"
- glob "^7.1.6"
- minimatch "^3.0.4"
-
-"@electron/get@^2.0.0":
- version "2.0.3"
- resolved "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz"
- integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==
- dependencies:
- debug "^4.1.1"
- env-paths "^2.2.0"
- fs-extra "^8.1.0"
- got "^11.8.5"
- progress "^2.0.3"
- semver "^6.2.0"
- sumchecker "^3.0.1"
- optionalDependencies:
- global-agent "^3.0.0"
-
-"@electron/notarize@^1.2.3":
- version "1.2.4"
- resolved "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.4.tgz"
- integrity sha512-W5GQhJEosFNafewnS28d3bpQ37/s91CDWqxVchHfmv2dQSTWpOzNlUVQwYzC1ay5bChRV/A9BTL68yj0Pa+TSg==
- dependencies:
- debug "^4.1.1"
- fs-extra "^9.0.1"
-
-"@electron/osx-sign@^1.0.5":
- version "1.3.2"
- resolved "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.2.tgz"
- integrity sha512-KqVlm9WMWq19lBpCXQoThC/Koaiji2zotUDYwZDaZlZZym+FXY9mQW8wN6sUQ93nkVc42f3TQ1S/XN9S1kjM5Q==
- dependencies:
- compare-version "^0.1.2"
- debug "^4.3.4"
- fs-extra "^10.0.0"
- isbinaryfile "^4.0.8"
- minimist "^1.2.6"
- plist "^3.0.5"
-
-"@electron/universal@^1.3.2":
- version "1.5.1"
- resolved "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz"
- integrity sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==
- dependencies:
- "@electron/asar" "^3.2.1"
- "@malept/cross-spawn-promise" "^1.1.0"
- debug "^4.3.1"
- dir-compare "^3.0.0"
- fs-extra "^9.0.1"
- minimatch "^3.0.4"
- plist "^3.0.4"
-
-"@emotion/is-prop-valid@1.2.2":
- version "1.2.2"
- resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz"
- integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==
- dependencies:
- "@emotion/memoize" "^0.8.1"
-
-"@emotion/memoize@^0.8.1":
- version "0.8.1"
- resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz"
- integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==
-
-"@emotion/unitless@0.8.1":
- version "0.8.1"
- resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz"
- integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==
-
-"@esbuild/linux-x64@0.25.3":
- version "0.25.3"
- resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz"
- integrity sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==
-
-"@iconify-json/ic@^1.2.2":
- version "1.2.2"
- resolved "https://registry.npmjs.org/@iconify-json/ic/-/ic-1.2.2.tgz"
- integrity sha512-QmjwS3lYiOmVWgTCEOTFyGODaR/+689+ajep/VsrCcsUN0Gdle5PmIcibDsdmRyrOsW/E77G41UUijdbjQUofw==
- dependencies:
- "@iconify/types" "*"
-
-"@iconify/icons-ic@^1.2.13":
- version "1.2.13"
- resolved "https://registry.npmjs.org/@iconify/icons-ic/-/icons-ic-1.2.13.tgz"
- integrity sha512-TphrhwOvgd7CTmUhz6jgXF+SPnMtvTm03bZsAYbny2kwq4zlkhr9e16YEyPGMvKhjtTqNooA3iZ9Wa+pZ8moXQ==
- dependencies:
- "@iconify/types" "*"
-
-"@iconify/icons-ph@^1.2.5":
- version "1.2.5"
- resolved "https://registry.npmjs.org/@iconify/icons-ph/-/icons-ph-1.2.5.tgz"
- integrity sha512-ewrnpL0u3MAP0wLDnXb/39W9W71ObyY8DNig6rYj7NEwcndWWlrGHt1RxEGYE3eqILl/IUcNIQQF1CXZAhwr/w==
- dependencies:
- "@iconify/types" "*"
-
-"@iconify/react@^5.2.0":
- version "5.2.0"
- resolved "https://registry.npmjs.org/@iconify/react/-/react-5.2.0.tgz"
- integrity sha512-7Sdjrqq3fkkQNks9SY3adGC37NQTHsBJL2PRKlQd455PoDi9s+Es9AUTY+vGLFOYs5yO9w9yCE42pmxCwG26WA==
- dependencies:
- "@iconify/types" "^2.0.0"
-
-"@iconify/types@*", "@iconify/types@^2.0.0":
- version "2.0.0"
- resolved "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz"
- integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==
-
-"@jridgewell/gen-mapping@^0.3.5":
- version "0.3.5"
- resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz"
- integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
- dependencies:
- "@jridgewell/set-array" "^1.2.1"
- "@jridgewell/sourcemap-codec" "^1.4.10"
- "@jridgewell/trace-mapping" "^0.3.24"
-
-"@jridgewell/resolve-uri@^3.1.0":
- version "3.1.2"
- resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz"
- integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
-
-"@jridgewell/set-array@^1.2.1":
- version "1.2.1"
- resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz"
- integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
-
-"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
- version "1.5.0"
- resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz"
- integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
-
-"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
- version "0.3.25"
- resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz"
- integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
- dependencies:
- "@jridgewell/resolve-uri" "^3.1.0"
- "@jridgewell/sourcemap-codec" "^1.4.14"
-
-"@malept/cross-spawn-promise@^1.1.0":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz"
- integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==
- dependencies:
- cross-spawn "^7.0.1"
-
-"@reduxjs/toolkit@^2.6.0":
- version "2.6.0"
- resolved "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.6.0.tgz"
- integrity sha512-mWJCYpewLRyTuuzRSEC/IwIBBkYg2dKtQas8mty5MaV2iXzcmicS3gW554FDeOvLnY3x13NIk8MB1e8wHO7rqQ==
- dependencies:
- immer "^10.0.3"
- redux "^5.0.1"
- redux-thunk "^3.1.0"
- reselect "^5.1.0"
-
-"@rollup/rollup-linux-x64-gnu@4.40.1":
- version "4.40.1"
- resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.1.tgz"
- integrity sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==
-
-"@rollup/rollup-linux-x64-musl@4.40.1":
- version "4.40.1"
- resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.1.tgz"
- integrity sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==
-
-"@sindresorhus/is@^4.0.0":
- version "4.6.0"
- resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz"
- integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
-
-"@szmarczak/http-timer@^4.0.5":
- version "4.0.6"
- resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz"
- integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==
- dependencies:
- defer-to-connect "^2.0.0"
-
-"@types/babel__core@^7.20.5":
- version "7.20.5"
- resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz"
- integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
- dependencies:
- "@babel/parser" "^7.20.7"
- "@babel/types" "^7.20.7"
- "@types/babel__generator" "*"
- "@types/babel__template" "*"
- "@types/babel__traverse" "*"
-
-"@types/babel__generator@*":
- version "7.27.0"
- resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz"
- integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==
- dependencies:
- "@babel/types" "^7.0.0"
-
-"@types/babel__template@*":
- version "7.4.4"
- resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz"
- integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==
- dependencies:
- "@babel/parser" "^7.1.0"
- "@babel/types" "^7.0.0"
-
-"@types/babel__traverse@*":
- version "7.20.7"
- resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz"
- integrity sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==
- dependencies:
- "@babel/types" "^7.20.7"
-
-"@types/cacheable-request@^6.0.1":
- version "6.0.3"
- resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz"
- integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==
- dependencies:
- "@types/http-cache-semantics" "*"
- "@types/keyv" "^3.1.4"
- "@types/node" "*"
- "@types/responselike" "^1.0.0"
-
-"@types/d3-array@*":
- version "3.2.1"
- resolved "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz"
- integrity sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==
-
-"@types/d3-axis@*":
- version "3.0.6"
- resolved "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz"
- integrity sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==
- dependencies:
- "@types/d3-selection" "*"
-
-"@types/d3-brush@*":
- version "3.0.6"
- resolved "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz"
- integrity sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==
- dependencies:
- "@types/d3-selection" "*"
-
-"@types/d3-chord@*":
- version "3.0.6"
- resolved "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz"
- integrity sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==
-
-"@types/d3-color@*":
- version "3.1.3"
- resolved "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz"
- integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==
-
-"@types/d3-contour@*":
- version "3.0.6"
- resolved "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz"
- integrity sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==
- dependencies:
- "@types/d3-array" "*"
- "@types/geojson" "*"
-
-"@types/d3-delaunay@*":
- version "6.0.4"
- resolved "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz"
- integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==
-
-"@types/d3-dispatch@*":
- version "3.0.6"
- resolved "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz"
- integrity sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==
-
-"@types/d3-drag@*", "@types/d3-drag@^3.0.7":
- version "3.0.7"
- resolved "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz"
- integrity sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==
- dependencies:
- "@types/d3-selection" "*"
-
-"@types/d3-dsv@*":
- version "3.0.7"
- resolved "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz"
- integrity sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==
-
-"@types/d3-ease@*":
- version "3.0.2"
- resolved "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz"
- integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==
-
-"@types/d3-fetch@*":
- version "3.0.7"
- resolved "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz"
- integrity sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==
- dependencies:
- "@types/d3-dsv" "*"
-
-"@types/d3-force@*":
- version "3.0.10"
- resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz"
- integrity sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==
-
-"@types/d3-format@*":
- version "3.0.4"
- resolved "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz"
- integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==
-
-"@types/d3-geo@*":
- version "3.1.0"
- resolved "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz"
- integrity sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==
- dependencies:
- "@types/geojson" "*"
-
-"@types/d3-hierarchy@*":
- version "3.1.7"
- resolved "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz"
- integrity sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==
-
-"@types/d3-interpolate@*":
- version "3.0.4"
- resolved "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz"
- integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==
- dependencies:
- "@types/d3-color" "*"
-
-"@types/d3-path@*":
- version "3.1.0"
- resolved "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz"
- integrity sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==
-
-"@types/d3-polygon@*":
- version "3.0.2"
- resolved "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz"
- integrity sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==
-
-"@types/d3-quadtree@*":
- version "3.0.6"
- resolved "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz"
- integrity sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==
-
-"@types/d3-random@*":
- version "3.0.3"
- resolved "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz"
- integrity sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==
-
-"@types/d3-scale-chromatic@*":
- version "3.1.0"
- resolved "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz"
- integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==
-
-"@types/d3-scale@*":
- version "4.0.8"
- resolved "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz"
- integrity sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==
- dependencies:
- "@types/d3-time" "*"
-
-"@types/d3-selection@*", "@types/d3-selection@^3.0.10":
- version "3.0.11"
- resolved "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz"
- integrity sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==
-
-"@types/d3-shape@*":
- version "3.1.6"
- resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz"
- integrity sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==
- dependencies:
- "@types/d3-path" "*"
-
-"@types/d3-time-format@*":
- version "4.0.3"
- resolved "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz"
- integrity sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==
-
-"@types/d3-time@*":
- version "3.0.4"
- resolved "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz"
- integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==
-
-"@types/d3-timer@*":
- version "3.0.2"
- resolved "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz"
- integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==
-
-"@types/d3-transition@*", "@types/d3-transition@^3.0.8":
- version "3.0.9"
- resolved "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz"
- integrity sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==
- dependencies:
- "@types/d3-selection" "*"
-
-"@types/d3-zoom@*", "@types/d3-zoom@^3.0.8":
- version "3.0.8"
- resolved "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz"
- integrity sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==
- dependencies:
- "@types/d3-interpolate" "*"
- "@types/d3-selection" "*"
-
-"@types/d3@^7.4.0":
- version "7.4.3"
- resolved "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz"
- integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==
- dependencies:
- "@types/d3-array" "*"
- "@types/d3-axis" "*"
- "@types/d3-brush" "*"
- "@types/d3-chord" "*"
- "@types/d3-color" "*"
- "@types/d3-contour" "*"
- "@types/d3-delaunay" "*"
- "@types/d3-dispatch" "*"
- "@types/d3-drag" "*"
- "@types/d3-dsv" "*"
- "@types/d3-ease" "*"
- "@types/d3-fetch" "*"
- "@types/d3-force" "*"
- "@types/d3-format" "*"
- "@types/d3-geo" "*"
- "@types/d3-hierarchy" "*"
- "@types/d3-interpolate" "*"
- "@types/d3-path" "*"
- "@types/d3-polygon" "*"
- "@types/d3-quadtree" "*"
- "@types/d3-random" "*"
- "@types/d3-scale" "*"
- "@types/d3-scale-chromatic" "*"
- "@types/d3-selection" "*"
- "@types/d3-shape" "*"
- "@types/d3-time" "*"
- "@types/d3-time-format" "*"
- "@types/d3-timer" "*"
- "@types/d3-transition" "*"
- "@types/d3-zoom" "*"
-
-"@types/estree@1.0.7":
- version "1.0.7"
- resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz"
- integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==
-
-"@types/geojson@*":
- version "7946.0.14"
- resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz"
- integrity sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==
-
-"@types/http-cache-semantics@*":
- version "4.0.4"
- resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz"
- integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
-
-"@types/keyv@^3.1.4":
- version "3.1.4"
- resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz"
- integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==
- dependencies:
- "@types/node" "*"
-
-"@types/node@*", "@types/node@^18.0.0 || ^20.0.0 || >=22.0.0", "@types/node@^20.9.0":
- version "20.17.17"
- resolved "https://registry.npmjs.org/@types/node/-/node-20.17.17.tgz"
- integrity sha512-/WndGO4kIfMicEQLTi/mDANUu/iVUhT7KboZPdEqqHQ4aTS+3qT3U5gIqWDFV+XouorjfgGqvKILJeHhuQgFYg==
- dependencies:
- undici-types "~6.19.2"
-
-"@types/prop-types@*":
- version "15.7.13"
- resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz"
- integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==
-
-"@types/react-dom@^18.0.11":
- version "18.3.1"
- resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz"
- integrity sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==
- dependencies:
- "@types/react" "*"
-
-"@types/react@*", "@types/react@^18.0.28", "@types/react@^18.2.25 || ^19", "@types/react@>=16.8", "@types/react@>=18.0.0":
- version "18.3.12"
- resolved "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz"
- integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==
- dependencies:
- "@types/prop-types" "*"
- csstype "^3.0.2"
-
-"@types/resize-observer-browser@^0.1.7":
- version "0.1.11"
- resolved "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.11.tgz"
- integrity sha512-cNw5iH8JkMkb3QkCoe7DaZiawbDQEUX8t7iuQaRTyLOyQCR2h+ibBD4GJt7p5yhUHrlOeL7ZtbxNHeipqNsBzQ==
-
-"@types/responselike@^1.0.0":
- version "1.0.3"
- resolved "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz"
- integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==
- dependencies:
- "@types/node" "*"
-
-"@types/stylis@4.2.5":
- version "4.2.5"
- resolved "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz"
- integrity sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==
-
-"@types/use-sync-external-store@^0.0.6":
- version "0.0.6"
- resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz"
- integrity sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==
-
-"@types/yauzl@^2.9.1":
- version "2.10.3"
- resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz"
- integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
- dependencies:
- "@types/node" "*"
-
-"@vitejs/plugin-basic-ssl@^2.0.0":
- version "2.0.0"
- resolved "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.0.0.tgz"
- integrity sha512-gc9Tjg8bUxBVSTzeWT3Njc0Cl3PakHFKdNfABnZWiUgbxqmHDEn7uECv3fHVylxoYgNzAcmU7ZrILz+BwSo3sA==
-
-"@vitejs/plugin-react@^4.4.1":
- version "4.4.1"
- resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz"
- integrity sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==
- dependencies:
- "@babel/core" "^7.26.10"
- "@babel/plugin-transform-react-jsx-self" "^7.25.9"
- "@babel/plugin-transform-react-jsx-source" "^7.25.9"
- "@types/babel__core" "^7.20.5"
- react-refresh "^0.17.0"
-
-"@xmldom/xmldom@^0.8.8":
- version "0.8.10"
- resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz"
- integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==
-
-"@xyflow/react@^12.3.5":
- version "12.3.5"
- resolved "https://registry.npmjs.org/@xyflow/react/-/react-12.3.5.tgz"
- integrity sha512-wAYqpicdrVo1rxCu0X3M9s3YIF45Agqfabw0IBryTGqjWvr2NyfciI8gIP4MB+NKpWWN5kxZ9tiZ9u8lwC7iAg==
- dependencies:
- "@xyflow/system" "0.0.46"
- classcat "^5.0.3"
- zustand "^4.4.0"
-
-"@xyflow/system@0.0.46":
- version "0.0.46"
- resolved "https://registry.npmjs.org/@xyflow/system/-/system-0.0.46.tgz"
- integrity sha512-bmFXvboVdiydIFZmDCjrbBCYgB0d5pYdkcZPWbAxGmhMRUZ+kW3CksYgYxWabrw51rwpWitLEadvLrivG0mVfA==
- dependencies:
- "@types/d3-drag" "^3.0.7"
- "@types/d3-selection" "^3.0.10"
- "@types/d3-transition" "^3.0.8"
- "@types/d3-zoom" "^3.0.8"
- d3-drag "^3.0.0"
- d3-selection "^3.0.0"
- d3-zoom "^3.0.0"
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
- integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
-
-at-least-node@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz"
- integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-
-author-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz"
- integrity sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==
-
-axios@^1.7.9:
- version "1.8.4"
- resolved "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz"
- integrity sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==
- dependencies:
- follow-redirects "^1.15.6"
- form-data "^4.0.0"
- proxy-from-env "^1.1.0"
-
-balanced-match@^1.0.0:
- version "1.0.2"
- resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
- integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-
-base64-js@^1.5.1:
- version "1.5.1"
- resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
- integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-
-bluebird@^3.1.1:
- version "3.7.2"
- resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
- integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-
-boolean@^3.0.1:
- version "3.2.0"
- resolved "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz"
- integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-browserslist@^4.24.0, "browserslist@>= 4.21.0":
- version "4.24.4"
- resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz"
- integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
- dependencies:
- caniuse-lite "^1.0.30001688"
- electron-to-chromium "^1.5.73"
- node-releases "^2.0.19"
- update-browserslist-db "^1.1.1"
-
-buffer-crc32@~0.2.3:
- version "0.2.13"
- resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz"
- integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
-
-buffer-equal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz"
- integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==
-
-cacheable-lookup@^5.0.3:
- version "5.0.4"
- resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz"
- integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==
-
-cacheable-request@^7.0.2:
- version "7.0.4"
- resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz"
- integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==
- dependencies:
- clone-response "^1.0.2"
- get-stream "^5.1.0"
- http-cache-semantics "^4.0.0"
- keyv "^4.0.0"
- lowercase-keys "^2.0.0"
- normalize-url "^6.0.1"
- responselike "^2.0.0"
-
-camelize@^1.0.0:
- version "1.0.1"
- resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz"
- integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==
-
-caniuse-lite@^1.0.30001688:
- version "1.0.30001716"
- resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001716.tgz"
- integrity sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==
-
-classcat@^5.0.3:
- version "5.0.5"
- resolved "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz"
- integrity sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==
-
-clone-response@^1.0.2:
- version "1.0.3"
- resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz"
- integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==
- dependencies:
- mimic-response "^1.0.0"
-
-combined-stream@^1.0.8:
- version "1.0.8"
- resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
- integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
- dependencies:
- delayed-stream "~1.0.0"
-
-commander@^5.0.0:
- version "5.1.0"
- resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz"
- integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
-
-compare-version@^0.1.2:
- version "0.1.2"
- resolved "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz"
- integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
- integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-
-convert-source-map@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz"
- integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
-
-cookie@^1.0.1:
- version "1.0.2"
- resolved "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz"
- integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==
-
-cross-spawn-windows-exe@^1.1.0, cross-spawn-windows-exe@^1.2.0:
- version "1.2.0"
- resolved "https://registry.npmjs.org/cross-spawn-windows-exe/-/cross-spawn-windows-exe-1.2.0.tgz"
- integrity sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw==
- dependencies:
- "@malept/cross-spawn-promise" "^1.1.0"
- is-wsl "^2.2.0"
- which "^2.0.2"
-
-cross-spawn@^7.0.1:
- version "7.0.6"
- resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz"
- integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
- dependencies:
- path-key "^3.1.0"
- shebang-command "^2.0.0"
- which "^2.0.1"
-
-css-color-keywords@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz"
- integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==
-
-css-to-react-native@3.2.0:
- version "3.2.0"
- resolved "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz"
- integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==
- dependencies:
- camelize "^1.0.0"
- css-color-keywords "^1.0.0"
- postcss-value-parser "^4.0.2"
-
-csstype@^3.0.2, csstype@3.1.3:
- version "3.1.3"
- resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
- integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
-
-"d3-color@1 - 3":
- version "3.1.0"
- resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz"
- integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==
-
-"d3-dispatch@1 - 3":
- version "3.0.1"
- resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz"
- integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==
-
-d3-drag@^3.0.0, "d3-drag@2 - 3":
- version "3.0.0"
- resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz"
- integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==
- dependencies:
- d3-dispatch "1 - 3"
- d3-selection "3"
-
-"d3-ease@1 - 3":
- version "3.0.1"
- resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz"
- integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==
-
-"d3-interpolate@1 - 3":
- version "3.0.1"
- resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz"
- integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==
- dependencies:
- d3-color "1 - 3"
-
-d3-selection@^3.0.0, "d3-selection@2 - 3", d3-selection@3:
- version "3.0.0"
- resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz"
- integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==
-
-"d3-timer@1 - 3":
- version "3.0.1"
- resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz"
- integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==
-
-"d3-transition@2 - 3":
- version "3.0.1"
- resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz"
- integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==
- dependencies:
- d3-color "1 - 3"
- d3-dispatch "1 - 3"
- d3-ease "1 - 3"
- d3-interpolate "1 - 3"
- d3-timer "1 - 3"
-
-d3-zoom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz"
- integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==
- dependencies:
- d3-dispatch "1 - 3"
- d3-drag "2 - 3"
- d3-interpolate "1 - 3"
- d3-selection "2 - 3"
- d3-transition "2 - 3"
-
-debug@^2.2.0:
- version "2.6.9"
- resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4:
- version "4.3.7"
- resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz"
- integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
- dependencies:
- ms "^2.1.3"
-
-decompress-response@^6.0.0:
- version "6.0.0"
- resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz"
- integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
- dependencies:
- mimic-response "^3.1.0"
-
-defer-to-connect@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz"
- integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
-
-define-data-property@^1.0.1:
- version "1.1.4"
- resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz"
- integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
- dependencies:
- es-define-property "^1.0.0"
- es-errors "^1.3.0"
- gopd "^1.0.1"
-
-define-properties@^1.2.1:
- version "1.2.1"
- resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz"
- integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
- dependencies:
- define-data-property "^1.0.1"
- has-property-descriptors "^1.0.0"
- object-keys "^1.1.1"
-
-delayed-stream@~1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
- integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
-
-detect-node@^2.0.4:
- version "2.1.0"
- resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz"
- integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
-
-dir-compare@^3.0.0:
- version "3.3.0"
- resolved "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz"
- integrity sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==
- dependencies:
- buffer-equal "^1.0.0"
- minimatch "^3.0.4"
-
-electron-packager@^17.1.2:
- version "17.1.2"
- resolved "https://registry.npmjs.org/electron-packager/-/electron-packager-17.1.2.tgz"
- integrity sha512-XofXdikjYI7MVBcnXeoOvRR+yFFFHOLs3J7PF5KYQweigtgLshcH4W660PsvHr4lYZ03JBpLyEcUB8DzHZ+BNw==
- dependencies:
- "@electron/asar" "^3.2.1"
- "@electron/get" "^2.0.0"
- "@electron/notarize" "^1.2.3"
- "@electron/osx-sign" "^1.0.5"
- "@electron/universal" "^1.3.2"
- cross-spawn-windows-exe "^1.2.0"
- debug "^4.0.1"
- extract-zip "^2.0.0"
- filenamify "^4.1.0"
- fs-extra "^11.1.0"
- galactus "^1.0.0"
- get-package-info "^1.0.0"
- junk "^3.1.0"
- parse-author "^2.0.0"
- plist "^3.0.0"
- rcedit "^3.0.1"
- resolve "^1.1.6"
- semver "^7.1.3"
- yargs-parser "^21.1.1"
-
-electron-to-chromium@^1.5.73:
- version "1.5.145"
- resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.145.tgz"
- integrity sha512-pZ5EcTWRq/055MvSBgoFEyKf2i4apwfoqJbK/ak2jnFq8oHjZ+vzc3AhRcz37Xn+ZJfL58R666FLJx0YOK9yTw==
-
-electron@^34.0.2:
- version "34.0.2"
- resolved "https://registry.npmjs.org/electron/-/electron-34.0.2.tgz"
- integrity sha512-u3F+DSUlg9NaGS+9qnYmSRN8VjAnc3LJDDk1ye1uISJnh4gjG76y3681qLowsPMx4obvCP2eBINnmbLo0yT5WA==
- dependencies:
- "@electron/get" "^2.0.0"
- "@types/node" "^20.9.0"
- extract-zip "^2.0.1"
-
-end-of-stream@^1.1.0:
- version "1.4.4"
- resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz"
- integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
- dependencies:
- once "^1.4.0"
-
-env-paths@^2.2.0:
- version "2.2.1"
- resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz"
- integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
-
-error-ex@^1.2.0:
- version "1.3.2"
- resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
- integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
- dependencies:
- is-arrayish "^0.2.1"
-
-es-define-property@^1.0.0:
- version "1.0.1"
- resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz"
- integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
-
-es-errors@^1.3.0:
- version "1.3.0"
- resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz"
- integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
-
-es6-error@^4.1.1:
- version "4.1.1"
- resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz"
- integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
-
-esbuild-wasm@^0.17.12:
- version "0.17.19"
- resolved "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.17.19.tgz"
- integrity sha512-X9UQEMJMZXwlGCfqcBmJ1jEa+KrLfd+gCBypO/TSzo5hZvbVwFqpxj1YCuX54ptTF75wxmrgorR4RL40AKtLVg==
-
-esbuild@^0.25.0:
- version "0.25.3"
- resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz"
- integrity sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==
- optionalDependencies:
- "@esbuild/aix-ppc64" "0.25.3"
- "@esbuild/android-arm" "0.25.3"
- "@esbuild/android-arm64" "0.25.3"
- "@esbuild/android-x64" "0.25.3"
- "@esbuild/darwin-arm64" "0.25.3"
- "@esbuild/darwin-x64" "0.25.3"
- "@esbuild/freebsd-arm64" "0.25.3"
- "@esbuild/freebsd-x64" "0.25.3"
- "@esbuild/linux-arm" "0.25.3"
- "@esbuild/linux-arm64" "0.25.3"
- "@esbuild/linux-ia32" "0.25.3"
- "@esbuild/linux-loong64" "0.25.3"
- "@esbuild/linux-mips64el" "0.25.3"
- "@esbuild/linux-ppc64" "0.25.3"
- "@esbuild/linux-riscv64" "0.25.3"
- "@esbuild/linux-s390x" "0.25.3"
- "@esbuild/linux-x64" "0.25.3"
- "@esbuild/netbsd-arm64" "0.25.3"
- "@esbuild/netbsd-x64" "0.25.3"
- "@esbuild/openbsd-arm64" "0.25.3"
- "@esbuild/openbsd-x64" "0.25.3"
- "@esbuild/sunos-x64" "0.25.3"
- "@esbuild/win32-arm64" "0.25.3"
- "@esbuild/win32-ia32" "0.25.3"
- "@esbuild/win32-x64" "0.25.3"
-
-escalade@^3.2.0:
- version "3.2.0"
- resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz"
- integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
-
-escape-string-regexp@^1.0.2:
- version "1.0.5"
- resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
- integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
-
-escape-string-regexp@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
- integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-
-extract-zip@^2.0.0, extract-zip@^2.0.1:
- version "2.0.1"
- resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz"
- integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
- dependencies:
- debug "^4.1.1"
- get-stream "^5.1.0"
- yauzl "^2.10.0"
- optionalDependencies:
- "@types/yauzl" "^2.9.1"
-
-fd-slicer@~1.1.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz"
- integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
- dependencies:
- pend "~1.2.0"
-
-fdir@^6.4.4:
- version "6.4.4"
- resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz"
- integrity sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==
-
-filename-reserved-regex@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz"
- integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==
-
-filenamify@^4.1.0:
- version "4.3.0"
- resolved "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz"
- integrity sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==
- dependencies:
- filename-reserved-regex "^2.0.0"
- strip-outer "^1.0.1"
- trim-repeated "^1.0.0"
-
-find-up@^2.0.0:
- version "2.1.0"
- resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz"
- integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==
- dependencies:
- locate-path "^2.0.0"
-
-flora-colossus@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz"
- integrity sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==
- dependencies:
- debug "^4.3.4"
- fs-extra "^10.1.0"
-
-follow-redirects@^1.15.6:
- version "1.15.9"
- resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz"
- integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
-
-form-data@^4.0.0:
- version "4.0.1"
- resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz"
- integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.8"
- mime-types "^2.1.12"
-
-fs-extra@^10.0.0:
- version "10.1.0"
- resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz"
- integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
- dependencies:
- graceful-fs "^4.2.0"
- jsonfile "^6.0.1"
- universalify "^2.0.0"
-
-fs-extra@^10.1.0:
- version "10.1.0"
- resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz"
- integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
- dependencies:
- graceful-fs "^4.2.0"
- jsonfile "^6.0.1"
- universalify "^2.0.0"
-
-fs-extra@^11.1.0:
- version "11.3.0"
- resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz"
- integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==
- dependencies:
- graceful-fs "^4.2.0"
- jsonfile "^6.0.1"
- universalify "^2.0.0"
-
-fs-extra@^8.1.0:
- version "8.1.0"
- resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz"
- integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
- dependencies:
- graceful-fs "^4.2.0"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
-fs-extra@^9.0.1:
- version "9.1.0"
- resolved "https://registry.npmjs.org/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.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
- integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-
-function-bind@^1.1.2:
- version "1.1.2"
- resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
- integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-
-galactus@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz"
- integrity sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==
- dependencies:
- debug "^4.3.4"
- flora-colossus "^2.0.0"
- fs-extra "^10.1.0"
-
-gensync@^1.0.0-beta.2:
- version "1.0.0-beta.2"
- resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
- integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-
-get-package-info@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz"
- integrity sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==
- dependencies:
- bluebird "^3.1.1"
- debug "^2.2.0"
- lodash.get "^4.0.0"
- read-pkg-up "^2.0.0"
-
-get-stream@^5.1.0:
- version "5.2.0"
- resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz"
- integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
- dependencies:
- pump "^3.0.0"
-
-glob@^7.1.6:
- version "7.2.3"
- resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
- integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.1.1"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-global-agent@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz"
- integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==
- dependencies:
- boolean "^3.0.1"
- es6-error "^4.1.1"
- matcher "^3.0.0"
- roarr "^2.15.3"
- semver "^7.3.2"
- serialize-error "^7.0.1"
-
-globals@^11.1.0:
- version "11.12.0"
- resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
-globalthis@^1.0.1:
- version "1.0.4"
- resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz"
- integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
- dependencies:
- define-properties "^1.2.1"
- gopd "^1.0.1"
-
-gopd@^1.0.1:
- version "1.2.0"
- resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz"
- integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
-
-got@^11.8.5:
- version "11.8.6"
- resolved "https://registry.npmjs.org/got/-/got-11.8.6.tgz"
- integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
- dependencies:
- "@sindresorhus/is" "^4.0.0"
- "@szmarczak/http-timer" "^4.0.5"
- "@types/cacheable-request" "^6.0.1"
- "@types/responselike" "^1.0.0"
- cacheable-lookup "^5.0.3"
- cacheable-request "^7.0.2"
- decompress-response "^6.0.0"
- http2-wrapper "^1.0.0-beta.5.2"
- lowercase-keys "^2.0.0"
- p-cancelable "^2.0.0"
- responselike "^2.0.0"
-
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
- version "4.2.11"
- resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
- integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
-
-has-property-descriptors@^1.0.0:
- version "1.0.2"
- resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz"
- integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
- dependencies:
- es-define-property "^1.0.0"
-
-hasown@^2.0.2:
- version "2.0.2"
- resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz"
- integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
- dependencies:
- function-bind "^1.1.2"
-
-hosted-git-info@^2.1.4:
- version "2.8.9"
- resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz"
- integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
-
-http-cache-semantics@^4.0.0:
- version "4.1.1"
- resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz"
- integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
-
-http2-wrapper@^1.0.0-beta.5.2:
- version "1.0.3"
- resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz"
- integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==
- dependencies:
- quick-lru "^5.1.1"
- resolve-alpn "^1.0.0"
-
-immer@^10.0.3, immer@>=9.0.6:
- version "10.1.1"
- resolved "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz"
- integrity sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
- integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2:
- version "2.0.4"
- resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
- integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
-
-is-core-module@^2.16.0:
- version "2.16.1"
- resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz"
- integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
- dependencies:
- hasown "^2.0.2"
-
-is-docker@^2.0.0:
- version "2.2.1"
- resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz"
- integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
-
-is-wsl@^2.2.0:
- version "2.2.0"
- resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz"
- integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
- dependencies:
- is-docker "^2.0.0"
-
-isbinaryfile@^4.0.8:
- version "4.0.10"
- resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz"
- integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
- integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-
-"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
- integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-
-jsesc@^3.0.2:
- version "3.0.2"
- resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz"
- integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
-
-json-buffer@3.0.1:
- version "3.0.1"
- resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
- integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-
-json-stringify-safe@^5.0.1:
- version "5.0.1"
- resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
- integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
-
-json5@^2.2.3:
- version "2.2.3"
- resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
- integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
-
-jsonfile@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz"
- integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-jsonfile@^6.0.1:
- version "6.1.0"
- resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
- integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
- dependencies:
- universalify "^2.0.0"
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-junk@^3.1.0:
- version "3.1.0"
- resolved "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz"
- integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==
-
-keyv@^4.0.0:
- version "4.5.4"
- resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
- integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
- dependencies:
- json-buffer "3.0.1"
-
-load-json-file@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz"
- integrity sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- strip-bom "^3.0.0"
-
-locate-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz"
- integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==
- dependencies:
- p-locate "^2.0.0"
- path-exists "^3.0.0"
-
-lodash.get@^4.0.0:
- version "4.4.2"
- resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz"
- integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==
-
-loose-envify@^1.1.0:
- version "1.4.0"
- resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
- integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
- dependencies:
- js-tokens "^3.0.0 || ^4.0.0"
-
-lowercase-keys@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz"
- integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
-
-lru-cache@^5.1.1:
- version "5.1.1"
- resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
- integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
- dependencies:
- yallist "^3.0.2"
-
-matcher@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz"
- integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==
- dependencies:
- escape-string-regexp "^4.0.0"
-
-mime-db@1.52.0:
- version "1.52.0"
- resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
- integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-
-mime-types@^2.1.12:
- version "2.1.35"
- resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
- integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
- dependencies:
- mime-db "1.52.0"
-
-mimic-response@^1.0.0:
- version "1.0.1"
- resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz"
- integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
-
-mimic-response@^3.1.0:
- version "3.1.0"
- resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz"
- integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
-
-minimatch@^3.0.4, minimatch@^3.1.1:
- version "3.1.2"
- resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@^1.2.6:
- version "1.2.8"
- resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
- integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-
-ms@^2.1.3:
- version "2.1.3"
- resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
- integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
- integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
-
-nanoid@^3.3.7, nanoid@^3.3.8:
- version "3.3.8"
- resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz"
- integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
-
-node-releases@^2.0.19:
- version "2.0.19"
- resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz"
- integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
-
-normalize-package-data@^2.3.2:
- version "2.5.0"
- resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
- integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
- dependencies:
- hosted-git-info "^2.1.4"
- resolve "^1.10.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
-
-normalize-url@^6.0.1:
- version "6.1.0"
- resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz"
- integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
-
-object-keys@^1.1.1:
- version "1.1.1"
- resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
- integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
- dependencies:
- wrappy "1"
-
-p-cancelable@^2.0.0:
- version "2.1.1"
- resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz"
- integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==
-
-p-limit@^1.1.0:
- version "1.3.0"
- resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz"
- integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
- dependencies:
- p-try "^1.0.0"
-
-p-locate@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz"
- integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==
- dependencies:
- p-limit "^1.1.0"
-
-p-try@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz"
- integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==
-
-parse-author@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz"
- integrity sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==
- dependencies:
- author-regex "^1.0.0"
-
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz"
- integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==
- dependencies:
- error-ex "^1.2.0"
-
-path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz"
- integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
- integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
-
-path-key@^3.1.0:
- version "3.1.1"
- resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
- integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-parse@^1.0.7:
- version "1.0.7"
- resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
- integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-
-path-type@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz"
- integrity sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==
- dependencies:
- pify "^2.0.0"
-
-pend@~1.2.0:
- version "1.2.0"
- resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"
- integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
-
-picocolors@^1.0.0, picocolors@^1.1.1:
- version "1.1.1"
- resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
- integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
-
-"picomatch@^3 || ^4", picomatch@^4.0.2:
- version "4.0.2"
- resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz"
- integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
-
-pify@^2.0.0:
- version "2.3.0"
- resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"
- integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
-
-plist@^3.0.0, plist@^3.0.4, plist@^3.0.5:
- version "3.1.0"
- resolved "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz"
- integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==
- dependencies:
- "@xmldom/xmldom" "^0.8.8"
- base64-js "^1.5.1"
- xmlbuilder "^15.1.1"
-
-postcss-value-parser@^4.0.2:
- version "4.2.0"
- resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
- integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-
-postcss@^8.5.3:
- version "8.5.3"
- resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz"
- integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==
- dependencies:
- nanoid "^3.3.8"
- picocolors "^1.1.1"
- source-map-js "^1.2.1"
-
-postcss@8.4.38:
- version "8.4.38"
- resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz"
- integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
- dependencies:
- nanoid "^3.3.7"
- picocolors "^1.0.0"
- source-map-js "^1.2.0"
-
-progress@^2.0.3:
- version "2.0.3"
- resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz"
- integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-
-proxy-from-env@^1.1.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
- integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
-
-pump@^3.0.0:
- version "3.0.2"
- resolved "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz"
- integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-quick-lru@^5.1.1:
- version "5.1.1"
- resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz"
- integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
-
-rcedit@^3.0.1:
- version "3.1.0"
- resolved "https://registry.npmjs.org/rcedit/-/rcedit-3.1.0.tgz"
- integrity sha512-WRlRdY1qZbu1L11DklT07KuHfRk42l0NFFJdaExELEu4fEQ982bP5Z6OWGPj/wLLIuKRQDCxZJGAwoFsxhZhNA==
- dependencies:
- cross-spawn-windows-exe "^1.1.0"
-
-react-dom@^18.3.1, "react-dom@>= 16.8.0", react-dom@>=17, react-dom@>=18, "react-dom@16 || 17 || 18":
- version "18.3.1"
- resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz"
- integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
- dependencies:
- loose-envify "^1.1.0"
- scheduler "^0.23.2"
-
-react-flow-renderer@^10.3.17:
- version "10.3.17"
- resolved "https://registry.npmjs.org/react-flow-renderer/-/react-flow-renderer-10.3.17.tgz"
- integrity sha512-bywiqVErlh5kCDqw3x0an5Ur3mT9j9CwJsDwmhmz4i1IgYM1a0SPqqEhClvjX+s5pU4nHjmVaGXWK96pwsiGcQ==
- dependencies:
- "@babel/runtime" "^7.18.9"
- "@types/d3" "^7.4.0"
- "@types/resize-observer-browser" "^0.1.7"
- classcat "^5.0.3"
- d3-drag "^3.0.0"
- d3-selection "^3.0.0"
- d3-zoom "^3.0.0"
- zustand "^3.7.2"
-
-"react-redux@^7.2.1 || ^8.1.3 || ^9.0.0", react-redux@^9.2.0:
- version "9.2.0"
- resolved "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz"
- integrity sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==
- dependencies:
- "@types/use-sync-external-store" "^0.0.6"
- use-sync-external-store "^1.4.0"
-
-react-refresh@^0.17.0:
- version "0.17.0"
- resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz"
- integrity sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==
-
-react-router-dom@^7.0.2:
- version "7.5.2"
- resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.5.2.tgz"
- integrity sha512-yk1XW8Fj7gK7flpYBXF3yzd2NbX6P7Kxjvs2b5nu1M04rb5pg/Zc4fGdBNTeT4eDYL2bvzWNyKaIMJX/RKHTTg==
- dependencies:
- react-router "7.5.2"
-
-react-router@7.5.2:
- version "7.5.2"
- resolved "https://registry.npmjs.org/react-router/-/react-router-7.5.2.tgz"
- integrity sha512-9Rw8r199klMnlGZ8VAsV/I8WrIF6IyJ90JQUdboupx1cdkgYqwnrYjH+I/nY/7cA1X5zia4mDJqH36npP7sxGQ==
- dependencies:
- cookie "^1.0.1"
- set-cookie-parser "^2.6.0"
- turbo-stream "2.4.0"
-
-"react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.9.0 || ^17.0.0 || ^18 || ^19", "react@^18.0 || ^19", react@^18.3.1, "react@>= 16.8.0", react@>=16, react@>=16.8, react@>=17, react@>=18, react@>=18.0.0, "react@16 || 17 || 18":
- version "18.3.1"
- resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz"
- integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
- dependencies:
- loose-envify "^1.1.0"
-
-read-pkg-up@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz"
- integrity sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==
- dependencies:
- find-up "^2.0.0"
- read-pkg "^2.0.0"
-
-read-pkg@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz"
- integrity sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==
- dependencies:
- load-json-file "^2.0.0"
- normalize-package-data "^2.3.2"
- path-type "^2.0.0"
-
-redux-thunk@^3.1.0:
- version "3.1.0"
- resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz"
- integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==
-
-redux@^5.0.0, redux@^5.0.1:
- version "5.0.1"
- resolved "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz"
- integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==
-
-regenerator-runtime@^0.14.0:
- version "0.14.1"
- resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz"
- integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
-
-reselect@^5.1.0:
- version "5.1.1"
- resolved "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz"
- integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==
-
-resolve-alpn@^1.0.0:
- version "1.2.1"
- resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz"
- integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
-
-resolve@^1.1.6, resolve@^1.10.0:
- version "1.22.10"
- resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz"
- integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
- dependencies:
- is-core-module "^2.16.0"
- path-parse "^1.0.7"
- supports-preserve-symlinks-flag "^1.0.0"
-
-responselike@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz"
- integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==
- dependencies:
- lowercase-keys "^2.0.0"
-
-roarr@^2.15.3:
- version "2.15.4"
- resolved "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz"
- integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==
- dependencies:
- boolean "^3.0.1"
- detect-node "^2.0.4"
- globalthis "^1.0.1"
- json-stringify-safe "^5.0.1"
- semver-compare "^1.0.0"
- sprintf-js "^1.1.2"
-
-rollup@^4.34.9:
- version "4.40.1"
- resolved "https://registry.npmjs.org/rollup/-/rollup-4.40.1.tgz"
- integrity sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==
- dependencies:
- "@types/estree" "1.0.7"
- optionalDependencies:
- "@rollup/rollup-android-arm-eabi" "4.40.1"
- "@rollup/rollup-android-arm64" "4.40.1"
- "@rollup/rollup-darwin-arm64" "4.40.1"
- "@rollup/rollup-darwin-x64" "4.40.1"
- "@rollup/rollup-freebsd-arm64" "4.40.1"
- "@rollup/rollup-freebsd-x64" "4.40.1"
- "@rollup/rollup-linux-arm-gnueabihf" "4.40.1"
- "@rollup/rollup-linux-arm-musleabihf" "4.40.1"
- "@rollup/rollup-linux-arm64-gnu" "4.40.1"
- "@rollup/rollup-linux-arm64-musl" "4.40.1"
- "@rollup/rollup-linux-loongarch64-gnu" "4.40.1"
- "@rollup/rollup-linux-powerpc64le-gnu" "4.40.1"
- "@rollup/rollup-linux-riscv64-gnu" "4.40.1"
- "@rollup/rollup-linux-riscv64-musl" "4.40.1"
- "@rollup/rollup-linux-s390x-gnu" "4.40.1"
- "@rollup/rollup-linux-x64-gnu" "4.40.1"
- "@rollup/rollup-linux-x64-musl" "4.40.1"
- "@rollup/rollup-win32-arm64-msvc" "4.40.1"
- "@rollup/rollup-win32-ia32-msvc" "4.40.1"
- "@rollup/rollup-win32-x64-msvc" "4.40.1"
- fsevents "~2.3.2"
-
-scheduler@^0.23.2:
- version "0.23.2"
- resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz"
- integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==
- dependencies:
- loose-envify "^1.1.0"
-
-semver-compare@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz"
- integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==
-
-semver@^6.2.0, semver@^6.3.1:
- version "6.3.1"
- resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
- integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-
-semver@^7.1.3:
- version "7.6.3"
- resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz"
- integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
-
-semver@^7.3.2:
- version "7.6.3"
- resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz"
- integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
-
-"semver@2 || 3 || 4 || 5":
- version "5.7.2"
- resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
- integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
-
-serialize-error@^7.0.1:
- version "7.0.1"
- resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz"
- integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==
- dependencies:
- type-fest "^0.13.1"
-
-set-cookie-parser@^2.6.0:
- version "2.7.1"
- resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz"
- integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==
-
-shallowequal@1.1.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz"
- integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
-
-shebang-command@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
- integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
- dependencies:
- shebang-regex "^3.0.0"
-
-shebang-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
- integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-source-map-js@^1.2.0, source-map-js@^1.2.1:
- version "1.2.1"
- resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz"
- integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
-
-spdx-correct@^3.0.0:
- version "3.2.0"
- resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz"
- integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==
- dependencies:
- spdx-expression-parse "^3.0.0"
- spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
- version "2.5.0"
- resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz"
- integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==
-
-spdx-expression-parse@^3.0.0:
- version "3.0.1"
- resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz"
- integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
- dependencies:
- spdx-exceptions "^2.1.0"
- spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
- version "3.0.21"
- resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz"
- integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==
-
-sprintf-js@^1.1.2:
- version "1.1.3"
- resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz"
- integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
-
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz"
- integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
-
-strip-outer@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz"
- integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==
- dependencies:
- escape-string-regexp "^1.0.2"
-
-styled-components@^6.1.13:
- version "6.1.13"
- resolved "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz"
- integrity sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==
- dependencies:
- "@emotion/is-prop-valid" "1.2.2"
- "@emotion/unitless" "0.8.1"
- "@types/stylis" "4.2.5"
- css-to-react-native "3.2.0"
- csstype "3.1.3"
- postcss "8.4.38"
- shallowequal "1.1.0"
- stylis "4.3.2"
- tslib "2.6.2"
-
-stylis@4.3.2:
- version "4.3.2"
- resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz"
- integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==
-
-sumchecker@^3.0.1:
- version "3.0.1"
- resolved "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz"
- integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==
- dependencies:
- debug "^4.1.0"
-
-supports-preserve-symlinks-flag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
- integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-
-tinyglobby@^0.2.13:
- version "0.2.13"
- resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz"
- integrity sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==
- dependencies:
- fdir "^6.4.4"
- picomatch "^4.0.2"
-
-trim-repeated@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz"
- integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==
- dependencies:
- escape-string-regexp "^1.0.2"
-
-tslib@2.6.2:
- version "2.6.2"
- resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
- integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
-
-turbo-stream@2.4.0:
- version "2.4.0"
- resolved "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz"
- integrity sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==
-
-type-fest@^0.13.1:
- version "0.13.1"
- resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz"
- integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
-
-typescript@^4.9.5:
- version "4.9.5"
- resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz"
- integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
-
-undici-types@~6.19.2:
- version "6.19.8"
- resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz"
- integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
-
-universalify@^0.1.0:
- version "0.1.2"
- resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz"
- integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
-universalify@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
- integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
-
-update-browserslist-db@^1.1.1:
- version "1.1.3"
- resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz"
- integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
- dependencies:
- escalade "^3.2.0"
- picocolors "^1.1.1"
-
-use-sync-external-store@^1.2.2, use-sync-external-store@>=1.2.0:
- version "1.2.2"
- resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz"
- integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==
-
-use-sync-external-store@^1.4.0:
- version "1.4.0"
- resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz"
- integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==
-
-validate-npm-package-license@^3.0.1:
- version "3.0.4"
- resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"
- integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
- dependencies:
- spdx-correct "^3.0.0"
- spdx-expression-parse "^3.0.0"
-
-"vite@^4.2.0 || ^5.0.0 || ^6.0.0", vite@^6.0.0, vite@^6.3.4:
- version "6.3.4"
- resolved "https://registry.npmjs.org/vite/-/vite-6.3.4.tgz"
- integrity sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==
- dependencies:
- esbuild "^0.25.0"
- fdir "^6.4.4"
- picomatch "^4.0.2"
- postcss "^8.5.3"
- rollup "^4.34.9"
- tinyglobby "^0.2.13"
- optionalDependencies:
- fsevents "~2.3.3"
-
-which@^2.0.1, which@^2.0.2:
- version "2.0.2"
- resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
- integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
- dependencies:
- isexe "^2.0.0"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
- integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-
-xmlbuilder@^15.1.1:
- version "15.1.1"
- resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz"
- integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==
-
-yallist@^3.0.2:
- version "3.1.1"
- resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
- integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
-
-yargs-parser@^21.1.1:
- version "21.1.1"
- resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
- integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
-
-yauzl@^2.10.0:
- version "2.10.0"
- resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz"
- integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
- dependencies:
- buffer-crc32 "~0.2.3"
- fd-slicer "~1.1.0"
-
-zustand@^3.7.2:
- version "3.7.2"
- resolved "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz"
- integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==
-
-zustand@^4.4.0:
- version "4.5.6"
- resolved "https://registry.npmjs.org/zustand/-/zustand-4.5.6.tgz"
- integrity sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==
- dependencies:
- use-sync-external-store "^1.2.2"
-
-zustand@^5.0.3:
- version "5.0.3"
- resolved "https://registry.npmjs.org/zustand/-/zustand-5.0.3.tgz"
- integrity sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==
diff --git a/file b/file
deleted file mode 100644
index e69de29..0000000